https://github.com/lizardcat/personal-finance-tracker
WIP - A personal finance management application built with Flask, inspired by YNAB (You Need A Budget) principles.
https://github.com/lizardcat/personal-finance-tracker
personal-finance-tracker python
Last synced: 5 months ago
JSON representation
WIP - A personal finance management application built with Flask, inspired by YNAB (You Need A Budget) principles.
- Host: GitHub
- URL: https://github.com/lizardcat/personal-finance-tracker
- Owner: lizardcat
- License: mit
- Created: 2025-09-10T17:39:46.000Z (10 months ago)
- Default Branch: master
- Last Pushed: 2025-11-24T23:43:06.000Z (7 months ago)
- Last Synced: 2025-11-28T04:35:39.114Z (7 months ago)
- Topics: personal-finance-tracker, python
- Language: Python
- Homepage: https://student-finance-tracker.up.railway.app/
- Size: 289 KB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Personal Finance Tracker
[](https://student-finance-tracker.up.railway.app/)
A personal finance management app inspired by YNAB principles. Track your budget, expenses, and financial goals with multi-currency support.
Fair warning: this was mostly vibecoded. It works though.
## What It Does
Helps you manage your money with envelope-style budgeting. Allocate your income to categories, track spending, set financial milestones, and see where your money goes.
## Features
- **Budget Management**: Create categories and allocate money to them (YNAB-style)
- **Transaction Tracking**: Log income, expenses, and transfers with custom tags
- **Multi-Currency Support**: Handle multiple currencies with real-time exchange rates
- **Financial Milestones**: Set and track savings goals, debt payoff, or investment targets
- **Recurring Transactions**: Automate regular income or expenses
- **Account Reconciliation**: Match your accounts to real balances
- **Reports & Analytics**: View spending trends, category breakdowns, and monthly reports
- **Data Export**: Export your financial data in various formats
- **Mobile-Friendly**: Responsive UI that works on phones and tablets
## Tech Stack
- **Backend**: Flask (Python)
- **Database**: SQLAlchemy with PostgreSQL/SQLite
- **Frontend**: Bootstrap with vanilla JavaScript
- **Auth**: Flask-Login with session management
- **Email**: Flask-Mail for notifications
- **Security**: Rate limiting, HTTPS enforcement, CSP headers
- **Deployment**: Railway (with Gunicorn)
## Project Structure
```
├── api/ # API endpoints
│ ├── auth.py # Authentication
│ ├── budget.py # Budget category management
│ ├── transactions.py # Transaction CRUD
│ ├── milestones.py # Financial goals
│ ├── reports.py # Analytics and reports
│ ├── reconciliation.py # Account reconciliation
│ └── exchange_rates.py # Currency conversion
├── services/ # Business logic layer
│ ├── budget_service.py
│ ├── report_service.py
│ ├── exchange_rate_service.py
│ ├── milestone_service.py
│ ├── recurring_service.py
│ ├── export_service.py
│ └── email_service.py
├── database/ # Database utilities
│ ├── init_db.py
│ ├── migrations.py
│ ├── seed_data.py
│ ├── backup_restore.py
│ └── budget_templates.py
├── templates/ # HTML templates
├── static/ # CSS, JS, images
├── models.py # SQLAlchemy models
├── app.py # Application factory
├── routes.py # Main routes
└── config.py # Configuration
```
## Local Setup
```bash
# Clone the repo
git clone https://github.com/lizardcat/personal-finance-tracker.git
cd personal-finance-tracker
# Install dependencies
pip install -r requirements.txt
# Set up environment variables
cp .env.example .env
# Edit .env with your settings
# Initialize database
python database/init_db.py
# Run the app
python run.py
```
## Configuration
Set these environment variables:
- `SECRET_KEY`: Flask secret key
- `DATABASE_URL`: PostgreSQL connection string (defaults to SQLite for dev)
- `EXCHANGE_RATE_API_KEY`: API key for currency conversion (optional)
- `MAIL_*`: Email server settings for notifications (optional)
## Testing
```bash
pytest tests/
```
## License
MIT