Finance Manager
Full-stack personal finance platform built with Flask and MongoDB, featuring Chart.js visual analytics, category budgeting, bcrypt authentication, and Docker Compose deployment.
Finance Manager started when tracking college and hostel expenses across messy spreadsheets became unsustainable.
I wanted complete control over my financial data without handing banking passwords and transaction history to commercial aggregators. I needed an intuitive dashboard tailored to personal budgeting, category caps, and spending visibility.
I built Finance Manager as a full-stack Flask and MongoDB application deployed via Docker.
Architecture and core capabilities
The application is designed around simple data models, responsive visual reporting, and strict session isolation:
1. Transaction ledger and category budgeting
The core accounting engine manages day-to-day income and expenses:
- Transaction tracking: records deposits and withdrawals with custom tags, payment method tags (UPI, cash, cards), and note attachments.
- Category budgets: allows users to define monthly budget thresholds per expense category (food, academics, transit) with color-coded visual progress indicators that alert users when approaching limits.
- Dynamic filtering: lets users query transactions by date ranges, categories, and payment types without reloading pages.
2. Financial analytics and reporting (Chart.js)
To make spending patterns actionable, the backend aggregates data with PyMongo and feeds interactive Chart.js visualizations:
- Monthly expense trends: compares month-over-month burn rates.
- Category breakdown: donut and bar graphs displaying percentage allocation across necessities and discretionary spending.
- Cash flow projections: estimates month-end balances based on recurring transactions and current daily burn rates.
3. Security and access controls
Because financial data is sensitive, security was engineered from the beginning:
- Passwords hashed with
bcryptusing cryptographic salts. - Rate limiting on authentication routes (login, registration) to mitigate automated brute-force attempts.
- Secure
HttpOnlyandSameSitesession cookies to prevent cross-site scripting (XSS) token theft. - Role-based administration: separate admin portal for user management and audit logging, requiring secondary password confirmation before altering user privileges.
- Email alert integration: uses the Resend API to deliver automated security notifications and budget overrun warnings directly to user inboxes.
4. Containerized deployment
The project is fully containerized for easy self-hosting:
docker-compose.ymlorchestrates the Flask web service and MongoDB 6.0 with persistent data volumes.- Production WSGI configurations: uses Gunicorn on Linux and macOS environments, with Waitress for native Windows execution.
Why it stayed
I used this application to manage my finances throughout college.
When you use your own software every single day, you quickly notice friction in forms, misleading chart aggregations, or slow queries. Keeping the application running smoothly for years reinforced the value of solid database modeling, pragmatic security habits, and reliable local deployment.