2.1 KiB
2.1 KiB
SpendingAnalysis
Desktop app to intake data from various sources and analyze spending habits. Built with Python, PySide6 (Qt), and SQLite.
Features
- CSV Import — drag-and-drop import wizard with configurable column mappings and duplicate detection
- Transaction Management — browse, filter, and categorize transactions inline
- Spending Analysis — trends, breakdowns, and forecasting charts
- Recurring Detection — identify recurring charges across accounts
- Cross-Account Transfers — automatic detection of transfers between accounts
- Rule-Based Categorization — auto-categorize transactions using custom rules
- Household Tracking — manage household members and shared expenses
- Dark / Light Themes — toggle between themes from the sidebar
Requirements
- Python 3.12+
Setup
# Clone the repo
git clone https://gitea.conlon.fun/andy/SpendingAnalysis.git
cd SpendingAnalysis
# Create a virtual environment and install
python -m venv .venv
.venv\Scripts\activate # Windows
# source .venv/bin/activate # macOS / Linux
pip install -e .
Running
With the virtual environment activated:
python -m src.main
The app stores its SQLite database at ~/.spending_analysis/spending.db. Default categories are seeded on first launch.
Running Tests
pip install -e ".[dev]"
pytest
Project Structure
src/
├── main.py # Application entry point
├── db.py # SQLAlchemy engine / session setup
├── seed.py # Default category seeding
├── models/ # SQLAlchemy models (account, category, transaction, rule, etc.)
├── services/ # Business logic (import, categorization, analysis, forecasting)
└── ui/ # PySide6 views and themes
├── main_window.py
├── sidebar.py
├── import_view.py
├── transactions_view.py
├── analysis_view.py
├── recurring_view.py
├── settings_view.py
└── themes/
tests/ # pytest test suite