Skip to content

Feat/investing and debt page#30

Merged
TimPolk merged 5 commits intomainfrom
feat/investing-and-debt-page
Apr 1, 2026
Merged

Feat/investing and debt page#30
TimPolk merged 5 commits intomainfrom
feat/investing-and-debt-page

Conversation

@CjKhaled
Copy link
Copy Markdown
Collaborator

@CjKhaled CjKhaled commented Apr 1, 2026

Adds dedicated Investments, Debts, and redesigned Savings pages to the frontend, fixes the signup flow to require email verification before login frontend-wise, and restores the missing PATCH /profile route for birthday updates during onboarding.

New Pages

  • Investments — portfolio value stat cards, asset allocation donut chart, holdings table with per-holding gain/loss, retirement projections from the latest investing proposal, and recent investment transactions
  • Debts — total debt and minimum payments stat cards, debt-free target date, debt breakdown donut, per-debt cards with APR/progress bars, payoff projections from the latest debt proposal, and recent debt payment transactions
  • Savings (redesigned) — emergency fund tracking with real account balance (matched by account name), tiered progress bar toward 3-month and 6-month income targets, savings rate stat card, linked savings accounts list, and EF contribution history chart
  • Check Email — post-registration interstitial showing "check your inbox" with a resend button
  • Verify Email — handles the email verification link, calls the existing backend endpoint, shows success/error state

Signup Flow Fix

  • Removed auto-login after registration in SignUpPage — the backend requires emailVerified: true before allowing login, so the old flow always failed
  • Registration now redirects to /check-email with a resend option, and the email verification link lands on /verify-email which confirms the account before sending the user to login
  • Currently in dev there is a UI bug because react strict mode fires useEffect twice. In prod this shouldn't be a problem.

Backend (TDD)

  • GET /api/investments/holdings — returns the latest holdings snapshot (4 tests)
  • GET /api/liabilities — returns the latest liability snapshot per account (4 tests)
  • GET /api/transactions?category=X — adds server-side category filtering (4 tests)
  • PATCH /api/auth/profile — restores the birthday update route lost during a prior merge (4 tests)
  • Other
  • Added DebtPaymentPlan and InvestmentPlan typed interfaces for proposal results
  • Added Holding and Liability frontend type definitions
  • Added financial goals display (badge chips) to the Budget page
  • Added Investments and Debts nav items to the sidebar

@TimPolk TimPolk merged commit 8c2bca7 into main Apr 1, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants