Built for Canadians, by Canadians.
Getting Started · Demo · Screenshots · Documentation · Contributing
RetireePlan is a self-hosted desktop and web application that gives individual investors the same depth of planning capability as expensive advisor-gated software. Model your complete financial life, run thousands of Monte Carlo simulations, optimize CPP/OAS timing, minimize lifetime taxes, and plot a confident path to retirement — all without sharing your data with anyone.
Your data never leaves your machine. RetireePlan runs entirely on your own hardware — desktop app, self-hosted containers, or local dev server. No cloud accounts, no telemetry, no third-party analytics.
Year-by-year deterministic engine that tracks income, expenses, account growth, registered withdrawals, and taxes from today through your final planning year. Supports phased retirement, variable spending, and every Canadian registered account type.
Run 1,000-trial Monte Carlo simulations using normal, log-normal, or historical-bootstrap return distributions. Replay your plan against real TSX/S&P 500/bond/inflation data from 1970–2024. View fan charts, success-rate heatmaps, and survival-age histograms.
Federal + provincial brackets for all 13 provinces/territories. CPP/QPP, EI, OAS/GIS clawback, capital-gains inclusion rate, eligible dividend gross-up & credit, pension income splitting, RRIF minimum withdrawals, and departure tax for cross-border situations.
A rule-based engine surfaces up to 5 ranked, dollar-quantified recommendations — RRSP meltdown opportunities, OAS clawback avoidance, TFSA room utilization, RRIF timeline alerts, CPP/OAS timing, and pension splitting. Integrated into the Dashboard and AppBar notification bell.
A single 0–100 composite score weighted across Monte Carlo success rate (40%), income replacement ratio (25%), tax efficiency (20%), and account diversification (15%). Displayed as a gauge dial with component breakdown and actionable improvement suggestions.
13-item checklist with per-category progress bars (Basics, Income, Accounts, Planning) and a plan quality % badge. Tells you exactly what's missing before you run projections.
Create and compare multiple named scenarios side-by-side. The Compare page overlays projections, net worth curves, and tax summaries across any two plans at once.
Model rental properties, principal-residence exemptions, and deemed-disposition tax on death. Estimate probate by province. Model beneficiary designations and inheritance events.
Cross-border considerations: tax treaty rates, FBAR thresholds, departure tax, T1135, RRSP non-resident withholding, CPP/SS totalization.
Context-aware chat that knows your household data. Pluggable between local Ollama (fully private) and GitHub Copilot SDK. Ask plain-English questions: "At what age can I retire if I save $2,000 more per month?"
Pull real spending categories and transaction data directly from YNAB to ground your projections in actual spending behaviour rather than estimates.
Full multi-scenario PDF report with embedded charts and a net-worth statement. CSV row-per-year export for spreadsheet power users.
A native macOS/Windows/Linux desktop application with:
- No server required — the API runs locally inside the app
- Multiple financial plans (profiles) in different folders
- One-click plan switching from the login screen
- Automatic daily backups, per-plan and isolated
- Packaged as a DMG (macOS), NSIS installer (Windows), or AppImage/deb (Linux)
- GitHub Actions CI builds installers for all three platforms automatically
See the full gap analysis and proposal in docs/ROADMAP-proposed-enhancements.md.
| Theme | Feature | Status |
|---|---|---|
| Plan Health | Retirement Readiness Score | ✅ Shipped |
| Plan Health | Automated Insights Engine | ✅ Shipped |
| Plan Health | Plan Completeness Checklist | ✅ Shipped |
| Dashboard | Income Replacement Card | ✅ Shipped |
| Dashboard | Net Worth Timeline Sparkline | ✅ Shipped |
| Dashboard | Market Data / Assumptions Refresh | ✅ Shipped |
| Projections | Account Drawdown Animation | ✅ Shipped |
| Projections | Quick What-If Calculator | ✅ Shipped |
| Spending | Phased Retirement Spending Template | ✅ Shipped |
| Accounts | RRSP/TFSA Contribution Room Tracker | ✅ Shipped |
| Accounts | Asset Allocation Modeller | ✅ Shipped |
| Accounts | Real Estate & Rental Income | ✅ Shipped |
| Planning | Goals-Based Retirement View | ✅ Shipped |
| Planning | Milestone Templates | ✅ Shipped |
| Planning | Decision Journal & Mind Map | ✅ Shipped |
| Income | RRSP Meltdown Wizard | ✅ Shipped |
| Income | Spousal RRSP Optimizer | ✅ Shipped |
| Simulations | Withdrawal Order Optimizer | ✅ Shipped |
| Simulations | Bucket Strategy Modeller | ✅ Shipped |
| Simulations | Life Insurance Needs Calculator | ✅ Shipped |
| Tax | TFSA vs. Non-Reg Withdrawal Optimizer | ✅ Shipped |
| Desktop | Auto-update mechanism | ✅ Shipped |
| Desktop | Windows/Linux packaged installers | ✅ Shipped |
| Export | PDF Report Improvements | ✅ Shipped |
| Income | CPP Timing Optimizer | 🚧 In Progress |
| Income | OAS Deferral + Clawback Optimizer | 🚧 In Progress |
| Accounts | Defined Benefit Pension Deep-Dive | 🚧 In Progress |
| Simulations | Sequence-of-Returns Risk Visualizer | 🚧 In Progress |
| Data | Linked live account balances (Questrade/WS) | 🚧 In Progress |
| Data | RESP Planner | 🚧 In Progress |
| Income | Pension Splitting Optimizer | 🔜 Planned |
| Income | GIS Planner | 🔜 Planned |
| Tax | Corporate Structure (HoldCo) | 🔜 Planned |
| Data | CRA My Account Data Import | 🔜 Planned |
| Data | RDSP support | 🔜 Planned |
The demo video is generated automatically with Playwright against the seeded test account and embedded on the project site. To regenerate it locally:
# Both servers must be running first:
npm run dev:api & npm run dev:web &
# Then record:
npm run demo:record
# → saves docs/demo.webm| Login | Dashboard | Household |
|---|---|---|
![]() |
![]() |
![]() |
| Projections | Simulations | Tax Analytics |
|---|---|---|
![]() |
![]() |
![]() |
| Scenarios | Earliest Retire Finder | Compare |
|---|---|---|
![]() |
![]() |
![]() |
| Estate Planning | Accounts | Settings |
|---|---|---|
![]() |
![]() |
![]() |
| AI Assistant | Integrations | International |
|---|---|---|
![]() |
![]() |
![]() |
Download the latest release for your platform from the Releases page.
- macOS: Open the
.dmg, drag RetireePlan to Applications. - Windows: Run the
.exeinstaller. - Linux: Use the
.AppImage.
The app bundles its own API server — no Node.js or database setup required.
Pull the pre-built images from GitHub Container Registry:
docker compose up -dOr use the images directly:
docker pull ghcr.io/joeregnier/retiree-plan-api:latest
docker pull ghcr.io/joeregnier/retiree-plan-web:latestSee the full Installation & Developer Guide.
Prerequisites: Node.js ≥ 24, npm ≥ 10
# 1. Clone
git clone https://github.com/JoeRegnier/retiree-plan.git
cd retiree-plan
# 2. Install dependencies
npm install
# 3. Set up environment
cp .env.example .env
# Edit .env — set JWT_SECRET and optionally YNAB_API_KEY
# 4. Initialize the database
npm run db:migrate
npm run db:generate
# 5. Start development servers (API + web in parallel)
npm run devThe web UI opens at http://localhost:5173 and the API at http://localhost:3001.
retiree-plan/
├── apps/
│ ├── api/ # NestJS 11 REST API (Prisma + SQLite/Postgres)
│ ├── web/ # React 19 + Vite 6 + MUI 6 single-page app
│ └── desktop/ # Electron 32 wrapper (bundles API + web)
├── packages/
│ ├── shared/ # Zod schemas, constants, shared TypeScript types
│ ├── finance-engine/ # Pure-TS tax, projection, and simulation engine
│ └── openapi/ # OpenAPI 3.1 spec + generated client types
├── prisma/ # Prisma schema, migrations, seed scripts, backup/restore
├── docs/ # User guides, architecture docs, roadmap
├── e2e/ # Playwright end-to-end tests
├── .github/ # CI/CD workflows (GitHub Actions)
└── scripts/ # Build helpers
| Layer | Technology |
|---|---|
| Language | TypeScript (strict) — frontend, backend, engine, desktop |
| Frontend | React 19, Vite 6, Material UI 6, D3.js 7, TanStack Query 5, React Router 7 |
| Backend | NestJS 11, Prisma 6, SQLite (dev / desktop), PostgreSQL (production) |
| Desktop | Electron 32, electron-builder 25 |
| Testing | Vitest + React Testing Library, Playwright (E2E) |
| CI | GitHub Actions |
| AI | Ollama (local) or GitHub Copilot SDK (pluggable) |
| Integrations | YNAB API v2, Questrade, Wealthsimple, TD |
| Document | Description |
|---|---|
| Installation & Developer Guide | Full setup, environment variables, database, desktop build |
| User Guide — Retirement Planning | End-user walkthrough of all planning workflows |
| System Overview | High-level architecture narrative |
| Cash-Flow Projection Engine | How the deterministic engine works |
| Canadian Tax System | Tax calculation methodology |
| Accounts & Registered Plans | RRSP, TFSA, LIRA, LIF, RESP, Non-Reg rules |
| Scenarios & What-If | Creating and comparing scenarios |
| Monte Carlo & Simulations | Simulation methodology |
| Insights Engine | Rule-based recommendation system |
| Real Estate | Property modelling |
| Goals & Milestones | Lump-sum event planning |
| Asset Allocation | Portfolio construction |
| Estate Planning | Deemed disposition, probate, beneficiaries |
| RRSP Meltdown & Drawdown | Optimal RRSP conversion strategies |
| Contribution Room Tracker | RRSP/TFSA room management |
| PDF/CSV Export | Report generation |
| Architecture | Component diagram and design principles |
| Proposed Enhancements Roadmap | Detailed gap analysis and feature backlog |
This project is looking for collaborators! RetireePlan started as a solo project, but the vision is much bigger — a world-class open-source alternative to paid retirement planning tools. If you're a developer, a financial planner, a tax specialist, or just passionate about Canadian personal finance, I'd love to partner up.
Interested in co-maintaining, building features, or taking RetireePlan to market? Open an issue titled "Collaboration Interest" or reach out via GitHub Discussions.
Contributions of all sizes are welcome. Please read CONTRIBUTING.md before opening a pull request.
Ways to contribute:
- 🐛 Report bugs via GitHub Issues
- 💡 Request features or discuss ideas in GitHub Discussions
- 🧪 Add test coverage (Vitest unit tests, Playwright E2E)
- 🍁 Improve Canadian tax accuracy (provincial edge cases, new tax years)
- 🌐 Add or improve user-facing documentation
- 📦 Help with the desktop packaging pipeline
- 🧮 Implement new financial calculators (CPP optimizer, GIS planner, etc.)
RetireePlan is released under the MIT License. See LICENSE for full terms.
RetireePlan is a planning and modelling tool, not financial advice. All projections are estimates based on assumptions you provide. Tax calculations are illustrative and may not reflect your specific situation. Consult a qualified financial planner or tax professional before making major financial decisions.
If RetireePlan helps you plan your retirement, consider giving it a ⭐ on GitHub!














