A comprehensive web-based personal finance tracker built with Flask and SQLite. Track your income, expenses, and transfers with beautiful visualizations and persistent storage.
- Summary Cards: View total income, expenses, and net amount at a glance
- Pie Chart Visualization: See expense breakdown by category with percentages
- Transaction History: Complete list of all transactions with filtering and sorting
- Multiple Transaction Types:
- Expenses (with detailed categories)
- Income (salary, freelance, investments, etc.)
- Transfers (between accounts)
- Multiple Currencies: Support for USD, EUR, GBP, JPY, CAD, AUD, SGD
- Recurring Transactions: Set up automatic recurring expenses/income
- Detailed Notes: Add descriptions and notes to any transaction
Expenses: Food & Dining, Transportation, Housing & Rent, Utilities, Entertainment, Shopping, Healthcare, Education, Travel, Insurance, Taxes, Other
Income: Salary, Freelance, Investment, Business, Gifts, Refunds, Other
Transfers: Bank Transfer, Credit Card Payment, Savings, Investment, Other
- Set frequency: Weekly, Bi-weekly, Monthly, Quarterly, Yearly
- Configure start and end dates
- Automatic transaction generation
- Mobile-friendly interface
- Modern, clean UI with glassmorphism effects
- Smooth animations and transitions
-
Clone the repository:
git clone <repository-url> cd finance-tracker
-
Install dependencies:
pip install -r requirements.txt
-
Run the application:
python main.py
-
Open your browser and navigate to
http://localhost:5000
The application uses SQLite for persistent storage. The database file (finance_tracker.db) will be automatically created when you first run the application.
CREATE TABLE transactions (
id INTEGER PRIMARY KEY AUTOINCREMENT,
type TEXT NOT NULL, -- 'expense', 'income', 'transfer'
amount REAL NOT NULL,
currency TEXT DEFAULT 'USD',
category TEXT,
description TEXT,
date TEXT NOT NULL,
is_recurring BOOLEAN DEFAULT FALSE,
recurring_frequency TEXT,
recurring_start_date TEXT,
recurring_end_date TEXT,
created_at TEXT DEFAULT CURRENT_TIMESTAMP
);- Click "Add Transaction" on the dashboard
- Select transaction type (Expense/Income/Transfer)
- Enter amount and select currency
- Choose appropriate category (dynamically updates based on type)
- Add optional description/notes
- Set date (defaults to today)
- Optionally enable recurring transaction settings
- Click "Add Transaction"
- Dashboard: Overview with summary cards and pie chart
- Transaction Table: Complete history with delete functionality
- Charts: Visual breakdown of expense categories
- Delete transactions using the delete button in the transaction table
- All changes are automatically saved to the database
- User authentication and multi-user support
- CSV import from bank statements
- Export functionality (PDF, Excel)
- Budget tracking and alerts
- Advanced analytics and reporting
- Mobile app version
- Cloud synchronization
The application is designed to support CSV import from bank statements. Future versions will include:
- Automatic category detection
- Transaction matching
- Bulk import functionality
- Support for various bank formats
- Backend: Flask (Python)
- Database: SQLite
- Frontend: HTML5, CSS3, JavaScript
- Charts: Chart.js
- Styling: Custom CSS with glassmorphism effects
- Fork the repository
- Create a feature branch
- Make your changes
- Test thoroughly
- Submit a pull request
This project is open source and available under the MIT License.
For issues, questions, or feature requests, please open an issue on the GitHub repository.