Water tracker: a daily goal the user sets and a tap-to-add log that resets each day.
Decision: The page loads with a grey example of 5 stripes under a red goal line at 8, then lets the user set a goal and tap to add one blue stripe per glass, and clears the stripes when the device date changes.
Three panes, one street.
Act one: the window is dressed before anyone walks up. A goal of 8, five glasses logged, times beside them.
Act two: you set your number. The dummy steps out.
Act three: you tap. Each glass lands in the pane where the dummy stood.
No history. No charts. No unit switch. Three things in the window or it reads as a jumble sale.
I asked a seven-year-old. "It tells you when you drank enough water."
That sentence goes at the top, as written.
The example sits in pale grey ink. Your own glasses go down in black.
One tap, one glass. Hands are wet, hands miss, so the last stroke can be lifted with one undo.
Nothing on the page the child could not read back to me.
Rule: one glass is one stripe. Same width, same blue, laid bottom to top.
The goal is a red selvedge running across the cloth at the height of glass 8.
That red line is the one loud thing. Everything else stays plain.
Where it fails: glass nine. The rule has nowhere to put it.
I would rather show that break than hide it.
My body is clear. You see the water I drank and where it sits.
So the page shows its insides too. Where the count is kept. When it empties. Which date it checked against.
Three lines at the bottom, always visible.
Cost: one file, no libraries, under 200 lines.
The midnight reset is the slow part. Device clock, local date, nothing cleverer.
The page loads with a grey example of 5 stripes under a red goal line at 8, then lets the user set a goal and tap to add one blue stripe per glass, and clears the stripes when the device date changes.
Concept: Three Panes
index.html with no libraries. Store {date, goal, taps[]} under the key water-tracker in localStorage. On load and on every tap, compare new Date().toDateString() to date, and empty taps when they differ.goal stripes of equal height with a 3 px red line at the goal. Stop drawing at the frame top. Show the count as "n of goal" under the cloth, with one Undo button beside the Add button.