Stack
What I build with, and why
Not everything I've touched — the things I actually reach for. Every tile shows how deep I am in it and when I started, and the ones marked why open the reasoning for picking it over the alternative, usually after trying the alternative first.
Backend
Where most of my work lives. Domain logic sits in a framework-free core, callable from a route, a job or a test without booting the app.
Frontend & mobile
One typed client is the only door from the UI to the API. No screen opens a socket or runs a permission check on its own.
Infrastructure & DevOps
Working solo means the safety nets aren't optional — they do the job a second developer would do by noticing things in passing.
Testing & QA
A green run only means something if the tests can fail. I test the real flow, not just the types.
Security & auth
The recurring lesson: decide how a thing gets revoked before you build the happy path.
The pattern under all of it
The tools change; four habits don't. One enforceable place per rule. Deny by default. Domain logic that runs without booting the framework. Nothing counts as done until I've watched it work.