Ledgrr — FastAPI backend (auth, accounts, transactions, budgets, AI, Plaid) for the Ledgrr app.
10K+
Ledgrr — FastAPI backend (auth, accounts, transactions, budgets, AI, Plaid) for the Ledgrr app.
ledgr-api is the FastAPI backend for Ledgrr — an AI-native, self-hostable personal-finance manager where you own your data.
It handles authentication, workspaces, per-resource RBAC, accounts & net worth, transactions (categorize / split / tag / transfer), CSV/OFX/QFX import with dedupe, the deterministic rules engine, budgets, recurring detection, goals, notifications, the pluggable AI categorization pipeline, and the super-admin-gated Plaid bank sync.
| Tag | Notes |
|---|---|
latest | Tracks the tip of main |
sha-<short> | Pinned commit (use in docker-compose.prod.yml) |
v0.1.0, … | Semver release tags |
uv for dependency managementasyncpg (PostgreSQL), asyncmy (MySQL), aioodbc + msodbcsql18 (SQL Server)app.core.storageThis image also runs the Arq worker process (categorization, import post-processing, Plaid sync, scheduled scans). Platform: linux/amd64.
This image is designed to run as part of the Ledgrr stack — it needs PostgreSQL, Redis, object storage, and the ledgr-nginx ingress. Use the project's docker-compose.prod.yml:
git clone https://github.com/YavLabs/ledgrr.git
cd ledgrr
cp .env.example .env
# edit .env — set APP_BASE_URL, JWT_SECRET, SETTINGS_ENC_KEY, SUPERADMIN_*, DB + storage creds
docker compose -f docker-compose.prod.yml pull
docker compose -f docker-compose.prod.yml up -d
docker compose -f docker-compose.prod.yml exec api uv run alembic upgrade head
The migration step is not optional on an upgrade, and it is not run for you. The app comes up, notices the database is behind, logs which revisions are pending, and waits — it will not half-create the schema underneath a migration that is about to create the same table. A fresh database needs no migration step: the app builds the schema on first boot and records it as current.
There is also yavadmin/ledgrr-app, which carries this image, the web UI and
nginx in one container, for single-host deployments.
All configuration is via the project .env. Required:
APP_BASE_URL — the public origin (drives emails, OAuth, CORS, Plaid webhook)DATABASE_DIALECT + DATABASE_* (or the bundled Postgres)MINIO_* / STORAGE_* (or the bundled MinIO)JWT_SECRETSETTINGS_ENC_KEY — encrypts admin-managed secrets at restSUPERADMIN_EMAIL, SUPERADMIN_PASSWORDRuntime secrets — SMTP, AI provider key, Plaid client_id/secret — are configured in the admin UI and stored encrypted (not in .env).
See .env.example for the full list.
Content type
Image
Digest
sha256:ad4c014da…
Size
163.4 MB
Last updated
about 1 month ago
docker pull yavadmin/ledgr-api