The Box — Payload CMS, API and Postgres on Railway
The production setup this site runs on: Payload CMS, a Hono + Better Auth API, Postgres and Valkey in one Compose file, deployable to Railway for a predictable monthly floor.
#services#content-creationPRO TIER · PERPETUAL
What you get, and what you do not
- compose.yml with cms, api, db and cache
- Health check on every service
- Railway provisioning checklist
- Migration runbook: by hand, before the deploy
- Hosting fees
- Your content or data migration
- Kubernetes manifests
Everything in it, in the listing's own words
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 boxstarts 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.
The columns, fixes and workshops continue in the community: SEO, AI, and making money with code.
Join on WhopLuke Sidney writes and builds everything here, alone, in the open. lukesidney.me