all writing
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.