Files
2026-02-10 15:19:33 -05:00

71 lines
2.1 KiB
Markdown

# 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
```bash
# 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:
```bash
python -m src.main
```
The app stores its SQLite database at `~/.spending_analysis/spending.db`. Default categories are seeded on first launch.
## Running Tests
```bash
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
```