Devlog
Daily-streak challenges
Jun 5 – Jun 14, 2026
frontendsupabase
Built /challenges from scratch — a daily-streak tracker backed by Supabase
(challenges + challenge_completions tables) instead of markdown, since
this data changes constantly and needed multi-device writes.
What changed
- Status derived from dates (
upcoming/active/completed), all using local dates so a challenge doesn't shift a day depending on server timezone - Per-day ledger: cross for done, dot for missed, every 10th day shows a milestone tick with the day number
- Marking is gated behind an unlock cookie so only visitors who entered the key can write; server clamps to the challenge window and rejects future days
- Homepage footer widget showing the active challenge's recency streak
Notes
Went back and forth on whether "today" should use client or server time — landed on client-local dates everywhere after a bug where the ledger showed yesterday's mark as missing right after midnight UTC.