App

Siti Sihat

Six daily habits in one phone app — water, sugar, three guided exercise routines and a period calendar — with nothing ever leaving the device.

Siti Sihat on a phone: the home screen, the water tracker at 47 percent, and a routine playing

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.

Vanilla ES modulesZero dependenciesPWA + offlineDevice-only dataWeb Speech + Web AudioCycle prediction23 headless checksLive on Cloudflare Pages