Next.js development
production next.js apps — server components, API routes, caching, and migrations off older stacks.
## what this is
apps built on next.js's app router — server components where they help, client components where they're actually needed, and API routes that don't turn into a second backend nobody wanted to maintain.
## why it matters
next.js gets picked for the wrong reasons a lot: "it's what everyone uses," or "it has SEO built in." those aren't wrong, but they're not the real value. the real value is that rendering, routing, and data fetching stop being three separate decisions you have to wire together yourself. done right, that means fewer moving parts and fewer places for bugs to hide.
## how I work
- server components by default. client components are the exception, added only where interactivity actually needs the browser. this keeps the JS bundle small and the initial load fast.
- caching decisions made on purpose. next.js caches aggressively by default, which is great until it isn't. I set revalidation and cache tags deliberately, not by accident.
- API routes kept thin. business logic lives in a service layer, not scattered across route handlers. makes testing easier and keeps routes from turning into 200-line functions.
- migrations done incrementally. moving off create-react-app or a legacy express setup doesn't have to be a rewrite. I migrate route by route, so the app stays shippable the whole time.
## stack
next.js (app router), typescript, react server components, drizzle or prisma depending on the project, deployed on vercel or a self-hosted node instance when that's the better fit.
## what you get
- an app that actually uses server components, not client components wrapped in "use client" everywhere out of habit
- clear separation between what runs on the server and what ships to the browser
- a migration plan if you're moving off an older stack, with checkpoints instead of one big cutover
- reasoning behind caching choices, written down, so the next developer doesn't have to guess
## get in touch
if you're starting fresh or migrating an existing app, tell me where it stands now. I'll map out what moves first and what can wait.


