
The Standup
what shipped, what broke, and the shortcut that saved the most time
Stay lazy.
New tips delivered weekly. No spam.
The Stack
The lazy stack: what I actually reach for in 2026
Zev Uhuru
operator, lazy.dev
Aug 24, 20264 min readnext.jsvercelsupabase
Not the stack that wins arguments — the one that gets a thing deployed before I lose interest. Four choices, each defended by how little it asks of me.
Every stack post is really an argument about taste dressed up as an argument about performance. So here is mine, stated honestly: I pick tools by how much of my attention they demand when nothing is wrong. A tool that is excellent under load but needs babysitting on a quiet Tuesday has already lost.
Next.js on Vercel, because deploying is a git push
There is no ceremony. Push to a branch, get a URL, send the URL to someone. The App Router's server components mean most pages are one async function that returns markup — no client state to manage, no loading spinner to design, no data-fetching library to configure. The laziest possible architecture is the one where the data is already there when the component renders.
Supabase, because auth is not a project
Postgres you can actually query, with auth and row-level security attached. The important part is that RLS moves authorization into the database, which means the rule lives in one place instead of being re-implemented in every route handler by a tired person at midnight.
Static TypeScript files, until they hurt
This site's video list was a Prisma schema, a SQLite file, an admin panel, and a NextAuth config. It is now an array in a .ts file. Twenty items do not need a database — they need a text editor and a deploy. The migration back is always available and the archived code is still in the repo. Reach for infrastructure on the day it earns itself, not the day you imagine it might.
// src/data/videos.ts — the whole persistence layer
export const VIDEOS = [
{ slug: "ship-it", title: "Ship it", minutes: 2 },
]An agent, because typing is the boring part
The last piece isn't a library. Most of what I build now is described rather than typed, reviewed rather than authored. That changes which stack decisions matter: conventions the agent can follow beat clever abstractions it has to infer, and a boring stack with a lot of public documentation outperforms an elegant one with none.
Pick the stack your agent has already read the docs for.
written by
Zev Uhuru
Runs the board, builds the thing, writes down what actually worked. Every issue starts with something that shipped — usually with an agent doing the typing.
