Files
2026-06-09 18:40:21 +02:00

138 lines
6.3 KiB
Markdown

---
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