Full-stack apps
Product work front to back — interfaces, APIs, data models and the database underneath.
Full-Stack Developer
I build full-stack products end to end — and run the self-hosted infrastructure they live on.

Product work front to back — interfaces, APIs, data models and the database underneath.
Real apps in production on a Linux server I administer myself — tunnels, monitoring, uptime.
A self-hosted assistant with persistent context on my projects — directed from written specs, reviewed before anything ships.
The self-hosted ecosystem — what keeps the work reachable
A real terminal in the browser, behind TOTP auth. Turns any device — phone included — into a working shell on the server.
Uptime monitor PWA with escalating push alerts — I hear about an outage before anyone has to tell me.
The gateway that lets me hand work to my assistant from the web or a chat app, with jobs queued and streamed back live.
Everything I run on my own server points at one goal: being able to do real work from any device, in any place, at any time. A browser and a connection is the whole requirement — no laptop in the bag, no VPN client, no “I'll look at it when I'm back at my desk.”
Each project lives as its own supervised service on hardware I administer myself, with its own environment, its own subdomain and its own deploy path. Reaching any of them takes a browser: a full terminal session and a real shell on the machine, both behind authentication and access control. From a phone on the road, that is genuinely enough to ship a fix.
The reason is simple and personal. Travelling, out for the evening, on leave — none of that should mean the work becomes unreachable. If something breaks or someone needs an answer, I want to be a couple of minutes away rather than a couple of days.
The part I am most deliberate about is where AI sits in that loop. It is not a chat window I paste snippets into. It is a directed system with persistent, structured context on my own projects: it holds the state between sessions, works against specifications I write, and reports back for review. I keep the architecture decisions and the sign-off; it takes the repetition. That is the difference between owning a server and having a second pair of hands that is already up to speed.
A real terminal and shell in the browser, access-gated. Phone, tablet, a borrowed laptop — if it can open a page, I can work.
Services supervised with health checks and auto-recovery, reached through tunnels rather than exposed ports. Uptime is not something I babysit.
A self-hosted assistant with a structured, versioned memory of my projects — briefed once, useful every session after, and never guessing at the state.
Escalating push alerts the moment a service drops, so a problem reaches my phone before it reaches anyone using it.
None of this is a demo built for a portfolio. It is the environment I actually work in, every day — and the reason a holiday does not have to mean going quiet.
How the AI side is built