web apps & dashboards
react + react query
most of the hard part is server state. react query handles it so components stay simple.
boring, proven defaults. i only reach for something new when the problem makes me.
web apps & dashboards
react + react query
most of the hard part is server state. react query handles it so components stay simple.
content & seo
astro
static html that loads fast and ranks. ship js only where a page actually needs it.
styling
tailwind + shadcn/ui
i haven't named a css class in years and don't miss it. shadcn gives me components i own.
client state
local, then zustand, then xstate
most 'state management' is just useState. zustand when it's shared, xstate when it's truly a machine.
backend
node + nestjs
structure that survives more than one engineer. go when node can't keep up.
data
postgres
postgres until it genuinely can't. redis for cache, queues, and realtime.
infra
docker + linux
i'd rather run a small box with caddy than wire up six managed services.
testing
vitest + testing library
test what the user does, not how the component does it. playwright for flows that would hurt to break.
config · github.com/ssnxd/config
codex, claude, and whatever agent is sharpest right now.