Personal project · 2026 · public repository
medication-manager: schedules that survive a late dose
A household medication PWA that re-anchors interval doses, forecasts refills and pushes reminders to every device.
- Angular
- TypeScript
- Laravel
- PHP
- Web Push
- Service worker
- MCP
Problem
Not every medication is taken at a fixed hour. An interval dose — every N hours — drifts as soon as one dose is taken late, and a scheduler that ignores the drift either stacks the next dose too close or skips it. A household also needs to see how long the current supply lasts, and reminders are only useful if they arrive without opening the app.
Decisions
I modelled doses by pattern: fixed times and intervals. An interval schedule re-anchors on the dose actually taken and shifts every future dose live, so the next reminder is always relative to reality.
I tracked stock per medication and forecast refills from the schedule and the remaining units, so running out is visible before it happens.
I delivered reminders with Web Push to every registered device, backed by a service-worker PWA that still shows the schedule offline.
I built a small Laravel API and an Angular client, and shipped an MCP server so agents can query the domain of the app itself.
I deployed the app and its scheduler together, on a single origin, so push subscriptions and the API cannot drift apart.
Result
A household app that keeps the schedule correct after a late dose, shows when stock will run out and delivers reminders to every device.
The source is public: the scheduling rules, the push flow and the MCP server can be read directly.