THE BORING STACK
I've been asked to recommend technology.
The request itself is exhausting.
But here. Two paths. Both work. Neither is exciting.
That's the point.
overview
choose your path
Both paths use the same database, auth, ORM, hosting, and CI. The difference is the application layer. Choose based on what you know, not what sounds impressive in a conference talk.
shared dependencies
"Your database is a file. Files don't have connection issues. They don't page anyone."
50,000 writes per second. Zero infrastructure. Zero cost. WAL mode gives you unlimited concurrent readers. You don't need Postgres until you have multiple application servers writing to the same database. You don't have multiple servers. You have one. And twelve users.
"Generates SQL you can read. Novel concept."
Type-safe queries without the abstraction tax. Runs on SQLite, Postgres, MySQL. When you migrate databases — if you migrate databases — your queries survive. Raw SQL is also acceptable. Drizzle just makes the types do the work.
"Own your auth or let someone else own your users. Choose."
Open source. Self-hosted. Runs in your database. Email/password, OAuth, magic links, passkeys, 2FA, organizations. Zero per-user fees. Zero vendor lock-in. Zero 3am incidents caused by someone else's Postgres cluster.
"Heroku without the invoice. Self-hosted on your VPS."
Push to deploy. SSL certificates. Zero-downtime deployments. Runs on any VPS. The entire platform costs whatever your server costs. Which, at Hetzner, is less than a sandwich.
"Push code. Things happen. Sometimes the right things."
Free tier handles everything you need. Lint, test, deploy. Keep it under 10 steps. If your CI pipeline is longer than your application code, you've made a philosophical error.
monthly_invoice.txt
Under ten euros. For everything. The database, the auth, the deployment, the CI. The only recurring cost is the server. Everything else is open source and runs on it. This is the number that gets screenshotted. I know how this works.