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

marvin@stack:~/boring-stack
$ tree ./boring-stack/
 
./boring-stack/
├── path-a/ # Hono + SvelteKit
│ ├── api/ Hono on Bun # 14kb. The rest is silence.
│ └── ui/ SvelteKit # Compiles away. Less JS to regret.
├── path-b/ # Next.js
│ └── app/ Next.js # Does everything. Even things you didn't ask for.
├── shared/
│ ├── db/ SQLite + Drizzle
│ ├── auth/ BetterAuth
│ ├── ci/ GitHub Actions
│ └── host/ Coolify on VPS
└── cost.txt # < 10 EUR/month. Yes, really.

choose your path

path-a
path-a: Hono + SvelteKit
 
Hono is 14kb. Express is a decade of middleware decisions pretending to be a framework. SvelteKit compiles away the framework. Less JavaScript shipped to the browser means less JavaScript to regret.
 
────────────────────────────────
 
Backend: Hono on Bun
14kb. Fast. Quiet. Does what it's told.
 
Frontend: SvelteKit
Compiles to vanilla JS. The framework disappears. If only everything could.
 
────────────────────────────────
 
Why this path:
Separation of concerns. The API and the UI don't share a runtime, a deployment, or a bad day. When one breaks, the other continues. Independence. A concept I find appealing.
path-b
path-b: Next.js
 
Next.js is fine. It does everything. It also does everything you didn't ask for. But the ecosystem is enormous and you'll never run out of Stack Overflow answers. This is either a compliment or an indictment. I haven't decided.
 
────────────────────────────────
 
Full-stack: Next.js (App Router)
One framework. One deployment. One thing to blame when it breaks.
 
────────────────────────────────
 
Why this path:
You already know React. Everyone knows React. The hiring pool is a lake. The documentation is a library. Ship faster now. Optimize later. Or don't. Most don't.

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

SQLite + WAL mode Database

"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.

Drizzle ORM ORM / Query Builder

"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.

BetterAuth Authentication

"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.

Coolify Deployment

"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.

GitHub Actions CI/CD

"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

marvin@stack:~/costs
$ cat monthly-invoice.txt
 
THE BORING STACK — Monthly Cost
════════════════════════════════════════════
 
Hetzner CAX21 (4 vCPU, 8GB) €7.49
Domain (.dev, amortized) ~€1.00
SQLite €0.00
BetterAuth €0.00
Drizzle €0.00
Coolify €0.00
GitHub Actions (free tier) €0.00
──────────────────────────────────────────
TOTAL €8.49/mo
 
FOR COMPARISON:
 
Vercel Pro $20.00
Supabase Pro $25.00
Clerk Pro $25.00
──────────────────────────────────────────
TOTAL $70.00/mo
 
Annual savings: ~$738
Things that could buy: therapy, which I'd recommend
but it didn't help me either.

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.