A powerful desktop application for managing and analyzing bank and credit card statements. Built with Electron, React, and TypeScript.
- Multi-format Support: Import PDF and CSV bank statements
- Auto-parsing: Automatically detects and parses statements from major Indian banks
- SBI, HDFC, ICICI, Axis, Kotak, PNB, Bank of Baroda, Canara, and more
- Duplicate Detection: Prevents importing the same transactions twice
- Email Integration: Fetch statements directly from Gmail via IMAP
- Expense Breakdown: Interactive pie/doughnut charts by category
- Income vs Expenses: Bar charts showing income, expenses, and investments over time
- Savings Trends: Line charts tracking monthly and cumulative savings
- Cash Flow Analysis: Track inflows, outflows, and running balance
- Top Merchants: See where you spend the most
- Spending Trends: Compare spending patterns across periods
- Export Options: Download charts as PNG or PDF
- Manage multiple bank accounts and credit cards
- Color-coded accounts for easy identification
- Separate analytics for each account type
- Consolidated view across all accounts
- Automatic transaction categorization based on keywords
- 20+ pre-configured expense categories
- Customizable categories with icons and colors
- Learn from user corrections
- All data stored locally on your device
- No cloud sync required
- SQLite database for reliability
- Full data export capabilities
- Node.js 18+
- npm or yarn
# Clone the repository
git clone https://github.com/yourusername/finance-tracker.git
cd finance-tracker
# Install dependencies
npm install
# Start development server
npm run dev
# In another terminal, start Electron
npm run start# Build the application
npm run build
# Package for distribution
npm run packageNavigate to Accounts and click "Add Account". Choose between:
- Bank Account: For savings/current accounts
- Credit Card: For credit card statements
Go to the Upload page and:
- Select the account you're uploading for
- Drag & drop your PDF/CSV statement files
- The app will automatically parse and categorize transactions
The Dashboard shows an overview of your finances:
- Summary statistics (income, expenses, savings)
- Recent transactions
- Expense breakdown by category
- Monthly trends
For detailed analysis, visit the Analytics page.
The Transactions page lets you:
- View all transactions with filters
- Edit transaction details and categories
- Delete incorrect entries
- Export data as CSV or JSON
- State Bank of India (SBI)
- HDFC Bank
- ICICI Bank
- Axis Bank
- Kotak Mahindra Bank
- Punjab National Bank (PNB)
- Bank of Baroda
- Canara Bank
Works with any bank's CSV export. The parser automatically detects:
- Date column
- Description/Narration
- Debit/Credit amounts
- Balance
If your bank isn't supported, the generic parser will attempt to extract transactions. You can also:
- Export as CSV from your bank's net banking
- Use the generic CSV parser
- Frontend: React 18, TypeScript, Tailwind CSS
- Backend: Electron, Node.js
- Database: SQLite (better-sqlite3)
- Charts: Chart.js, Recharts
- PDF Parsing: pdf-parse
- CSV Parsing: PapaParse
- Email: IMAP (node-imap)
finance-tracker/
βββ src/
β βββ main/ # Electron main process
β β βββ main.ts # Main entry point
β β βββ preload.ts # Preload script for IPC
β β βββ database.ts # SQLite database manager
β β βββ categorizer.ts # Transaction categorization
β β βββ emailFetcher.ts# Gmail IMAP integration
β β βββ parsers/ # Statement parsers
β β βββ pdfParser.ts
β β βββ csvParser.ts
β βββ renderer/ # React frontend
β βββ components/ # Reusable UI components
β βββ pages/ # Page components
β βββ hooks/ # Custom React hooks
β βββ store/ # Zustand state management
β βββ types/ # TypeScript definitions
β βββ utils/ # Utility functions
β βββ styles/ # CSS styles
βββ assets/ # Static assets
βββ package.json
βββ README.md
To fetch statements from Gmail:
- Enable 2-Factor Authentication on your Google account
- Go to Google Account β Security β App Passwords
- Generate a new app password for "Mail"
- Use this password in the app's Email Configuration
Settings:
- Host:
imap.gmail.com - Port:
993 - TLS: Enabled
Customize categories in Settings β Categories:
- Add custom keywords for automatic categorization
- Choose icons and colors
- Create expense, income, transfer, and investment categories
All data is stored locally in:
- macOS:
~/Library/Application Support/finance-tracker/ - Windows:
%APPDATA%/finance-tracker/ - Linux:
~/.config/finance-tracker/
The database file is finance-tracker.db (SQLite).
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit changes (
git commit -m 'Add amazing feature') - Push to branch (
git push origin feature/amazing-feature) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
If you encounter any issues or have suggestions, please open an issue.