About the project
Six habits that usually mean six apps, in one page on a phone: a water tracker, a sugar budget, three guided exercise routines and a menstrual calendar. Nothing leaves the device — one localStorage key, no account, no server, no analytics, and a check in the test suite that fails if any request goes anywhere but the two font hosts. The three routines share one player: a countdown ring, spoken cues through the browser’s own speech engine, beeps synthesised on the fly rather than shipped as files, rest steps between moves, and a wake lock so the screen stays on mid-plank. The cycle tracker predicts from the user’s own history rather than a textbook 28 days — it averages the last six gaps, throws out anything outside 15–60 days as a mis-log, and counts ovulation backwards from the predicted start, because the luteal phase is the stable half of a cycle and the follicular half is what varies. The part that took the most thought was what not to promise: a thigh gap is pelvis width and bone position, and no adductor work creates one; belly fat cannot be spot-reduced, because crunches build the muscle under the fat rather than removing the fat above it. Both routines are still there and still worth doing — each one just says so on its own screen, above the Start button. Plain HTML, CSS and ES modules: no framework, no build step, no dependencies, installable to the home screen and working offline. Verified by a self-driving harness that starts a server, drives headless Chrome over the DevTools protocol and fails on any console error — 23 checks green, though the three defects that actually mattered were caught by looking at the screenshots it takes, not by the checks.
