A personal finance management API built with Quasar, Litestar, and PostgreSQL. Features envelope budgeting, transaction categorization, line-item breakdowns, and SimpleFin integration for automatic bank account syncing.
- 🏦 Bank Account Integration - Automatic transaction sync via SimpleFin
- 💰 Envelope Budgeting - Allocate funds to income, expenses, and savings funds
- 📊 Transaction Management - Categorize, split, and track all transactions
- 🔍 Line Item Breakdowns - Break down transactions into individual items
- 📈 Budget Snapshots - Monthly rollover with historical tracking
- 🔄 Transfer Detection - Mark transfers and payments to exclude from budgets
- 🔐 User Authentication - Secure user management
The system uses envelope budgeting where you allocate money to different categories:
- Income: Expected incoming money (salary, etc.)
- Expenses: Fixed and flexible expenses
- Funds: Savings goals with priority-based allocation
At month-end, the system creates a snapshot capturing:
- Actual income vs expected
- Actual expenses vs expected
- Fund balances before/after allocation
- Surplus/deficit carried over
Transactions can be marked as:
transfer- Money moving between your accountscredit_payment- Credit card paymentsloan_payment- Loan payments- Regular transactions (default)
Transactions can be excluded from budget calculations.
To use SimpleFin for automatic bank syncing:
- Sign up at SimpleFin
- Get your access token
- Use the API /user/token endpoint to sync transactions
- Use the API /transactions/sync endpoint to sync transactions
Refer to the backend README for instructions on setting up and running the backend server.
Refer to the frontend README for instructions on setting up and running the frontend application.
- Backend: Python 3.12+, Litestar/FastAPI
- Frontend: Quasar Framework (Vue.js)
- Database: PostgreSQL with SQLAlchemy 2.0