PerFi is a local-first personal finance desktop app built to make personal finance easier, more understandable, and more accessible.
The mission is simple: it should not cost extra money just to understand your own money.
PerFi aims to help people answer practical questions like:
- Where is my money going?
- What bills are recurring?
- Am I on track this month?
- How is my net worth changing?
- What does retirement look like from here?
- What does the next few months of cash flow probably look like?
PerFi is:
- Open source
- Actively under development
- A work in progress, not a finished product
Some areas are already useful today, while others are still rough, evolving, or being actively redesigned. Expect incomplete workflows, changing data models, and occasional sharp edges.
These screenshots use the isolated demo profile with fake data so real financial data stays separate.
- Account management for checking, savings, and credit-card style accounts
- Local transaction storage in SQLite
- Transaction search, filtering, and categorization
- Manual category editing
- Category rules for repeated auto-categorization
- Planning exclusion controls so certain transactions or categories do not affect forecasts
- CSV transaction import with format selection
- Import preview before committing data
- Duplicate detection during import
- Teller configuration for live bank sync workflows
- Investment CSV import
- Investment statement parsing support in the backend, including PDF/CSV-oriented import work
- Home dashboard with command-center style summaries
- Cash flow summary cards
- Spending by category
- Top merchants
- Spending trends
- Money flow / Sankey-style flow views
- Fixed-cost detection and recurring-spend analysis
- Detailed spending breakdown pages
- Net worth tracking
- Assets and liabilities management
- Net worth history snapshots
- Budget management
- Goal tracking
- Retirement profile and projection workflows
- Cash flow forecasting
- Seasonal pattern analysis
- Debt payoff planning
- Saved insights feed
- Filter-specific “Prepare Data for AI” export for insight sections
- Explainable forecast work, including confidence ranges and uncertainty bands
- Default local profile for your real data
- Secondary local profiles via
--profile <name> - Isolated screenshot/demo profile support
- Demo data seeding for non-default profiles
PerFi is built around a few principles:
- Local first: your financial data should primarily live on your machine
- Explainable over magical: forecasts and planning tools should be inspectable and understandable
- Practical over performative: the goal is useful personal finance decisions, not finance theater
- Accessible by default: people should not need to pay a subscription just to see where they stand
PerFi stores its app data locally.
- Main data store: local SQLite database (
perfi.db) - Default profile: your normal app data directory
- Additional profiles: separate app data directories under
profiles/<name> - Sensitive runtime data, if configured, can include local Teller-related connection metadata and tokens in the local database
This repo itself is source code. User financial data is intended to live locally, not in git.
- Frontend: React 19, TypeScript, Vite, Tailwind CSS
- Desktop shell: Tauri 2
- Backend: Rust
- Database: SQLite via
rusqlite - Charts: Recharts and D3 Sankey
- E2E tests: Playwright
High-level layout:
- src: React app
- src-tauri: Rust backend and Tauri app
- src-tauri\migrations: SQLite schema migrations
- tests\e2e: Playwright end-to-end tests
Key app areas:
- src\App.tsx: top-level routes
- src\components\Dashboard: home and dashboard surfaces
- src\components\Transactions: transaction list and controls
- src\components\Spending: spending analysis
- src\components\Budget: budget workflows
- src\components\NetWorth: asset/liability and net worth workflows
- src\components\Goals: goal tracking
- src\components\Retirement: retirement modeling
- src\components\Forecasting: forecast UI
- src\components\Insights: insights and AI export
- src\components\Settings: settings, Teller, imports, profile info
You need:
- Node.js 20+ recommended
- npm available on your machine
- Rust toolchain installed
- Tauri system prerequisites installed for your OS
For Windows, that generally means:
- Rust via
rustup - Microsoft Visual Studio C++ build tools
- WebView2 runtime
If Tauri prerequisites are missing, install them first using the official Tauri docs for your platform.
From the repo root:
npm installFrontend only:
npm run devDesktop app:
npm run tauri devnpm run tauri buildThe packaged Windows executable is built at:
- perfi.exe
Frontend E2E tests:
npx playwright install chromium
npx playwright testAlternate scripts:
npm run test:e2e
npm run test:e2e:headedFor this project, the current desktop validation gate is:
npm run tauri buildPerFi supports isolated local profiles so you do not have to mix real data and fake data.
Launch a separate profile like this:
D:\github\PerFi\src-tauri\target\release\perfi.exe --profile screenshotsThen open Settings and seed demo data into that non-default profile.
This keeps your default profile and live data separate from screenshot/demo data.
PerFi is still early. Some known realities:
- Some features are more polished than others
- Forecasting is heuristic and still evolving
- Teller/live sync setup is still developer-oriented
- Data models and UX may change
- There are still Rust warnings and unfinished backend surfaces in planning-related modules
- The app should be treated as experimental software, not production-grade financial infrastructure
PerFi is intended to be open source and hackable.
If you want to contribute, the most useful areas are:
- reliability and correctness
- import quality
- forecasting improvements
- UI/UX polish
- data quality tools
- tests and regression coverage
Most people do not need more finance complexity. They need more clarity.
PerFi exists because basic financial understanding should be easier:
- easier to import and review your own data
- easier to understand cash flow
- easier to see recurring obligations
- easier to plan savings and retirement
- easier to trust what the software is telling you
And it should not require paying extra money just to know how your own finances are doing.














