SpendScope is a full-stack personal finance web application for importing transactions, tracking spending, setting category budgets, and discovering useful patterns through an interactive dashboard.
SpendScope is designed as a practical final-term project with a real database, REST-style API, responsive frontend, analytics, CSV import, budgeting, and anomaly detection — without requiring a complicated installation stack.
- Add, edit and delete transactions
- Import transactions from CSV
- SQLite database
- Dashboard with income, expenses and balance
- Monthly spending trend
- Category spending breakdown
- Budget tracking
- Highest-spend category detection
- Unusual transaction detection using a statistical threshold
- Recent transactions table
- Responsive web UI
- REST-style JSON API
- No external database server required
- Backend: Python 3
- Web Server: Python
http.server - Database: SQLite
- Frontend: HTML5, CSS3, Vanilla JavaScript
- Charts: SVG-based charts rendered in the browser
- Data import: Python CSV module
- Analytics: Python standard library
This deliberately keeps the project dependency-light so it can run reliably on a normal college laptop.
SpendScope/
├── server.py
├── requirements.txt
├── README.md
├── .gitignore
├── LICENSE
├── data/
│ └── sample_transactions.csv
├── static/
│ ├── index.html
│ ├── app.js
│ └── styles.css
├── docs/
│ └── PROJECT_OVERVIEW.md
└── tests/
└── test_api.py
Open a terminal inside the project folder:
python server.pyThen open:
http://localhost:8000
python3 server.pyThen open:
http://localhost:8000
The application automatically creates spendscope.db on first run and seeds the included sample data.
CSV import expects these columns:
date,description,category,type,amount
2026-01-05,Salary,Income,income,50000
2026-01-06,Groceries,Food,expense,2400
Dates use YYYY-MM-DD.
With the server running in one terminal:
python tests/test_api.py- User authentication
- PostgreSQL support
- Recurring transactions
- Exportable PDF reports
- Cloud deployment
- More advanced forecasting
- Mobile/PWA version