A management system I designed and built solo for an English school, over sixteen months and 419 commits. It ran the school for over a year; I stopped work on it in August 2026 and go back to it over the holidays. Enrollment fills the contract PDF right in the browser, contracts go out for electronic signature with status tracked by webhook, the school reaches families through web push, and the class schedule is a drag-and-drop board. The school's brand and data stay private — so the demo below is the same dashboard rebuilt with a generic brand and fictional data, navigable end to end.

01 / THE PROBLEM
Enrollment lived on a printer and a WhatsApp thread.
An English school ran enrollment the way most small schools do: a contract filled in by hand, printed, signed whenever a parent happened to come by, and chased over WhatsApp when they didn't. The schedule lived in a spreadsheet, notices went out one chat at a time, and nobody had a single view of who was enrolled, who had signed, and who still owed a signature.
I built the system that replaced that routine — and kept building it for sixteen months.
02 / THE BUILD
Enrollment that fills its own contract.
The contract PDF is filled in the browser. The enrollment form's data lands on the actual contract via pdf-lib — no retyping, no copy drifting out of date. The document then goes out for electronic signature, and a webhook flips its status in the panel when it comes back signed.
Web push to reach families. Notices go out as push notifications instead of one more WhatsApp message lost in a thread.
A drag-and-drop schedule. Classes move between rooms and time slots by dragging, and the agenda prints and exports for the wall next to the front desk.
Underneath: React with TypeScript, Postgres with Drizzle ORM and numbered migrations, and a Playwright regression suite that runs against a seeded test database.
03 / SIXTEEN MONTHS
419 commits, April 2025 to August 2026.
This is the part a demo can't fake. The repository holds 419 commits across sixteen months — around 50k lines by the end — and the history reads like a real product's: enrollment first, then contracts and signature, then the agenda, then push. Schema changes shipped as migrations; the flows that matter are covered by end-to-end tests.
A system only accumulates sixteen months of commits by being used, and this one was — real enrollments, real signed contracts, a real schedule on a real wall.
04 / THE DEMO
The same dashboard, wearing a generic brand.
The school's brand and data belong to the school, so the version you can open here is a generic-brand rebuild of the dashboard, on fictional data. Same screens, same density: three access roles (director, supervisor, front desk), five live charts, spreadsheet import, and a light/dark theme animated with the View Transitions API.
The whole demo is one HTML file. It opens on a phone, needs no login and no install — which is the point: the real system exists, and this is the part of it I can hand you as a link.
Lines of code
~50k
Commits
419
Months building
16
Demo
1 HTML
