A full-stack Personal Finance Manager application with smart budgeting features, built with Angular, Flask, and PostgreSQL. Track expenses, manage budgets, monitor recurring bills, and achieve savings goals with beautiful Material Design UI.
- β Add, edit, and delete expenses
- πΈ Upload and attach receipt images
- π€ Automatic expense categorization using rule-based logic
- π Advanced filtering by category, date range
- π Visual expense tracking
- π° Create monthly/yearly budgets per category
- π Real-time budget usage tracking
β οΈ Visual indicators for budget status (good/warning/exceeded)- π― Budget progress monitoring
- π Track recurring bills (weekly/monthly/yearly)
- π Automatic reminders for upcoming bills
- β° Overdue bill notifications
- β Mark bills as paid with automatic next due date calculation
- π― Set and track savings goals
- π Progress visualization
- π΅ Easy contribution tracking
- π Goal completion status
- π Interactive charts and visualizations
- π Spending trends over time
- π₯§ Category-wise spending breakdown
- π Budget overview with progress bars
- π Recent expenses summary
- π JWT-based authentication
- π€ User registration and login
- π Protected routes and API endpoints
- π Token refresh mechanism
CursorFInanceDemo/
βββ frontend/ # Angular application
β βββ src/
β β βββ app/
β β β βββ core/ # Services, guards, interceptors, models
β β β βββ features/ # Feature modules (dashboard, expenses, etc.)
β β βββ environments/
β βββ package.json
βββ backend/ # Flask application
β βββ api/ # API blueprints
β βββ models.py # Database models
β βββ utils/ # Utility functions
β βββ app.py # Application entry point
βββ database/ # Database scripts
βββ init.sql # Schema definition
βββ seed.sql # Seed data
- Node.js 18+ and npm
- Python 3.8+
- PostgreSQL 12+
# Create database and user
sudo -u postgres psql
CREATE DATABASE financedb;
CREATE USER financeuser WITH PASSWORD 'financepass';
GRANT ALL PRIVILEGES ON DATABASE financedb TO financeuser;
\q
# Initialize schema and seed data
cd database
psql -U financeuser -d financedb -f init.sql
psql -U financeuser -d financedb -f seed.sqlcd backend
# Create virtual environment
python -m venv venv
source venv/bin/activate # On Windows: venv\Scripts\activate
# Install dependencies
pip install -r requirements.txt
# Configure environment (copy and edit)
cp .env.example .env
# Edit .env with your database credentials
# Run the application
python app.pyBackend will run on http://localhost:5005
cd frontend
# Install dependencies
npm install
# Run development server
npm startFrontend will run on http://localhost:4200
Open your browser and navigate to http://localhost:4200
Demo Account:
- Email:
demo@financeapp.com - Password:
demo123
Or create a new account using the registration form.
- Angular 17 - Modern web framework
- Angular Material - Material Design components
- Chart.js & ng2-charts - Data visualization
- RxJS - Reactive programming
- TypeScript - Type-safe development
- Flask 3.0 - Python web framework
- Flask-JWT-Extended - JWT authentication
- Flask-SQLAlchemy - ORM
- PostgreSQL - Database
- Marshmallow - Object serialization
- Git - Version control
- npm - Frontend package management
- pip - Python package management
Beautiful, informative dashboard with charts and statistics
Easy expense tracking with receipt uploads and auto-categorization
Visual budget monitoring with progress indicators
Track multiple savings goals with progress visualization
# Frontend tests
cd frontend
npm test
# Backend tests
cd backend
pytest# Frontend build
cd frontend
ng build --configuration production
# Backend (use gunicorn)
cd backend
gunicorn -w 4 -b 0.0.0.0:5005 app:appPOST /api/auth/register- Register new userPOST /api/auth/login- Login userPOST /api/auth/refresh- Refresh tokenGET /api/auth/me- Get current user
GET /api/expenses- Get all expensesPOST /api/expenses- Create expensePUT /api/expenses/:id- Update expenseDELETE /api/expenses/:id- Delete expense
GET /api/budgets- Get all budgetsPOST /api/budgets- Create budgetPUT /api/budgets/:id- Update budgetDELETE /api/budgets/:id- Delete budget
GET /api/recurring-bills- Get all billsPOST /api/recurring-bills- Create billPOST /api/recurring-bills/:id/pay- Mark as paid
GET /api/savings-goals- Get all goalsPOST /api/savings-goals- Create goalPOST /api/savings-goals/:id/contribute- Add contribution
GET /api/dashboard/stats- Get statisticsGET /api/dashboard/spending-by-category- Category breakdownGET /api/dashboard/spending-trend- Spending trends
Contributions are welcome! Please feel free to submit a Pull Request.
This project is licensed under the MIT License.
Built with β€οΈ using Cursor AI
- Angular Material for the beautiful UI components
- Chart.js for data visualization
- Flask community for excellent documentation
- PostgreSQL for robust data management
For issues and questions, please open an issue on GitHub.
Note: This is a demonstration project. For production use, ensure proper security measures, environment variable management, and deployment configurations. Cursor Demo for Personal Finance Tracker