Deployment Guide
Docker (no Rust required)
The supported way to run the backend in production-like setups is the container image — no Rust toolchain on the host.
# Build the server image (multi-stage; Rust runs only in the build container)
docker build -t atomo-server .
# Or run the whole stack (Postgres + server) locally:
docker compose up --build # http://localhost:3000The image takes its configuration from environment variables — at minimum DATABASE_URL, ATOMO_SCHEMA_PATH, and JWT_SECRET (see Configuration for the full list). Provide your service's schema.ts by mounting it at ATOMO_SCHEMA_PATH (the compose file mounts the CRM demo schema by default). On boot the server parses the schema, runs migrations, seeds the admin, and starts listening on PORT.
The image bundles a generic Admin UI served at /admin (e.g. http://localhost:3000/admin) — it introspects /meta/schema and gives data browse/edit for any model, with no coupling to any service. It's served via ATOMO_ADMIN_DIR (set by default in the image); unset it to disable (e.g. for a slim game/relay backend that needs no admin).
Publishing: once pushed to a registry (e.g.
ghcr.io/<org>/atomo-server), replacebuild: .indocker-compose.ymlwithimage: …to pull instead of build.
From source
pnpm build:core
cd services/<name>
pnpm buildSee DEPLOYMENT_GUIDE.md at the repo root for full steps.