People keep asking what database we use. The answer is Redis. The follow-up question is always the same: "Wait, for everything?" Yes. For everything.
The Dekimu stack is Next.js on the App Router, Upstash Redis for data, Vercel Blob for files, Resend for email, and Vercel for deployment. Five services. That's the entire production surface.
Because we haven't needed it. InvoiceUp stores a single JSON array per user. accounts.dekimu.com stores a dozen keys per user. There's no analytics layer, no search, no reporting. A relational database would buy us joins we don't use and migrations we don't want.
If a tool ever genuinely needs SQL, we'll add Postgres next to Redis and move that one tool. The shared user identity stays where it is. Boring infrastructure is easier to replace — because nothing is entangled with it.
Every time we've been tempted by a new runtime, a new framework, or a new database, the answer has been the same: does it save us more than a week of operational pain over the next year? So far the answer has been no.
The stack is not where you want to be interesting. The product is. Every hour spent on infrastructure novelty is an hour not spent on the thing users actually pay for.
Fast deploys. No migrations. No staging database that drifts out of sync. A junior engineer could read the entire architecture in an afternoon. Most of the bugs we've had in production have been business logic bugs — which is where bugs are supposed to be.
The more apps Dekimu launches, the more valuable the shared foundation gets. Boring tech is compounding infrastructure. Exotic tech is usually the opposite.