Skip to content

Latest commit

 

History

100 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

personal-finance

A small collection of free, sensible personal finance calculators for Canadians.

Latest deployed version: Click Me

Tools

Tool Route Status
Rent vs Buy — compare renting vs owning a home /rent-vs-buy Live
When can I retire? — quick retirement reality check /retirement Live
Lifetime Allocation — find your optimal lifetime stock allocation /glide-path Live
ACB Calculator — adjusted cost base from a Wealthsimple activity export /acb Live
Where to invest: TFSA, RRSP or Non-Reg? — split a lump sum across account types /allocator Coming soon

The site is a single statically-exported Next.js app: a hub landing page at / links to each tool, which lives at its own route.

The Lifetime Allocation tool finds the optimal stock allocation across your lifetime. It also compares that path with the best constant allocation and reports drawdown-only depletion separately from full-path shortfall so the trade-offs between both choices remain visible.

Disclaimer

An educational tool, not financial advice. Results are estimates from your assumptions, not predictions. Canada-specific and provided as-is — consult a professional before acting.

Development

Built with Next.js (App Router), React 19 (with React Compiler), TypeScript, Mantine, Tailwind CSS and Recharts. Statically exported and deployed to GitHub Pages. Tested with Vitest + React Testing Library (unit/component) and Playwright (e2e/UI).

npm install
npm run dev        # dev server at http://localhost:3000
npm run build      # static export to ./out
npm run format     # Prettier
npm run lint       # ESLint
npm run typecheck  # tsc --noEmit
npm test           # Vitest unit + component tests
npm run test:e2e   # Playwright end-to-end tests

Layout

src/
  app/
    page.tsx              # hub landing page (lists tools)
    rent-vs-buy/page.tsx  # rent-vs-buy tool route
    glide-path/page.tsx   # Lifetime Allocation route
    allocator/page.tsx    # Where to invest: TFSA, RRSP or Non-Reg? route
  components/
    shared/               # reusable chrome + form primitives (Header, Footer, inputs)
    rent-vs-buy/          # rent-vs-buy-specific components
    glide-path/           # Lifetime Allocation components
    allocator/            # Where to invest: TFSA, RRSP or Non-Reg? components
  utils/                  # math, formatting, Monte Carlo (shared) + tool-specific logic
  types.ts                # shared domain types
analysis/                 # Python research, validation, and recommender tools
docs/                     # calculator methodology notes, grouped by domain

Cross-folder imports use the @/ path alias (@/* → ./src/*).

Research and methodology:

Used by

Contributors

Languages