A PWA workout timer/trainer for the push-up challenge based on the song "Flower" by Moby.
- Full Challenge — follows the exact song timing (30 reps across 4 blocks with hold phases, 3:26 total)
- Training Mode — configurable drills: Tempo Reps, Endurance Sets, Isometric Hold, Dead-Stop Press, Fatigue Ladder, Ramp Protocol
npx serve . -p 8080No build step — vanilla JS (ES modules) served as static files.
Deployed to Railway via railway.json using the serve package.
index.html— markup for both panels (challenge + training), finish overlays, info modalstyles.css— styling, including light/dark themes viadata-themeand CSS custom propertiessw.js— service worker (cache-first strategy, versioned viaCACHE_NAME)js/main.js— entry point, DOM wiring, tab switching, service worker registrationjs/challengeData.js— timing constants and sequence builder for the full challengejs/challenge.js— challenge mode state machine and animation loopjs/drills.js— drill catalogue with configurable cue sequence buildersjs/training.js— training mode state machine, config UI, persistencejs/audio.js— Web Audio beeps + SpeechSynthesis voice cuesjs/flash.js— full-screen color flash on cue transitionsjs/utils.js— formatting, vibration, and DOM helpersjs/theme.js— theme toggle (auto/light/dark)js/wakeLock.js— Screen Wake Lock to keep the display on during workoutssequence.md— full timing breakdown of the Full Challenge sequence
- Fonts are self-hosted in
fonts/(no external CDN requests) - No test framework is configured