Deployment
ProcessCenter does not depend on a specific deployment platform. It runs as a single Node process that serves both the API and the built SPA, so any host that can run a Node process or a container works: managed cloud, Kubernetes, a plain VM, or on-premises hardware.
Build and run
text
pnpm install --frozen-lockfile
pnpm run build
pnpm startpnpm run buildwrites the SPA todist/publicand the server bundle todist/index.js.pnpm startrunsNODE_ENV=production node dist/index.jsand listens onPORT(default3000).Dockerfile(multi-stage) anddocker-compose.onprem.ymlcover container and on-premises installs.
Environment variables
Inject the same variables on every host and keep secrets in the host secret store only.
DATABASE_URL: required.DATABASE_DIALECT:postgresql(recommended) ormysql.DEPLOYMENT_PROFILE:CLOUD(default) orON_PREM. Set it explicitly; the application never auto-detects a hosting provider.PORT: listen port; defaults to3000.APP_ORIGIN: canonical public origin used to build auth callbacks.CORS_ORIGINS: comma-separated allowlist, needed only when the API and the SPA are served from different sites.PORTAL_JWT_SECRET: session cookie signing secret.PORTAL_CONSOLE_ORIGIN,PORTAL_CONSOLE_API_KEY,PORTAL_CONSOLE_PORTAL_ID: set only for PortalConsole central management. Without them the portal starts in standalone mode with the sync scheduler disabled.PORTAL_CONSOLE_SYNC_INTERVAL_MS: synchronization interval; defaults to one hour.NPM_TOKEN: only when installing the private package registry dependency.
Runtime topology
- Terminate TLS and route
/apiin the hosting reverse proxy; the application binds its ownPORTonly. - Session cookies are
Secure; keep the public origin on HTTPS. - Register one PortalConsole callback:
<public origin>/auth/callback. - Run database migrations as a separate release step (
pnpm db:postgres:migrate:nodefor PostgreSQL,drizzle-kit migratefor MySQL) before the new revision receives traffic.