Small, self-hosted apps I’ve designed and built end to end — product, code, and the infrastructure underneath. Each one has a write-up on how it actually works.
Handovha
A passwordless tool for turning a physical handover into a signed, verifiable certificate — photos, both signatures, and a QR code, with no account required to check it. Magic-link identity, a signature that voids itself the moment the record it covers changes, and a public verification page that proves authenticity without exposing anyone’s ID number to a stranger.
Stack: Node.js, TypeScript, Express, Postgres, PDFKit — a single DigitalOcean droplet.
Visit handovha.com · Architecture write-up · Why functional core, imperative shell fits it
Mail Koenig
An email-campaign tool built around a simple bet: a Postgres table with FOR UPDATE SKIP LOCKED is a completely adequate job queue at this scale, with no Redis or SQS in sight. Handles retries with jittered backoff, recovers cleanly from a worker crashing mid-batch, and keeps webhook delivery events idempotent against a provider that retries.
Stack: Node.js, TypeScript, Express, Postgres — shares a droplet with Handovha.
Not publicly launched yet — still in active development. Architecture write-up
Eyes of Wadzi
A zero-code photography portfolio for a photographer who doesn’t want to touch a terminal. Google Drive is the entire CMS — drop photos in a folder, and a scheduled pipeline detects the change, rebuilds the site, and publishes it. Free to host, and needs no maintenance from either of us.
Stack: Hugo, Python, GitHub Actions, GitHub Pages — Google Drive as the CMS.
Visit the site · Architecture write-up
The infrastructure behind these
Handovha and Mail Koenig both run on one shared DigitalOcean droplet, provisioned from a single YAML manifest and a handful of idempotent bash scripts — no Kubernetes, no Terraform, no PaaS.