How a project actually runs, from first conversation to something live that I keep running.
Before any code, the shape of the thing: what it has to do, what the data looks like, where it will run and what it will cost to keep running. Most bad systems are bad because this step was skipped.
Requirements
Data model
API design
Infrastructure plan
Trade-offs
Typed, tested and reviewed. I write the boring version first and make it clever only where the profiler says it matters.
TypeScript
Tests
Code review
CI pipeline
Documentation
Deployed in containers on infrastructure I can explain, with monitoring, backups and a way to roll back. Shipping is the start of the work, not the end of it.
Docker deploy
Monitoring
Backups
Security patches
Iteration
I build and run web products end to end — application, API, database and the infrastructure underneath. Ten years of shipping, mostly for founders and agencies who need something that actually holds up in production.
End-to-end web applications in TypeScript, React and Next.js, backed by Node and Express. From data model to deployed product, built so it stays maintainable once it is somebody else's turn to work on it.
REST and realtime APIs over PostgreSQL, MySQL, MongoDB and Redis. Authentication, row level security, background jobs and the unglamorous reliability work that decides whether a system holds up under real load.
Docker Compose stacks on your own VPS instead of somebody else's SaaS. Nginx and Apache, TLS, mail, backups and monitoring — configured so you genuinely own what you are running.
Voice and chat agents, OCR pipelines, scrapers and speech-to-text wired into workflows that already exist. Built on your infrastructure, so your data stays where you put it.