All notes

Day 5: Confetti, Milestones & Persistence

On the final stretch, I added my favorite feature: a gamified counter.

  • A simple +1 button that bumps a number
  • 🎉 Confetti triggers on special milestones (5, 10, 25, 50…)
  • Milestone badges show which goals you’ve unlocked
  • Your personal best (highestMilestone) is saved to your profile—debounced so the API only gets hit 1s after your last click
  • Live counter always starts at 0 on login, but your best displays in the corner

Under the hood this meant extending /api/profile to handle a new highestMilestone field, updating Dashboard logic to fetch and save it, and wiring the Counter component to accept count and onIncrement. Now the app feels alive—and a little bit like a game.

And that’s the journey so far! Five days of building, refining, and learning. What’s next? Real-time updates, mobile push, or maybe a companion app. Stay tuned!