A comprehensive personal finance management web application built with Flask. Track your income, expenses, and generate detailed financial reports with a clean, responsive interface.
- Transaction Management: Add, edit, and delete financial transactions with ease
- Category Organization: Organize transactions by customizable categories
- Financial Reports: Generate detailed PDF reports with charts and summaries
- Data Export/Import: Backup and restore your financial data securely
- Responsive Design: Mobile-friendly interface using Bootstrap 5.1.3
- Local Asset Hosting: Self-hosted Bootstrap and Font Awesome for offline use
- Privacy-Focused: All data stored locally with no external transmission
- Python 3.7 or higher
- pip (Python package installer)
-
Clone or download the project
cd Money_Manager -
Install required dependencies
pip install flask reportlab
Note: SQLite3 is included with Python
-
Download static assets (Bootstrap & Font Awesome)
python styles_download.py
This automatically downloads all required CSS, JavaScript, and font files to the
static/directory. -
Start the application
python app.py
-
Access the web interface Open your browser and navigate to
http://localhost:5000
Money_Manager/
βββ app.py # Main Flask application
βββ styles_download.py # Asset download utility
βββ static/ # Static assets (CSS, JS, fonts)
β βββ css/
β β βββ bootstrap.min.css
β β βββ fontawesome.min.css
β βββ js/
β β βββ bootstrap.bundle.min.js
β βββ webfonts/ # Font Awesome fonts
βββ templates/ # HTML templates
βββ instance/ # Database and configuration files
βββ README.md # This file
The styles_download.py utility provides:
- Automatic Download: Bootstrap 5.1.3 and Font Awesome 6.0.0
- Local Hosting: Complete offline functionality
- Path Correction: Automatic Font Awesome font path fixing
- Integrity Validation: File size and existence verification
- Error Recovery: Comprehensive error handling and cleanup
- Transaction Tracking: Income and expense management
- Category System: Customizable transaction categories
- Search & Filter: Find transactions quickly
- Date Range Analysis: Track spending over time periods
- PDF Generation: Professional reports using ReportLab
- Data Backup: Database backup and restore functionality
- Export Options: Multiple data export formats
- Chart Integration: Visual spending analysis
- Local Storage: SQLite database stored locally
- No External Transmission: Complete data privacy
- Backup System: Secure data backup and restore
- Permission Management: Proper file access controls
- Flask: Web framework for the application
- ReportLab: PDF generation for financial reports
- SQLite3: Database (built into Python)
- Bootstrap 5.1.3: Responsive UI framework
- Font Awesome 6.0.0: Icon library
- jQuery: JavaScript functionality (included with Bootstrap)
- Navigate to the main dashboard
- Click "Add Transaction"
- Fill in transaction details (amount, category, description, date)
- Submit to save
- Go to "Reports" section
- Select date range and categories
- Choose report format (PDF/HTML)
- Generate and download
- Access "Categories" from the main menu
- Add, edit, or delete categories as needed
- Assign colors and descriptions for better organization
- Use the "Backup" feature in settings
- Export your database to a safe location
- Restore from backup when needed
If icons or styling don't appear correctly:
python styles_download.pyThis will re-download all required assets and fix any path issues.
For database problems:
- Use the backup/restore feature in the web interface
- Check the application logs for error details
- Ensure proper write permissions for the database file
Ensure the application has write permissions for:
- Database file creation (
instance/directory) - Static file downloads (
static/directory) - Log file generation (current directory)
If styles_download.py fails:
python styles_download.pyCheck the generated asset_download.log for detailed error information.
The application follows a clean Flask structure:
- Modular Design: Separate concerns for database, routes, and templates
- Bootstrap Integration: Responsive design with local assets
- SQLite Integration: Lightweight, serverless database
- Error Handling: Comprehensive logging and error management
- Routes: Define new routes in
app.py - Templates: Create HTML templates in
templates/ - Database: Extend schema as needed
- Static Assets: Add custom CSS/JS to complement Bootstrap
- Modify templates for UI changes
- Add custom CSS for branding
- Extend transaction categories
- Customize report formats
- Add new export options
FLASK_ENV: Set todevelopmentfor debug modeFLASK_APP: Set toapp.py(default)
- Database automatically created on first run
- Location:
instance/money_manager.db - Backup location: User-configurable
- Ensure all static assets are properly downloaded
- Test database backup/restore functionality
- Verify PDF report generation works
- Check responsive design on multiple devices
- Validate form inputs and error handling
- Follow PEP 8 Python style guidelines
- Use comprehensive error handling
- Include meaningful comments and documentation
- Test all functionality before submitting changes
- Check the troubleshooting section above
- Review application logs for error details
- Ensure all dependencies are properly installed
- Flask Documentation: flask.palletsprojects.com
- Bootstrap Documentation: getbootstrap.com
- ReportLab Documentation: reportlab.com
This project is designed for personal financial management. Feel free to modify and use according to your needs while respecting the included dependencies' licenses.
- SQLite is suitable for personal use (single user)
- Static assets are cached for improved performance
- PDF generation may be resource-intensive for large datasets
- Modern browsers with ES6 support
- Mobile-responsive design tested on major platforms
- Offline functionality when assets are locally hosted
Security Notice: This application stores all data locally and does not transmit financial information over the internet, ensuring your privacy and data security. Always keep regular backups of your financial data.