Skip to content

ha1fdan/expenseTracker

Repository files navigation

expenseTracker

A self-hosted expense tracking web app built with Flask. Track recurring and one-time expenses across multiple currencies, with a dashboard showing monthly/annual totals and breakdowns by category, frequency, and currency.

Features

  • OIDC authentication — works with any OpenID Connect provider (Google, Keycloak, Auth0, etc.)
  • Multi-currency — 34 supported currencies with live exchange rate conversion via open.er-api.com
  • Flexible frequency — monthly, quarterly, semi-annual, annual, or one-time expenses
  • Categories — Housing, Utilities, Insurance, Transportation, Food & Drink, and more
  • Dashboard charts — breakdown by category, frequency, currency, and top expenses
  • Filtering & search — filter expense list by category, frequency, currency, or active status

Screenshots

TODO

Getting Started

With Docker (recommended)

Copy the example env file and fill in your values:

cp .env.example .env
docker compose up -d

The app will be available at http://localhost:5000.

Without Docker

Requirements: Python 3.10+

python -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
cp .env.example .env
# edit .env
flask run

Configuration

All configuration is done via environment variables (or a .env file):

Variable Description Default
SECRET_KEY Flask secret key dev-secret-change-this
DATABASE_URL SQLAlchemy database URL sqlite:///expenses.db
OIDC_DISCOVERY_URL OIDC discovery endpoint URL
OIDC_CLIENT_ID OIDC client ID
OIDC_CLIENT_SECRET OIDC client secret
OIDC_REDIRECT_URI OAuth callback URL http://localhost:5000/auth/callback
BASE_CURRENCY Default base currency (ISO 4217) USD

OIDC provider examples

Provider OIDC_DISCOVERY_URL
Google https://accounts.google.com/.well-known/openid-configuration
Keycloak https://<host>/realms/<realm>/.well-known/openid-configuration
Auth0 https://<domain>/.well-known/openid-configuration

Docker image

Images are published to the GitHub Container Registry on every push to main and on version tags:

docker pull ghcr.io/ha1fdan/expensetracker:latest

Version tags follow semver (v1.2.31.2.3, 1.2, 1).

License

MIT

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Packages

 
 
 

Contributors