Practical writing on building fast, maintainable products for the web.
How to build multi-tenant SaaS that stays simple as you grow: choosing an isolation model and enforcing tenant boundaries in Postgres.
LCP, CLS and INP are not mysterious. A short, repeatable checklist that keeps every site we ship in the green from the first deploy.
When to push work off the request path, how to choose a database queue or Redis, and how to write a worker that survives crashes and retries.
How to build webhook receivers that survive retries, duplicates, and 3am incidents: verify signatures, return fast, process async, stay idempotent.
A practical CI/CD setup for teams of two to five. Fast checks, deploy on green, and the few guardrails that keep it from rotting six months later.
A practical guide to dockerizing a Next.js or Node app: one tidy multi-stage Dockerfile, a sane compose file for local dev, and the traps that bloat images.
What logs, metrics, and traces actually buy you in production, plus a practical structured-logging and tracing setup for a Next.js and Node stack.
A practical guide to handling file uploads safely in Node and Next.js: validation, presigned uploads, content-type checks, and safe storage.
A practical look at rate limiting algorithms, where to enforce them, and how to keep limits consistent across many servers without melting your database.
You do not need LaunchDarkly to ship behind a flag. A Postgres table, a cached read, and a typed helper get you most of the value.
A practical guide to error handling in React: error boundaries, async error catching, query libraries, and how to show users something better than a white screen.
Most test suites are either too thin to catch bugs or so bloated they slow you down. Here is a layered strategy that finds real bugs without turning CI into a tax.