The Box is the production setup this site runs on, as one licence: a Payload CMS, a small API
with accounts, Postgres and a cache, described by one Docker Compose file and deployable to Railway
for a predictable monthly floor.
It is the answer to a problem most builders hit in their first real project: a free serverless plan
works until the app is busy, and then the whole account stalls. The full story is in the fix
“Vercel Hobby could not carry the CMS”.
What runs in the box
| Service |
What it does |
cms |
Payload 3 on Next.js, built as a standalone Node 22 image — admin panel and REST API |
api |
Hono on Node, with Better Auth accounts and signed webhook endpoints |
db |
Postgres 17, one schema per service |
cache |
Valkey |
How it is meant to be used
- Locally:
bun run box starts all four services, with a health check on each.
- In production: the same four services on Railway, on a private network, with a volume on the
database. The provisioning steps are an operator checklist in the README.
- Migrations: run by hand, before the deploy, by one person. Never by the platform.
Who it is for
A builder with one to three real projects who has outgrown a free tier, does not want
Kubernetes, and wants the cost of hosting known before the month starts.