We get asked, often, what stack we use. The honest answer is: Next.js, Postgres, Stripe, and Resend. We add things — Cloudflare, Caddy, Resend — but the load-bearing pieces don't change.
Why so boring
We are a small studio. We run six SaaS products. We are on-call for them. We do not have time to be excited about a database query engine. We have time to ship features and answer pages.
Boring tools have a shape we can predict. We know what the failure modes look like. We know how to roll forward. We know how to roll back. We know which problems are ours and which are the vendor's.
What we won't use
We have a short list of tools we won't adopt unless a client insists:
- Anything that prices on per-seat usage we can't predict from a sales call.
- Anything that requires a six-month migration to leave.
- Anything where the documentation is ‘contact us’.
- Anything we couldn't reproduce in a Docker container on our laptop.
What we will trade
We'll trade performance for predictability nine times out of ten. We'll trade newness for stability twelve times out of ten. We will choose the option with the worst marketing site and the best changelog.
We are not in the business of having the most interesting stack. We are in the business of having the stack that is still running on a Tuesday morning when something needs to ship.
Filed by The Studio — February 2, 2026