Un outil en ligne de commande minimal pour gérer ses comptes personnels, écrit en Go.
# Compiler l'exécutable (signature automatique sur macOS)
make build
# Voir toutes les options disponibles
make help# Compiler l'exécutable
go build -o comptes cmd/comptes/main.go
# Sur macOS, signer le binaire (nécessaire pour macOS 15+)
codesign --sign - comptes
# Ou utiliser go run pour tester
go run cmd/comptes/main.go init
⚠️ Note macOS : Si vous voyez l'erreurdyld: missing LC_UUID load command, c'est parce que macOS 15+ exige cette commande de chargement. Mettez à jour Go vers 1.24+ pour une solution permanente, ou utilisezmake buildqui gère automatiquement la signature.
# 1. Configurer le projet (voir SETUP.md pour les détails)
# 2. Initialiser le projet (crée les fichiers de données)
./comptes init# Ajouter une transaction (format JSON)
./comptes add '{"account":"BANQUE","amount":-25.50,"description":"Achat gâteau","categories":["ALM"]}'
# Ajouter une transaction (format flags - plus simple)
./comptes add -a BANQUE -m -25.50 --desc "Achat gâteau" -c ALM
# Voir les transactions
./comptes list
# Voir les soldes
./comptes balance📖 Configuration requise : Consultez SETUP.md pour configurer les comptes, catégories et tags nécessaires.
comptes/
├── comptes # Exécutable compilé
├── go.mod # Module Go
├── cmd/
│ └── comptes/
│ └── main.go # Point d'entrée de l'application
├── internal/ # Code interne (non importable)
│ ├── domain/
│ │ └── models.go # Modèles de données (Account, Transaction, etc.)
│ ├── storage/
│ │ ├── interface.go # Interface Storage
│ │ └── json_storage.go # Implémentation JSON
│ └── service/
│ └── transaction.go # Logique métier des transactions
├── data/ # Données JSON (créé à l'exécution)
│ ├── accounts.json
│ ├── movements.json # Mouvements financiers (anciennement transactions.json)
│ ├── categories.json
│ └── tags.json
├── config/
│ └── config.yaml # Configuration YAML
└── docs/ # Documentation
├── README.md
├── mvp.md
├── cli-commands.md
├── data-models.md
└── file-structure.md
Le projet suit une architecture en couches pour permettre l'évolution du stockage des données :
main.go: Point d'entrée de l'application- Parse les arguments de ligne de commande
- Initialise les services et démarre l'exécution
models.go: Définit les structures de donnéesAccount: Comptes bancairesTransaction: Transactions financièresCategory: Catégories de transactionsTag: Tags de transactions
interface.go: InterfaceStorageavec méthodes CRUDjson_storage.go: Implémentation JSON (fichiers locaux)- Extensible vers SQLite ou autres systèmes
transaction.go: Service pour gérer les transactions- Validation des données
- Calcul des soldes
- Logique d'ajout/modification
- Fichiers JSON créés automatiquement
- Un fichier par type de données
- Sauvegarde automatique à chaque modification
# Compiler
go build -o comptes cmd/comptes/main.go
# Compiler avec optimisations
go build -ldflags="-s -w" -o comptes cmd/comptes/main.go
# Cross-compilation (exemple pour Linux depuis macOS)
GOOS=linux GOARCH=amd64 go build -o comptes-linux cmd/comptes/main.go# Lancer les tests (quand ils existeront)
go test ./...
# Tests avec couverture
go test -cover ./...# Ajouter une dépendance
go get github.com/example/package
# Nettoyer les dépendances
go mod tidy
# Vérifier les dépendances
go mod verify- accounts.json : Comptes avec soldes initiaux
- movements.json : Tous les mouvements financiers (anciennement transactions.json)
- categories.json : Catégories disponibles
- tags.json : Tags disponibles
- config/config.yaml : Configuration par défaut
- Comptes, catégories et tags de base
- Enregistrer entrées et dépenses
- Créer et gérer un budget mensuel
- Gérer les dépenses récurrentes
- Planifier des économies pour des dépenses futures
- Calculer des prévisions financières
- Simplicité : Utilisation des bibliothèques standard Go autant que possible
- Extensibilité : Architecture modulaire pour faciliter l'évolution
- Lisibilité : Configuration en YAML, données en JSON
- Validation : Pas d'enregistrement si les données ne sont pas valides
- Format : JSON pour les données, YAML pour la configuration
- Évolutivité : Interface abstraite pour permettre le passage à SQLite ou autres
- Structure : Fichiers séparés par type de données
- Localisation : Fichiers à côté de l'exécutable (MVP), migration vers
~/.config/comptes/prévue
init: Initialiser le projetadd: Ajouter un mouvement (avec support batch transactionnel)list: Lister les mouvements, catégories, tags, ou comptesedit: Modifier un mouvement existante (soft delete + nouveau)delete: Supprimer un mouvement (soft delete avec option --hard)undo: Annuler la dernière opération sur un mouvementbalance: Afficher les soldes des comptesbegin: Commencer une transaction batchcommit: Commiter une transaction batchrollback: Rollback une transaction batch
budget: Gérer le budget mensuelforecast: Calculer les prévisionscategories: Gérer les catégories (CLI)tags: Gérer les tags (CLI)accounts: Gérer les comptes (CLI)savings: Gérer les objectifs d'épargne- Import CSV
- Contexte partagé pour le mode transactionnel
- Filtres avancés pour
list(dates, montants, comptes) - Recherche dans les descriptions
Consultez docs/cli-commands.md pour la documentation complète.