2026-02-08
The typed API stack I keep coming back to
Why Postgres + tRPC + Zod earns its place on every greenfield project.
Every six months I try a new server framework. Every six months I come back to the same boring trio.
const router = t.router({
projects: t.procedure
.input(z.object({ slug: z.string() }))
.query(({ input, ctx }) => ctx.db.project.findUnique({ where: input })),
});
The trick isn't the stack. It's that the type information starts in the database and ends in the form validator. No translation layer.