Sign inSign up

geertmeersman/tricount-web

By geertmeersman

•Updated 1 day ago

A self-hosted web frontend for Tricount (by bunq), built on top of the unofficial tricount-api.

Image
0

1.7K

geertmeersman/tricount-web repository overview

⁠Tricount Web

A self-hosted web frontend for Tricount⁠ (by bunq), built on top of the unofficial tricount-api⁠ Python client.

⁠Features

  • 👥 Multi-user with invite-only registration and admin panel
  • 🔒 Two-factor authentication (TOTP) via authenticator app
  • 🔗 Add tricounts via sharing token or create new ones directly
  • 💰 Balances, transactions, search and personal summary
  • ➕ Add and edit transactions with equal, ratio or custom amount splits
  • ✅ Register payments between members
  • 🔁 Recurring expenses (daily / weekly / monthly / yearly)
  • 📧 Weekly email digest with personal balances (opt-in, per-user language)
  • 🏷️ Color-coded labels with grouped overview
  • 🗑️ Bulk delete transactions
  • 👤 Display name and language preference per user
  • 🌙 Dark mode
  • 📤 Export transactions to CSV
  • 📊 Admin statistics dashboard
  • 🏥 Health check endpoint (/health)
  • 🔑 Forgot password / reset via email
  • ❓ Built-in help page
  • 🌍 Multilingual: NL / EN / FR / DE / ES
  • 📱 Mobile-friendly
  • 🔒 CSP, X-Frame-Options, bcrypt passwords

⁠Tags

TagDescription
latestLatest stable release
v1.2.3Specific release version
mainLatest commit on main branch (may be unstable)

⁠Quick start

Compose files are available in the deploy/⁠ folder of the repository.

git clone https://github.com/geertmeersman/tricount-web.git
cd tricount-web/deploy
mkdir data
docker compose up -d

Open http://localhost:5000⁠ and register the first account — it becomes admin automatically.

Use docker-compose.proxy.yml from the deploy/ folder, or add your own network config. Place behind nginx, Traefik or Caddy with HTTPS.

⁠Data

All data is stored in the mounted ./data/ directory:

FileDescription
tricount.dbSQLite database — users, tokens, recurring expenses, invites, labels

Back this directory up regularly. It contains your device credentials and all tricount tokens.

⁠Optional: weekly email digest

Add these to your .env to enable a weekly balance email every Monday at 08:00.

APP_BASE_URL=https://tricount.yoursite.com
SMTP_HOST=smtp.gmail.com
SMTP_PORT=587
[email protected]
SMTP_PASSWORD=your-app-password
[email protected]

Users opt in individually from their Profile page. If SMTP_HOST is not set, the job is skipped silently.

⁠Health check

The /health endpoint returns {"status": "ok", "db": true} (HTTP 200) or HTTP 503 when degraded. Add to your compose file:

healthcheck:
  test: ["CMD", "curl", "-f", "http://localhost:5000/health"]
  interval: 30s
  timeout: 5s
  retries: 3

⁠How it connects to Tricount

This app does not use your Tricount email or password. It connects as an anonymous device (UUID + RSA key pair), generated automatically when you register. Your username and password are local to this web UI only.

⁠Source & docs

Tag summary

Content type

Image

Digest

sha256:18f74850b…

Size

110 MB

Last updated

1 day ago

docker pull geertmeersman/tricount-web