PersonalFinance is an MVP personal finance app with a native iOS client today and a planned web client.
The iOS app currently supports local-first manual finance tracking:
- Dashboard focused on net worth trend with time filtering (
MTD,YTD,6M,All) - Accounts as a primary surface:
- Grouped by account type (Savings, Investments, Pension, Credit Cards)
- Collapsible type sections with per-type totals
- Manual accounts:
- Savings
- Investments
- Pension
- Credit Cards
- Manual transactions:
- Income / Expense / Transfer
- Investment buy/sell transactions
- Customizable income/expense categories with emoji and color metadata
- Category picker in transaction forms and category metadata in transaction lists
- Derived positions for investment-like accounts
- Time-scoped transaction browsing with period navigation:
- Scope picker:
Year,Month,Week - Scope-aware section grouping:
- Year -> months
- Month -> days
- Week -> days
- Scope picker:
- Settings:
- Dashboard display currency preference
- Manage Categories (Income/Expense) with add/edit/delete and protected
Uncategorized
- Internal-only testing tools (Internal build flavor only), available as an
Internal Toolsentry underMore:- Populate random local data
- Drop local database and reset local preferences
ios/iOS app (Swift + SwiftUI)ios/Packages/DesignSystem/local Swift package for design system components/tokensdocs/architecture/architecture docsdocs/decisions/ADRsscripts/project scripts
Read these first:
AGENTS.mddocs/architecture/mobile-ios.mddocs/decisions/README.md- Active ADRs in
docs/decisions/
Run from repo root.
- Build:
scripts/ios.sh build - Test:
scripts/ios.sh test - Design system package tests:
scripts/ios.sh package-test - Everything:
scripts/ios.sh all - Build + install + launch in simulator:
scripts/ios.sh run-sim
- Build:
scripts/ios.sh build --configuration Internal - Test:
scripts/ios.sh test --configuration Internal - Run in simulator:
scripts/ios.sh run-sim --configuration Internal
You can also set BUILD_CONFIGURATION=Internal as an environment override.
- Manual-first workflows are intentionally prioritized while provider SDK sync is pending.
- Provider integrations remain out of scope for current local-only milestones.
- Cross-platform domain alignment is tracked via ADRs and canonical contract guidance.
- Android is out of scope for kickoff.
- Complex investment analytics and advanced multi-currency edge cases are deferred.