Default frontend stack
TypeScript product surfaces
This is the part of the stack I reach for when the product surface needs to stay fast to build, easy to reason about, and stable after the first release.
Next.js with the App Router is the center of gravity. It gives me a clean way to mix server-first rendering, typed application code, and pragmatic delivery without turning the project into ceremony.
Around that, I usually keep the UI layer restrained: Tailwind CSS for control, shadcn/ui and Radix UI for accessible primitives, then TanStack Query, Zustand, NextAuth, tRPC, and Zod when the product needs stronger client-state, auth, transport, or validation boundaries.
- TypeScript
- Next.js
- React
- Tailwind CSS
- shadcn/ui
- Radix UI
- TanStack Query
- ztZustand
- NextAuth
- tRPC
- Zod