--- title: MyFin created: 2026-06-07 updated: 2026-06-07 type: app tags: [catalogue, budgeting, python, django, finance, personnel, budget] confidence: medium contested: false sources: [https://selfh.st/apps/?tag=budgeting, https://github.com/afaneca/myfin, https://myfin.app/] --- # MyFin 🐍 > Application de **budgeting personnel** Ă©crite en **Python/Django**, conçue pour un usage familial ou individuel. Suivi de comptes, transactions rĂ©currentes, budgets, objectifs d'Ă©pargne et tableau de bord sobre. | MĂ©tadonnĂ©e | Valeur | | :--- | :--- | | **Site web** | https://myfin.app/ | | **GitHub** | https://github.com/afaneca/myfin | | **License** | AGPL-3.0 | | **Langage** | Python (Django) | | **Étoiles** | ⭐42 | | **DerniĂšre MAJ** | 2026-03-25 | | **CatĂ©gorie** | [[cat-budgeting]] | ## Description MyFin est une application web de **gestion de finances personnelles** Ă©crite en **Python avec Django** (full-stack : backend + templates Django + un peu de JS). Le projet vise Ă  fournir un outil **simple mais complet** pour suivre ses comptes, gĂ©rer ses budgets par catĂ©gorie, et visualiser ses finances sur un tableau de bord clair. C'est l'un des rares projets de budgeting en Python/Django Ă  cĂŽtĂ© d'ExpenseOwl (Flask). Les fonctionnalitĂ©s principales : **comptes** multiples (chĂšque, Ă©pargne, cartes, crĂ©dit, investissement), **transactions** (revenus/dĂ©penses/transferts) avec catĂ©gorisation, **budgets** mensuels par catĂ©gorie avec **alertes** en cas de dĂ©passement, **transactions rĂ©currentes** (salaires, abonnements, factures), **objectifs d'Ă©pargne** avec barre de progression et date cible, **catĂ©gories** hiĂ©rarchiques avec icĂŽnes, **tableau de bord** avec **vue d'ensemble** (solde total, revenus/mois, dĂ©penses/mois, taux d'Ă©pargne), **graphiques** (camembert des dĂ©penses par catĂ©gorie, Ă©volution du solde sur 12 mois, comparaison budget/rĂ©el), **multi-utilisateurs** natif (compte familial/partage), **import** CSV depuis banques, **export** CSV/Excel. L'**architecture Django** est un choix solide : ORM puissant, admin Django gratuit (pour la gestion), systĂšme d'auth mature, structure MVC Ă©prouvĂ©e. L'**UI** utilise les templates Django + Bootstrap (ou Tailwind selon la version) + Chart.js pour les graphes. Pas de build JS complexe, pas de SPA — l'interface se recharge normalement, ce qui est amplement suffisant pour un usage de gestion budget. L'**avantage** de MyFin sur Firefly III : bien plus **simple Ă  installer et utiliser** (interface moins riche mais plus directe), et la stack **Python** est familiĂšre Ă  beaucoup d'auto-hĂ©bergeurs. L'**inconvĂ©nient** : projet jeune (~42⭐), moins battle-tested — Ă  tester avant production critique. ## Installation ### Via Docker (recommandĂ©) ```yaml # docker-compose.yml services: myfin: image: ghcr.io/afaneca/myfin:latest container_name: myfin restart: unless-stopped depends_on: db: condition: service_healthy ports: - "8000:8000" environment: - DJANGO_SECRET_KEY=*** - DJANGO_DEBUG=false - DJANGO_ALLOWED_HOSTS=budget.example.com - DB_HOST=db - DB_PORT=5432 - DB_NAME=myfin - DB_USER=myfin - DB_PASSWORD=*** - DJANGO_TIME_ZONE=Europe/Paris healthcheck: test: ["CMD", "wget", "--spider", "-q", "http://localhost:8000/"] interval: 30s timeout: 10s retries: 3 db: image: postgres:16-alpine container_name: myfin-db restart: unless-stopped environment: - POSTGRES_DB=myfin - POSTGRES_USER=myfin - POSTGRES_PASSWORD=*** volumes: - myfin-db:/var/lib/postgresql/data healthcheck: test: ["CMD-SHELL", "pg_isready -U myfin -d myfin"] interval: 10s timeout: 5s retries: 10 volumes: myfin-db: ``` > ⚠ VĂ©rifier l'image exacte sur le [GHCR](https://github.com/afaneca/myfin/pkgs/container/myfin) (le tag `latest` peut Ă©voluer). ### Installation manuelle (Django) 1. **PrĂ©-requis** : Python 3.10+, pip, PostgreSQL 14+, Node.js 18+ (assets). 2. `git clone https://github.com/afaneca/myfin.git && cd myfin` 3. CrĂ©er un venv : `python3 -m venv venv && source venv/bin/activate` 4. `pip install -r requirements.txt` 5. Configurer `.env` ou `settings.py` (SECRET_KEY, DB, ALLOWED_HOSTS, TIME_ZONE). 6. Migrations : `python manage.py migrate` 7. CrĂ©er le superuser : `python manage.py createsuperuser` 8. `python manage.py collectstatic --noinput` 9. `python manage.py runserver` (dev) ou via Gunicorn/uWSGI (prod). 10. Reverse proxy Nginx/Caddy en front (HTTPS obligatoire). ## Configuration - **DJANGO_SECRET_KEY** : clĂ© Django critique — gĂ©nĂ©rer via `python -c "import secrets; print(secrets.token_urlsafe(50))"`. - **DJANGO_DEBUG=false** : obligatoire en production. - **Premier lancement** : se connecter avec le superuser créé, crĂ©er les comptes bancaires, configurer les catĂ©gories. - **Comptes** : crĂ©er un compte par produit bancaire, saisir le solde initial. - **CatĂ©gories** : crĂ©er l'arborescence, assigner des icĂŽnes. - **Budgets** : par mois, par catĂ©gorie. - **RĂ©currences** : configurer salaires, abonnements, factures rĂ©currentes. - **HTTPS** : obligatoire via reverse proxy (Traefik/Caddy) + `SECURE_SSL_REDIRECT=True` dans settings. - **Backups** : `pg_dump` quotidien + copie des mĂ©dias (reçus tĂ©lĂ©versĂ©s). - **Timezone Europe/Paris** : configurer pour des dates/heures correctes. ## Alternatives ### Open Source - [[app-actual-budget]] — rĂ©fĂ©rence local-first (TypeScript) - [[app-firefly-iii]] — gestion finances complĂšte (PHP) - [[app-sure]] — plateforme Elixir moderne - [[app-expenseowl]] — minimaliste Python (Flask) - [[app-monetr]] — alternative Go - [[app-budget-board]] — dashboard TypeScript - **Maybe** (Ruby) / **Perfin** (Go) — projets alternatifs ### PropriĂ©taires - **YNAB** — rĂ©fĂ©rence du zero-based (~14$/mois) - **Monarch Money** — UX premium (~99$/an) - **Mint** (ex-Intuit) — abandonnĂ© - **PocketGuard** — mobile-first ## SĂ©curitĂ© - **HTTPS obligatoire** via reverse proxy. - **DJANGO_SECRET_KEY** : gĂ©nĂ©rĂ© alĂ©atoirement (50+ caractĂšres), **ne jamais commit dans Git**. - **DJANGO_DEBUG=false** : dĂ©sactive les pages d'erreur verbeuses en prod. - **PostgreSQL** : user dĂ©diĂ©, mot de passe fort, limiter au rĂ©seau Docker interne. - **CSRF** : natif Django, ne pas dĂ©sactiver. - **Headers de sĂ©curitĂ©** : `SECURE_SSL_REDIRECT`, `SECURE_HSTS_SECONDS`, `SECURE_CONTENT_TYPE_NOSNIFF`, `X_FRAME_OPTIONS='DENY'` dans settings. - **2FA** : non natif, Ă  compenser via reverse proxy (Authelia) ou module tiers (django-otp). - **Backups 3-2-1** : `pg_dump` + mĂ©dias, tester la restauration. - **Updates Django** : suivre les releases de sĂ©curitĂ© (CVE), Django publie des patches rapides. - **Logs** : logs Django standards, intĂ©gration avec Sentry ou Grafana Loki. - **Admin Django** : restreindre l'accĂšs par IP ou via reverse proxy auth. ## Ressources - Site officiel : https://myfin.app/ - GitHub : https://github.com/afaneca/myfin - Documentation : https://github.com/afaneca/myfin/wiki - selfh.st : https://selfh.st/apps/?tag=budgeting ## Pages LiĂ©es - [[cat-budgeting]] — catĂ©gorie parente - [[app-actual-budget]] — concurrent direct - [[app-firefly-iii]] — rĂ©fĂ©rence (PHP, plus mature) - [[app-expenseowl]] — alternative Python (Flask, minimaliste) - [[app-sure]] — alternative Elixir - [[recettes-docker-compose]] — templates de dĂ©ploiement - [[securisation-home-lab]] — bonnes pratiques