Vercel, in production
The app is live on Vercel, with the database on Turso, as a public demo since 29 Oct 2026. Cost is capped in code: up to 100 messages a day across all visitors, per-person limits and a total ceiling, all reserved in the database before the model is called. The link-based access gate stays in the code: without the PUBLIC_DEMO switch, Vercel requires the link again.
Each release comes from a git archive of the latest commit, so nothing outside git is uploaded.
git · main→deploy-prod.ps1→Vercel + Tursolive
Docker, CircleCI and Komodo
The Docker image (Node 24, non-root, database on a volume) is 486 MB and passed all 25 smoke-test checks: it migrates, seeds the sample data, logs in for real, checks permissions and restarts without losing data.
CircleCI runs types, lint, tests, E2E and the same smoke test, then publishes the image to Docker Hub. Komodo checks the digest of latest every 10 minutes and redeploys. That path has run since 29 Oct 2026: on every push to main with green CI, Komodo pulls the new image within 10 to 20 minutes. CI never publishes to Vercel.
git · main→CircleCI→Docker Hub→Komodorunning
On its first run, on 28 Oct 2026, CircleCI caught an error my machine was hiding: the LayoutProps type that Next 16 generates in .next/ does not exist in a clean clone. The fix was to run next typegen before tsc. The image is on Docker Hub, and Komodo runs it only on my machine, at 127.0.0.1:3300.