Skip to main content
If you prefer to run the components without Docker, the complete manual setup steps are in CONTRIBUTING.md. The same environment variables documented in Configuration apply.

Running each component

The client requires a production build (pnpm build then pnpm start) to serve static files. Use pnpm dev only during development, as it enables Next.js hot-reloading and is not suitable for production.

Environment variables

Copy and configure the environment files before starting:
Set at minimum:
  • In server/.env: CLIENT_URL=http://localhost:3000
  • In client/.env.local: NEXT_PUBLIC_SOCKET_URL=http://localhost:3001
For anything reachable from the internet, also set NODE_ENV=production in server/.env. Docker sets it for you; a direct Node run does not, and Express only suppresses stack traces in its built-in error responses when the value is exactly production.

Updating an existing deployment

The Docker instructions in Operations assume there is no repository to keep in sync. Running directly with Node means there is, so pull, reinstall, then restart:
Then restart the server with whatever supervises it (pm2 restart <name>, systemctl restart <unit>, or your own runner).
Reinstall before you restart, and do not skip it. A dependency update that only moves a lockfile changes no source file, so a restart on its own re-executes the same node_modules and the update silently does not take effect. The process comes back healthy and the old version is still running.
Confirm the restart landed by checking that uptime reset:
To confirm a specific dependency actually moved, read the installed version rather than trusting the restart: