Skip to content
widaproPublic

About

Automated personal finance tracker

Resources

Stars

1 star

Watchers

0 watching

Forks

Latest commit

 

History

1 Commit

Folders and files

Repository files navigation

WFin

Automated personal finance tracker that syncs transactions from your banks and provides a clean, self-hosted web interface.

Self-Contained & Privacy Focused: Runs in a single Docker container. Your data stays on your machine. Bank credentials are encrypted.

License Python Docker

🌟 Features

  • 🔄 Automated Sync: Fetches transactions daily (supports thousands of US/Canadian banks).
  • 🔒 Secure Storage: Credentials are encrypted locally. No usage of third-party cloud DBs.
  • 🧠 Smart Categorization:
    • Rules Engine: Create powerful regex-based rules to auto-categorize transactions.
    • Direction Aware: Apply rules specifically to income, expenses, or both.
    • Preview Mode: Test your rules against existing transactions before saving.
  • 🌗 Dark Mode: Beautiful, responsive UI with automatic or manual dark theme.
  • 📊 Dashboards: Real-time spending stats, income vs. expense tracking, and category breakdowns.
  • 🐳 One-Click Deploy: Runs completely within Docker.

🚀 Quick Start

Prerequisites

  • Docker & Docker Compose installed on your machine.
  • A SimpleFIN Setup Token (Get one for ~$15/year at bridge.simplefin.org).

Installation

  1. Clone the repository:

    git clone https://github.com/widapro/wfin.git
    cd wfin
  2. Start the Application:

    docker-compose up -d
  3. Access the Web UI: Open http://localhost:80 in your browser.

Initial Configuration

  1. Go to the Settings page (click the ⚙️ gear icon).
  2. Enter your SimpleFIN Setup Token.
  3. Click Connect. The system will verify the token and store a secure access URL.
  4. Go back to the Dashboard and click Sync Now.

🛠 Usage Guide

Categorization Rules

The proprietary rules engine allows you to keep your ledger clean:

  1. Navigate to Settings > Categorization Rules.
  2. Click Create New Rule.
  3. Pattern (Regex): Enter a keyword or regex (e.g., Uber.*Eats or just Starbucks).
  4. Category: Choose a target category.
  5. Preview: See which past transactions match your rule immediately.
  6. Apply: Save and apply to historic/future transactions.

Filters & Search

On the main dashboard:

  • Filter by Bank (if you have multiple connected).
  • Filter by Account (Credit, Checking, Savings).
  • Sort by any column (Date, Amount, Category).
  • "Excluded" transactions (like credit card payments/transfers) are dimmed and excluded from monthly totals.

🏗 Architecture

  • Backend: Python (FastAPI) + SQLAlchemy.
  • Frontend: Vanilla JS + CSS (No heavy framework build steps).
  • Database: SQLite (persisted in ./data/).
  • Scheduler: APScheduler (runs sync jobs).

The application is stateless except for the ./data/ directory, which is mounted as a volume.

🛡 Privacy & Security

  • Encryption: Your SimpleFIN access URL (which acts as a key) is encrypted using cryptography (Fernet) before being saved to the SQLite database.
  • Local Data: All transaction data resides in standard SQLite files on your host machine.
  • Isolation: The container makes outbound requests ONLY to bridge.simplefin.org to fetch data.

🤝 Contributing

Pull requests are welcome! For major changes, please open an issue first to discuss what you would like to change.

📄 License

MIT

About

Automated personal finance tracker

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages