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!