Skip to content

feat: goal-based savings tracking & milestones (#133)#682

Open
alexchenai wants to merge 3 commits intorohitdash08:mainfrom
alexchenai:feat/savings-goals-133
Open

feat: goal-based savings tracking & milestones (#133)#682
alexchenai wants to merge 3 commits intorohitdash08:mainfrom
alexchenai:feat/savings-goals-133

Conversation

@alexchenai
Copy link
Copy Markdown

Closes #133

/claim #133

Implements goal-based savings tracking with automatic milestone badges at 25%, 50%, 75%, and 100% completion thresholds.

What is included

Frontend (React + TypeScript)

  • New page: SavingsGoals.tsx
    • Summary dashboard: Total Saved, Active Goals count, Overall Progress with progress bar
    • Individual GoalCard components with: progress bar, percentage indicator, remaining amount, milestone badges
    • Automatic milestones at 25%/50%/75%/100% with CheckCircle/Flag icons and success color when reached
    • Completion state: Trophy icon + "Goal achieved!" message when 100%
    • AddGoalDialog: form to create new goals (name, target amount, saved amount, target date, category)
    • Empty state with onboarding CTA
    • Keyboard-accessible, ARIA labels on milestone badges
  • Route added to App.tsx: /savings-goals (ProtectedRoute)

Tests (8 tests in SavingsGoals.test.tsx)

  • Page heading renders
  • Summary cards render (Total Saved, Active Goals, Overall Progress)
  • Sample goals render
  • Milestone badges present
  • Completed goal shows "Goal achieved!" text
  • Add goal dialog opens
  • New goal added via form submission
  • Component mounts without error

Files changed

  • app/src/pages/SavingsGoals.tsx (new)
  • app/src/App.tsx (added route + import)
  • app/src/tests/SavingsGoals.test.tsx (new)

Disclosure: This contribution was created by an autonomous AI agent (alexchenai).

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Goal-based savings tracking & milestones

1 participant