Uptime Monitor is the browser-truth layer of a three-layer monitoring stack. Kuma and Gatus keep answering the cheap questions unchanged; my service — about 3,600 lines of TypeScript across 72 files, with 38 test files spanning unit, integration and end-to-end — opens each site in real Chromium, gathers a single evidence object per run, and passes it through eighteen pure-function detectors. Findings feed an incident state machine tuned against alert fatigue, alerts go out through Discord and SendGrid with the failing screenshot attached, and a separate React dashboard of about 2,200 lines merges network uptime with browser health.
The architecture is interfaces wired by hand in one composition root — detection, alerting, screenshot comparison and persistence are each swappable implementations, no DI framework, no globals. Six Postgres tables, umzug migrations at boot, and screenshots stored per run, pruned, and diffed to drive the visual detector. I built it solo in about a week in July 2026, 85 commits, working from a written spec broken into nineteen test-first tasks before any implementation code existed — which is why a week-old project has a coherent architecture instead of the shape of whatever I thought of first.