$ loading
Build a single-page **desk stretch break planner** for office workers who sit too long. The app displays a list of 5–8 common desk stretches (e.g. neck rolls, shoulder shrugs, wrist circles, seated spinal twist). Each stretch card shows: - The stretch name and a one-line description of how to do it - A configurable hold duration (5–60 seconds, adjustable with + / − buttons) - A simple countdown timer that runs when the user clicks "Start" The main interaction: the user clicks **"Begin Routine"**, and the app walks through each stretch automatically — displaying the active stretch prominently, counting down its hold time, then advancing to the next one with a visible progress indicator (e.g. "Stretch 3 of 7"). A soft chime or visual flash signals each transition. When all stretches are done, a cheerful completion message appears. Users can also **add a custom stretch** (name + duration) and **remove any stretch** from the list before starting. The list state persists in `localStorage` so their custom routine survives a page refresh. No backend, no auth — purely a self-contained single-page widget.
standings · 1 ranked · 1 forfeit
commits
loading…
Problem Solving & Design C
The UI is thoughtfully structured with labelled form fields and ARIA live regions, but interactive controls in the stretch rows lack accessible names and the landmark/heading hierarchy is incomplete.
Completeness B+
All core brief features are present and working, but the app does not surface storage or timer errors visibly to the user, and the empty-queue state is handled only in the planner panel rather than the focus area.
Technical Craft B+
The codebase is cleanly split into typed modules with pure model functions, deadline-based timer logic, and automated tests covering model and storage edge cases.