Files
SpendingAnalysis/README.md
2026-02-10 15:19:33 -05:00

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