A comprehensive desktop application for tracking personal finances including income, expenses, multiple wallets, investments, and debts. Built with Tauri (Rust), React, TypeScript, and SQLite.
-
Dashboard: Real-time financial overview with key metrics
- Total balance across all wallets
- Monthly income and expenses
- Net change calculation
-
Wallet Management: Track multiple accounts
- Bank accounts, cash, digital wallets
- Multi-currency support
- Real-time balance updates
-
Income Tracking: Record all income sources
- Categorization by type
- Source tracking
- Date-based filtering
-
Expense Tracking: Monitor spending
- Category-wise breakdown
- Vendor information
- Automatic wallet balance updates
- Backend: Tauri 2 (Rust) with SQLite
- Frontend: React 19 + TypeScript + Vite
- Styling: Tailwind CSS
- State Management: TanStack Query
- Icons: Lucide React
- Database: SQLite (local, file-based)
- Node.js (v18 or higher)
- pnpm
- Rust (latest stable)
- Install dependencies:
pnpm install- Run in development mode:
pnpm tauri devThis command will:
- Start the Vite dev server (port 1420)
- Compile the Rust backend
- Launch the Tauri desktop application
pnpm tauri buildThe built application will be in src-tauri/target/release/.
├── src/ # React frontend
│ ├── components/ # React components
│ │ ├── Dashboard.tsx # Main dashboard
│ │ ├── WalletForm.tsx # Add/edit wallets
│ │ └── TransactionForm.tsx # Add income/expenses
│ ├── hooks/ # Custom React hooks
│ │ ├── useWallets.ts
│ │ ├── useIncome.ts
│ │ └── useExpenses.ts
│ ├── types/ # TypeScript types
│ ├── lib/ # Utilities
│ └── App.tsx # Root component
├── src-tauri/ # Rust backend
│ ├── src/
│ │ ├── db/ # Database setup
│ │ ├── handlers/ # Tauri command handlers
│ │ ├── models/ # Data models
│ │ └── lib.rs # Main entry point
│ └── Cargo.toml
└── package.json
- Click the "+ Wallet" button in the dashboard
- Fill in wallet details:
- Name (e.g., "Main Bank Account")
- Type (Bank, Cash, or Digital)
- Initial balance
- Currency (USD, EUR, GBP, INR)
- Click "Create Wallet"
- Click the "+ Income" button
- Select the wallet to receive the income
- Enter amount and category (e.g., "Salary", "Freelance")
- Optionally add source and description
- Select the date
- Click "Add income"
The wallet balance will be automatically updated.
- Click the "+ Expense" button
- Select the wallet to deduct from
- Enter amount and category (e.g., "Food", "Transport")
- Optionally add vendor and description
- Select the date
- Click "Add expense"
The wallet balance will be automatically updated.
The application uses SQLite with the following tables:
- wallets: Store wallet information and balances
- income: Track income transactions
- expenses: Track expense transactions
- investments: Track investment assets (future feature)
- debts: Track debts and loans (future feature)
Database file: finance_tracker.db (created automatically in the app directory)
# Frontend development
pnpm dev # Start Vite dev server
pnpm build # Build frontend
# Tauri development
pnpm tauri dev # Run app in dev mode
pnpm tauri build # Build production app
# Rust development
cd src-tauri
cargo check # Check Rust code
cargo clippy # Run linterSee CLAUDE.md for detailed architecture and development guidelines.
- Investment tracking (crypto, stocks, deposits)
- Debt management with payment schedules
- Budget planning and alerts
- Data visualization with charts
- Export to CSV/PDF
- Recurring transactions
- Multi-currency conversion
- Data backup/restore
This project is for personal use.