Suivez votre patrimoine Visualisez votre net worth, suivez vos comptes et prenez de meilleures décisions financières. https://patrimoine.desord.re
  • Python 38.6%
  • TypeScript 32.6%
  • Kotlin 27.7%
  • Shell 0.5%
  • CSS 0.5%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Ymage fb1c3f11aa
All checks were successful
Security CI / stale-deps (push) Has been skipped
Security CI / security (push) Successful in 2m14s
Release patrimoine/android / verify-version (push) Successful in 1m59s
Android CI / android (push) Successful in 8m20s
Release patrimoine/android / android (push) Successful in 17m21s
Release patrimoine/android / test (push) Successful in 0s
Release patrimoine/android / build-release (push) Successful in 11m20s
chore(android): bump version to 1.3.0
2026-10-08 21:56:53 +02:00
.forgejo/workflows test(auth): pin the 401 codes the Android app classifies against the backend 2026-10-06 15:09:25 +02:00
android chore(android): bump version to 1.3.0 2026-10-08 21:56:53 +02:00
backend feat(budget): say when no account is counted in the spendable figure 2026-10-08 13:06:33 +02:00
data/container feat(containers)!: default the managed PostgreSQL to version 18 2026-10-03 22:32:35 +02:00
docs fix(android-dashboard): stop the breakdown sheet showing the wrong pool or nothing 2026-10-08 20:59:45 +02:00
frontend fix(budget): let the spendable header figure wrap on narrow screens 2026-10-08 14:21:29 +02:00
web feat(android-dashboard): choose which accounts count in the spendable figure 2026-10-08 17:32:37 +02:00
.dockerignore refactor(web): build and serve the merged site from one stage and vhost 2026-09-30 14:49:20 +02:00
.gitignore refactor(containers): move per-container build files under container/ folders 2026-09-30 14:49:09 +02:00
.gitleaksignore chore(ci): ignore two test password fixtures in the secret scan 2026-10-05 03:51:09 +02:00
.pre-commit-config.yaml chore(hooks): run pytest on push instead of on every commit 2026-10-05 18:17:16 +02:00
.tagme-authors.json chore(version): Release v1.3.0 2026-08-10 04:42:14 +02:00
AGENTS.md feat(web): merge the landing page into the documentation site 2026-09-30 14:49:19 +02:00
backup-db.sh fix(security): validate backup import fields and harden backup script 2026-07-19 05:48:35 +02:00
Caddyfile.example refactor(containers): rename DOCS_PORT and DOCS_DOMAIN to SITE_PORT and SITE_DOMAIN 2026-10-04 05:38:43 +02:00
CHANGELOG.md chore(version): Release v7.5.0 2026-10-08 21:56:42 +02:00
ci-local.sh feat(containers): let the frontend proxy to a backend at any URL 2026-10-03 12:35:54 +02:00
CLAUDE.md docs(agents): expand AGENTS.md engineering profile and add CLAUDE.md entry point 2026-08-04 22:44:54 +02:00
cliff.toml chore(cliff): fix default first tag version 2026-09-23 00:58:11 +02:00
docker-compose.e2e.yml refactor(containers)!: simplify the frontend's backend and limit settings 2026-10-03 22:04:30 +02:00
docker-compose.postgres.yml chore(compose): publish the PostgreSQL test port on loopback only 2026-10-05 01:39:26 +02:00
docker-compose.yml refactor(containers): stop deriving the web container's server_name from SITE_URL 2026-10-04 05:48:58 +02:00
LICENSE docs(license): add the MIT license file and mention it in Contributing 2026-10-05 02:35:32 +02:00
podman.sh refactor(containers): stop deriving the web container's server_name from SITE_URL 2026-10-04 05:48:58 +02:00
README.md docs(readme): add git-cliff and GPG signed badges 2026-10-05 17:24:02 +02:00
renovate.json feat(infra): add backup offsite sync, CI migration tests, Renovate config 2026-07-17 19:59:57 +02:00
security-scan.sh fix(security): make security-scan.sh exit non-zero on findings 2026-07-17 12:40:57 +02:00
TODO.md docs(todo): keep only the open backlog 2026-10-08 13:45:43 +02:00

Patrimoine

Self-hosted personal net-worth tracking application. Record account balances over time, visualize trends across interactive charts, manage budgets and investments, import existing data from spreadsheets, and export your data — all behind a secure, containerized deployment. Includes a native Android companion app covering the core workflow.

Backend CI Frontend CI Web CI Android CI Security CI

Backend build Frontend build Web build Android release

MIT License

Python FastAPI

SQLite PostgreSQL

TypeScript React

Kotlin Android

Linux Podman

Forgejo Conventional Commits git-cliff GPG signed

Features

  • Net-worth tracking — aggregate all accounts (banking, investments, savings) into a single evolution chart
  • Multi-currency — USD, GBP, CHF, JPY and more; auto-conversion via ECB rates (frankfurter.app) with historical rate lookup
  • Budget tracking — transactions by category, monthly budgets with progress bars, income/expense summary
  • Investment tracking — holdings, dividends, cost basis, ROI computation, portfolio summary
  • Interactive dashboard — 25 drag-and-drop reorderable cards (sparkline, debt ratio, diversity, currency exposure, best/worst month, savings goals, and more)
  • Advanced charts — 9 tabs: net worth (with CAGR projection + linear regression), per-account trends, stacked by type/category, allocation donuts, evolution bars, comparison, waterfall, drawdown, delta heatmap, savings goals progress
  • Snapshot grid — frozen header/column, color-coded values (green/red/neutral vs previous snapshot), full row editing
  • Import — CSV, ODS, XLSX with auto-detection of 7 French bank formats (CA, BNP, LCL, SG, CE, BP, CM); JSON backup import
  • Export — CSV, JSON, ODS, XLSX for full data portability
  • Android app — native Kotlin app with Jetpack Compose, OAuth2 PKCE auth, offline-ready, 24 screens (dashboard, accounts, snapshots, charts, budget, budget analytics, categories, tags, planned transactions, investments, savings goals, recurring snapshots, exchange rates, institutions, history, audit log, administration, system info, settings, import, export, analysis, login/register), plus biometric app lock, a weekly reminder notification, and a home screen widget — covers the core workflow, not full parity with the web app (no API tokens, webhooks, or chart annotations yet — see Android App Specification)
  • i18n — FR/EN/ES/DE with locale-aware formatting (dates, currency)
  • PWA — installable, offline support for cached data
  • Auth — OIDC via Authentik (or any OIDC provider), local auth (email/password), mobile PKCE auth, API tokens, webhooks
  • Security — audit logging, rate limiting, CSRF protection, container hardening, gitleaks CI scanning

See the Features page for what you can do with Patrimoine, or the feature tracker for implementation status.

Tech Stack

Component Technology
Backend FastAPI (Python 3.13) + uvicorn + SQLAlchemy 2.0 async
Frontend React 19 + Vite 8 + Tailwind CSS v4 + @dnd-kit + react-intl
Android Kotlin 2.3 + Jetpack Compose + Hilt + Room + Ktor + AppAuth
Database SQLite (WAL mode) or PostgreSQL (asyncpg, optional) — 30 tables
Queue arq + Redis (optional, asyncio fallback)
Auth OIDC via Authentik (or local email/password), mobile PKCE
Container Podman (rootless) + podman compose
CI/CD Forgejo Actions (lint, tests, audit, build images)
Frontend server nginx (SPA + reverse proxy)

See Architecture Overview for the full topology.

Quick Start

git clone <repo-url> patrimoine
cd patrimoine
mkdir -p ./data
cp backend/container/env.example backend/container/.env
# Edit backend/container/.env — set JWT_SECRET, configure OIDC or leave empty for local auth
# (frontend/container, web/container and data/container have optional templates too)
podman compose --env-file backend/container/.env up --build

Access at http://localhost:8080.

For local development without containers, see Getting Started.

Documentation

The documentation source lives in web/documentation/ (the landing page plus the User, Administrator and Developer Manuals), and the web container (web/container/) serves it as one site on SITE_URL: the landing page at /{locale}/, manuals under /{locale}/docs/.

Category Description
User Manual Features, installing as an app
Administrator Manual Quick start, deployment, configuration, backups, updating, security, troubleshooting
Developer Manual Architecture, development, conventions, build and CI, specs, UI, API reference

License

Released under the MIT License.