Skip to main content

💲 leggen

A self hosted Open Banking Dashboard, API and CLI for managing bank connections and transactions.

Having your bank data accessible through both CLI and REST API gives you the power to backup, analyze, create reports, and integrate with other applications.

Leggen demo

🛠️ Technologies

Frontend

  • React: Modern web interface with TypeScript
  • Vite: Fast build tool and development server
  • Tailwind CSS: Utility-first CSS framework
  • shadcn/ui: Modern component system built on Radix UI
  • TanStack Query: Powerful data synchronization for React

🔌 API & Backend

  • FastAPI: High-performance async API backend (integrated into leggen server)
  • EnableBanking: Open Banking data access for connecting to banks
  • APScheduler: Background job scheduling with configurable cron

📦 Storage

  • SQLite: for storing transactions, simple and easy to use

✨ Features

🎯 Core Banking Features

  • Connect to banks using EnableBanking (30+ EU countries)
  • List all connected banks and their connection statuses
  • View balances of all connected accounts
  • List and filter transactions across all accounts

🏷️ Categorization & Analytics

  • Categorize transactions with custom categories
  • Keyword-based learning: automatically categorizes future transactions matching the same description
  • Bulk categorization and removal by transaction description
  • Filter transactions by category (including uncategorized)
  • Analytics dashboard with spending-by-category breakdown
  • exclude_from_stats flag for categories like inter-account transfers

🔄 Data Management

  • Sync all transactions with SQLite database
  • Background sync scheduling with configurable cron expressions
  • Automatic database backups to S3-compatible storage, with restore via API

🔐 Authentication

  • Single-user authentication with JWT tokens
  • API key support for programmatic access

📡 API & Integration

  • REST API: Complete FastAPI backend with comprehensive endpoints
  • CLI Interface: Enhanced command-line tools with new options

🔔 Notifications & Monitoring

  • Discord and Telegram notifications for filtered transactions
  • Configurable transaction filters (case-sensitive/insensitive)
  • Account expiry notifications and pre-expiry warnings
  • Comprehensive logging and error handling

🚀 Quick Start

Prerequisites

  1. Create an Enable Banking account at https://enablebanking.com/
  2. Create an application in the Enable Banking Customer Portal as the image below. The redirect URL must use HTTPS and must end with /bank-connected. Enable Banking does not support HTTP.
  3. Set up your bank accounts following the Enable Banking Setup Guide

Enable Banking new application

Installation

Docker Compose

# Clone the repository
git clone https://github.com/elisiariocouto/leggen.git
cd leggen

# Create your configuration
mkdir -p data && cp config.example.toml data/config.toml
# Edit data/config.toml with your EnableBanking credentials

# Generate the [auth] section for your config
docker compose run --rm leggen-server /app/.venv/bin/leggen generate-auth-config
# Copy the output into data/config.toml

# Start all services
docker compose up -d

Configuration

Create a configuration file at ./data/config.toml:

# Required: Authentication
# Generate with: leggen generate-auth-config
# Docker Compose: docker compose run --rm leggen-server /app/.venv/bin/leggen generate-auth-config
[auth]
username = "admin"
password_hash = "YOUR_BCRYPT_HASH"
api_key = "YOUR_API_KEY"
jwt_secret = "YOUR_JWT_SECRET"
jwt_expiry_minutes = 60

[enablebanking]
application_id = "your-application-id"
key_path = "/path/to/private-key.pem"
# url = "https://api.enablebanking.com"

# Optional: Background sync scheduling
[scheduler.sync]
enabled = true
hour = 3      # 3 AM
minute = 0
# cron = "0 3 * * *"  # Alternative: use cron expression

# Optional: Discord notifications
[notifications.discord]
webhook = "https://discord.com/api/webhooks/..."
enabled = true

# Optional: Telegram notifications
[notifications.telegram]
token = "your-bot-token"
chat_id = 12345
enabled = true

# Optional: Transaction filters for notifications
[filters]
case_insensitive = ["salary", "utility"]
case_sensitive = ["SpecificStore"]

📖 Usage

Web Interface

Access the React web interface at http://localhost:3000 after starting the services.

API Service

Visit http://localhost:3000/api/v1/docs for interactive API documentation.

CLI Commands

leggen status              # Check connection status
leggen bank add            # Connect to a new bank
leggen balances            # View account balances
leggen transactions        # List transactions
leggen sync                # Trigger accounts sync

For more options, run leggen --help or leggen <command> --help.

⚠️ Notes

  • This project is in active development

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

leggen-2026.8.2.tar.gz (81.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

leggen-2026.8.2-py3-none-any.whl (104.6 kB view details)

Uploaded Python 3

File details

Details for the file leggen-2026.8.2.tar.gz.

File metadata

  • Download URL: leggen-2026.8.2.tar.gz
  • Upload date:
  • Size: 81.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.12.5 {"installer":{"name":"uv","version":"0.12.5","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for leggen-2026.8.2.tar.gz
Algorithm Hash digest
SHA256 ccc1d3a055b1d8bcc59dda324bbcbef0feea5bab1bc7f76f2102055a72b7896b
MD5 e8c60989b640120330790ac6b05007c7
BLAKE2b-256 3f4d41fbb5ae4a0fbd342c5ae4b74977dc489345a3be6ef5b1dedf83cf3a28ba

See more details on using hashes here.

File details

Details for the file leggen-2026.8.2-py3-none-any.whl.

File metadata

  • Download URL: leggen-2026.8.2-py3-none-any.whl
  • Upload date:
  • Size: 104.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.12.5 {"installer":{"name":"uv","version":"0.12.5","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for leggen-2026.8.2-py3-none-any.whl
Algorithm Hash digest
SHA256 1eb6834e7d798e4ea7a88e675dfe09a3dbe87afe059048dae783d3e52924fbd6
MD5 be32f1fc893c165dc4ac1d545fae2e57
BLAKE2b-256 f00d41fd271ae8b53d20f81e38b9a883c8769c10d4e21370d85558185f54a2fd

See more details on using hashes here.

Release history Release notifications | RSS feed

This release

2026.8.2 This release

2 files

2026.8.1

2 files

2026.8.0

2 files

2026.3.5

2 files

2026.3.4

2 files

2026.3.3

2 files

2026.3.2

2 files

2026.3.1

2 files

2026.3.0

2 files

2026.2.0

2 files

2026.1.0

2 files

2025.11.0

2 files

2025.10.2

2 files

2025.10.1

2 files

2025.10.0

2 files

2025.9.26

2 files

2025.9.25

2 files

2025.9.24

2 files

2025.9.23

2 files

2025.9.22

2 files

2025.9.21

2 files

2025.9.20

2 files

2025.9.19

2 files

2025.9.18

2 files

2025.9.17

2 files

2025.9.16

2 files

2025.9.15

2 files

2025.9.14

2 files

2025.9.13

2 files

2025.9.12

2 files

2025.9.11

2 files

2025.9.10

2 files

2025.9.9

2 files

2025.9.8

2 files

2025.9.7

2 files

2025.9.6

2 files

2025.9.5

2 files

2025.9.4

2 files

2025.9.3

2 files

2025.9.1

2 files

2025.9.0

2 files

0.6.11

2 files

0.6.10

2 files

0.6.7

1 file

0.6.6

1 file

0.6.5

1 file

0.6.4

1 file

0.6.3

1 file

0.6.2

1 file

0.6.1

1 file

0.6.0

1 file

0.5.0

1 file

0.4.0

1 file

0.3.0

1 file

0.2.3

1 file

0.2.2

1 file

0.2.1

1 file

0.2.0

1 file

0.1.1

1 file

0.1.0

1 file

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page