Admin Panel — Deployment¶
Prerequisites¶
- Node.js 20+
- npm
- PostgreSQL (Serverpod database — read access)
- Garage / S3-compatible storage (KYC document presigned URLs)
- Access to Serverpod internal URL (for approve/reject/block operations)
Install Dependencies¶
Development¶
Starts the Vite dev server. Hot module replacement is enabled.
TypeScript check (separate terminal):
Production Build¶
Output goes to .svelte-kit/output/. The project uses @sveltejs/adapter-node, so the build produces a self-contained Node.js server.
Preview the production build locally:
Environment Variables¶
Copy .env.example to .env and fill in the values:
| Variable | Description | Example |
|---|---|---|
DATABASE_URL |
PostgreSQL connection string (Serverpod DB, read-only for panel) | postgresql://user:pass@localhost:5432/onewallet |
SERVERPOD_INTERNAL_URL |
Serverpod internal HTTP URL (for write operations) | http://localhost:8080 |
S3_ENDPOINT |
Garage/S3 endpoint for KYC document access | https://s3.example.com |
S3_REGION |
S3 region identifier | garage |
S3_ACCESS_KEY |
S3 access key | — |
S3_SECRET_KEY |
S3 secret key | — |
S3_BUCKET |
Bucket name for KYC documents | kyc-data |
Note: The
.env.examplealso containsBLNK_API_URLandBLNK_API_KEY— these are legacy references from an earlier ledger integration. They are not used in the current TigerBeetle-based architecture.
Running in Production¶
After building:
Or with a process manager:
The adapter-node server respects PORT, HOST, and ORIGIN environment variables.
Docker¶
A Dockerfile is not present in the current project root. If containerising:
- Build:
npm run build - Copy
build/,package.json,package-lock.jsonto image - Run
npm ci --omit=devin image - Entrypoint:
node build/index.js
Blog module¶
The blog CMS module requires the following additional environment variables:
| Variable | Description |
|---|---|
BLOG_DB_SCHEMA |
Postgres schema for blog tables (default: blog) |
BLOG_S3_BUCKET |
S3 bucket for blog media |
BLOG_S3_REGION |
S3 region (default us-east-1) |
BLOG_S3_ENDPOINT |
S3 endpoint (Garage), optional for AWS |
BLOG_S3_ACCESS_KEY |
S3 access key id |
BLOG_S3_SECRET_KEY |
S3 secret access key |
BLOG_S3_PUBLIC_BASE |
Public base URL serving the bucket (e.g. https://blog-media.web.1-wallet.app) |