--- title: DumbBudget created: 2026-06-07 updated: 2026-06-07 type: app tags: [catalogue, budgeting, typescript, finance, simple, minimaliste, docker] confidence: high contested: false sources: [https://selfh.st/apps/?tag=budgeting, https://github.com/ctf0/dumb-budget, https://dumbbudget.app/] --- # DumbBudget 🪙 > **DumbBudget** fait exactement ce que son nom suggère : du **budgeting volontairement simple et bête** (au sens affectueux). Pas d'algos, pas de synchro bancaire, pas de catégories infinies — juste un formulaire pour entrer revenus, dépenses, et voir où on en est. Une **app Node.js + SQLite** qui tient en quelques fichiers. | Métadonnée | Valeur | | :--- | :--- | | **Site web** | https://dumbbudget.app/ | | **GitHub** | https://github.com/ctf0/dumb-budget | | **License** | MIT | | **Langage** | TypeScript (Node.js / Express) | | **Étoiles** | ⭐27 | | **Dernière MAJ** | 2026-03-10 | | **Catégorie** | [[cat-budgeting]] | ## Description DumbBudget est né d'une frustration : les apps de budgeting modernes sont devenues **trop complexes** — catégories hiérarchiques, tags, règles automatiques, synchro bancaire, prévisions par IA... Pour 80% des gens, **il suffit d'un tableur amélioré**. DumbBudget incarne cette philosophie : **un revenu mensuel, des dépenses, un solde restant, point final**. L'interface propose un **dashboard** unique avec : **revenu total** du mois, **dépenses totales**, **solde restant** (gros chiffre vert ou rouge), **liste des dépenses du mois** (recherche/filtre/édition/suppression), **historique** mois par mois (consultable en lecture seule), et **export JSON** des données. C'est tout. Pas de catégories obligatoires, pas de graphiques fancy (juste quelques totaux). Les fonctionnalités clés incluent : **multi-comptes** (cash, banque, épargne), **multi-devises** (optionnel), **récurrences simples** (mensuelles, hebdomadaires), **notes** libres sur chaque transaction, **recherche** full-text, **totaux mensuels** automatiques, **zéro tracking**, **zéro télémétrie**, **sauvegarde SQLite** en un seul fichier copiable. L'**architecture** est volontairement minimale : **Node.js + Express + TypeScript + SQLite + EJS** (templates serveur). Pas de React, pas de build complexe, pas de Redis, pas de worker. Le projet tient en **moins de 1000 lignes de code** — c'est littéralement ce qui le rend maintenable par une seule personne et auditable en 30 minutes. DumbBudget est particulièrement adapté aux **personnes allergiques à YNAB/Mint/Rocket Money**, aux **étudiants** qui veulent juste suivre leurs 800€/mois, aux **couples** qui veulent un suivi partagé minimal, et aux **adeptes du "small software"** (philosophie de Calckey/Moon**). Si vous avez besoin d'un **tableur avec une UI** sans les limitations d'un tableur, c'est exactement ça. ## Installation ### Via Docker (recommandé) ```yaml # docker-compose.yml services: dumbbudget: image: ghcr.io/ctf0/dumb-budget:latest container_name: dumbbudget restart: unless-stopped ports: - "3847:3847" environment: - NODE_ENV=production - PORT=3847 - JWT_SECRET=ChangeM3_JwtSecret - DB_PATH=/data/dumbbudget.db - TZ=Europe/Paris volumes: - dumbbudget-data:/data healthcheck: test: ["CMD", "wget", "--spider", "-q", "http://localhost:3847/"] interval: 30s timeout: 10s retries: 3 volumes: dumbbudget-data: ``` ### Installation manuelle ```bash git clone https://github.com/ctf0/dumb-budget.git cd dumb-budget npm install npm run build cp .env.example .env # éditer les variables npm start # ou en dev : npm run dev ``` ## Configuration Variables d'environnement principales : - `PORT` : port d'écoute (défaut 3847) - `JWT_SECRET` : secret pour les sessions/JWT (obligatoire en prod) - `DB_PATH` : chemin du fichier SQLite (défaut `./data/dumbbudget.db`) - `DEFAULT_CURRENCY` : devise par défaut (EUR, USD, GBP...) - `TIMEZONE` : fuseau horaire pour les récurrences Les **récurrences** se créent via UI : transaction + fréquence (monthly/weekly) + date de fin. Chaque occurrence apparaît automatiquement dans le mois courant. **Pas de comptes utilisateurs multiples** : DumbBudget est mono-utilisateur par défaut (le créateur a accès, les autres ont une URL d'invitation read-only en option). ## Alternatives ### Open Source - [[app-expenseowl]] : encore plus minimaliste (Python/Flask, sans comptes) - [[app-wygiwyh]] : approche cash-flow un peu plus riche (Django) - [[app-actual-budget]] : bien plus puissant (envelope-based, synchro bancaire) - [[app-budget-board]] : dashboard read-only depuis un CSV - **Plain text accounting** (ledger, hledger, beancount) : pour les barbus de la compta ### Propriétaire - **PocketSmith** : budgeting avec projections long terme (freemium) - **Lunch Money** : app moderne orientée transactions bancaires - **Monarch Money** : budgeting familial avec synchro bancaire - **Toshl** : app mobile simple, freemium - **Un simple Google Sheet** : alternative honnête si vous n'avez besoin de rien d'autre ## Sécurité - Authentification par **JWT** (stateless tokens) ou session selon config - **Bcrypt** pour le hash des mots de passe - **Helmet.js** pour les headers HTTP sécurisés (HSTS, X-Frame-Options, etc.) - **CSRF** tokens sur les formulaires - **SQLite en fichier** : pas de service à protéger, juste sauvegarder le `.db` - **HTTPS obligatoire** via reverse proxy (Caddy, Traefik, Nginx Proxy Manager) - **Sauvegardes** : copier `/data/dumbbudget.db` quotidiennement - **Pas de dépendance réseau** au runtime : 100% offline-compatible - Code auditable en < 1h, pas de supply chain à risque (dépendances minimales) ## Ressources - [Dépôt GitHub](https://github.com/ctf0/dumb-budget) - [Démo en ligne](https://demo.dumbbudget.app/) (si disponible) - [Issues / feature requests](https://github.com/ctf0/dumb-budget/issues) - Auteur : [ctf0 sur GitHub](https://github.com/ctf0) ## Pages Liées - [[cat-budgeting]] — catégorie parente - [[recettes-docker-compose]] — recettes Docker Compose - [[app-expenseowl]] — alternative Python ultra-minimaliste - [[app-wygiwyh]] — autre app minimaliste (Django, cash-flow) - [[app-actual-budget]] — pour qui veut plus de fonctionnalités - [[app-budget-board]] — dashboard read-only complémentaire