Application web de gestion budgétaire personnelle développée avec React, Node.js/Express et l'implémentation de patrons de conception professionnels.
Équipe: Souleymane Sow, Moses Kasindi, Ruth Kegmo
Session: H2026
Statut: Phase II - Structure architecturale complétée
- À Propos
- Démarrage Rapide
- Architecture
- Patrons de Conception
- Documentation
- Installation Complète
BudgetMaster est une application web moderne permettant aux utilisateurs de :
Gestion des comptes - Créer compte et authentification sécurisée
Suivi des transactions - Enregistrer revenus et dépenses
Calcul automatique - Solde mis à jour en temps réel
Budget mensuel - Définir et suivre limite mensuelle
Recommandations - Messages d'aide intelligents
Rapports - Vue d'ensemble et répartition par catégorie
Export - Exporter les données en CSV
- Frontend: React 19 + Vite + Bootstrap 5
- Backend: Node.js + Express
- Authentification: JWT + bcryptjs
- Base de données: JSON (phase I), migration BDD prévue (phase IV)
- Node.js v16+
- npm v7+
- Git
# 1. Backend
cd backend && npm install && npm run dev
# 2. Frontend (nouveau terminal)
cd frontend && npm install && npm run devPour plus de détails, voir QUICK_START.md
bash test_api.shControllers (HTTP) → Services (Métier) → Repositories (Données) → Database
Components → Contexts/Hooks → Services API → APIClient → HTTP
1. Utilisateur ajoute une transaction
↓
2. Form → API POST /transactions
↓
3. Backend: validations → service métier → save DB
↓
4. Observable notifie changement
↓
5. Frontend Context rechargé
↓
6. Dashboard mis à jour automatiquement
Documentation complète: ARCHITECTURE.md
Une seule instance d'authentification dans l'application
// Utilisation
const authService = AuthService.getInstance();
await authService.login(email, password);Fichiers: backend/src/services/authService.js, frontend/src/services/AuthService.js
Interface simplifiée pour opérations complexes
// Simplifie tout:
const result = await apiClient.post('/transactions', data);
const summary = BudgetService.getSummary(userId);Fichiers: frontend/src/services/api/apiClient.js, backend/src/services/budgetService.js
Système d'événements pour réactivité
// Notifier automatiquement tous les observateurs
NotificationService.notify('transaction.added', data);Fichiers: backend/src/services/notificationService.js, frontend/src/services/Observer.js
Guide détaillé: DESIGN_PATTERNS.md
| Document | Contenu |
|---|---|
| DESIGN_PATTERNS.md | Explications patrons de conception |
| backend/README.md | Spécifiques backend |
| frontend/README_FRONTEND.md | Spécifiques frontend |
| documentation/SRS.md | Cahier des charges |
| documentation/ADR.md | Décisions architecturales |
git clone https://github.com/ssow520/BudgetMaster_MP6.git
cd BudgetMaster_MP6cd backend
# Installer les dépendances
npm install
# Configurer variables d'environnement
# (Le .env est déjà préconfiguré)
cat .env
# Démarrer le serveur
npm run devcd frontend
# Installer les dépendances
npm install
# Configurer variables
echo "VITE_API_BASE_URL=http://localhost:3001/api" > .env.local
# Démarrer l'app
npm run dev# Backend → http://localhost:3001/api/health
# Frontend → http://localhost:5173
# Ou tester l'API:
bash test_api.shPOST /api/auth/register Créer compte
POST /api/auth/login Se connecter
POST /api/auth/logout Se déconnecter
GET /api/auth/verify Vérifier token
POST /api/transactions Créer transaction
GET /api/transactions Lister toutes
GET /api/transactions/income Lister revenus
GET /api/transactions/expense Lister dépenses
GET /api/transactions/filter Filtrer
PUT /api/transactions/:id Mettre à jour
DELETE /api/transactions/:id Supprimer
GET /api/budget/summary Résumé
GET /api/budget/category-breakdown Répartition
GET /api/budget/recommendations Recommandations
POST /api/budget/set-monthly-limit Définir budget
GET /api/budget/comprehensive-report Rapport complet
GET /api/budget/export/csv Export CSV
bash test_api.sh # 11 tests d'endpointscd frontend
npm test # Tests unitaires
npm run test:watch # Tests en continucd backend
npm test # Tests unitaires
npm run test:watch # Tests en continuBudgetMaster_MP6/
├── ARCHITECTURE.md
├── DESIGN_PATTERNS.md
├── .gitignore
├── test_api.sh
│
├── backend/
│ ├── src/
│ │ ├── server.js (Point d'entrée)
│ │ ├── config/ (Configuration BD)
│ │ ├── controllers/ (HTTP handlers)
│ │ ├── services/ (Métier + patrons)
│ │ ├── repositories/ (Accès données)
│ │ ├── routes/ (Routes API)
│ │ ├── middleware/ (Auth, erreurs)
│ │ └── utils/ (Validators, logger, etc.)
│ ├── data/ (database.json)
│ ├── package.json
│ ├── .env
│ └── README.md
│
├── frontend/
│ ├── src/
│ │ ├── components/ (À implémenter)
│ │ ├── services/ (Patrons + API)
│ │ ├── context/ (React contexts)
│ │ ├── hooks/ (Hooks personnalisés)
│ │ ├── utils/ (Helpers)
│ │ ├── App.jsx
│ │ └── main.jsx
│ ├── public/
│ ├── package.json
│ ├── vite.config.js
│ └── README_FRONTEND.md
│
└── documentation/
├── SRS.md (Cahier des charges)
├── ADR.md (Décisions architecturales)
├── rapport.md
└── (diagrammes UML)
- Implémenter composants React principaux
- Intégrer authentification frontend
- Développer pages transactions et budget
- Tests et optimisations
- Préparation présentation
- Phase II (Actuelle): Architecture et base
- Phase III: Développement composants
- Phase IV: Finalisations et déploiement
Détails complets: IMPLEMENTATION_CHECKLIST.md
Authentification JWT avec tokens expiration
Mots de passe hashés avec bcryptjs
CORS configuré pour communication sécurisée
Validation serveur sur tous les endpoints
SessionStorage pour tokens (pas localStorage)
Isolation données par utilisateur
Temps réponse < 5 secondes
Vite build tool pour frontend rapide
API optimisée (sans ORM lourd)
Cache local des données (localStorage)
Compression prête pour production
- Créer une branche
git checkout -b feature/ma-feature- Développer et tester
npm run dev # Lancer serveur
npm test # Tests
npm run lint # Vérifier code- Commit avec messages clairs
git add .
git commit -m "[FEATURE] Description courte"- Push et Pull Request
git push origin feature/ma-feature- Architectures patterns guide: ARCHITECTURE.md
- Design patterns guide: DESIGN_PATTERNS.md
- Quick start guide: QUICK_START.md
- SRS specification: documentation/SRS.md
# Backend
npm run dev # Démarrage développement
npm start # Production
npm test # Tests
# Frontend
npm run dev # Démarrage
npm run build # Build production
npm run preview # Prévisualiser build
npm test # Tests- Base de projet structurée
- 3 patrons de conception implémentés
- Backend fonctionnel avec 20+ endpoints
- Frontend structure prête
- Authentification JWT sécurisée
- Documentation complète
- Test API disponible
Projet académique - LaSalle College
- Souleymane Sow - Lead Backend & Architecture
- Moses Kasindi - Frontend & Auth
- Ruth Kegmo - Dashboard & Budget Logic
Enseignant: Houssem Zouaghi
| Phase | Période | Statut | Livrables |
|---|---|---|---|
| I | 8-25 jan | Complétée | Setup projet |
| II | 26 jan-22 fév | En cours | Architecture & patterns |
| III | 23 fév-22 mars | À venir | Développement features |
| IV | 23 mars-17 avril | À venir | Finalisations & déploiement |
Cette projet couvre:
- Patrons de conception (Singleton, Façade, Observer)
- Architecture logicielle professionnelle
- Full-stack development (Frontend + Backend)
- Authentification et sécurité
- API REST design
- Git workflows
- Documentation professionnelle
# 1. Cloner
git clone https://github.com/ssow520/BudgetMaster_MP6.git && cd BudgetMaster_MP6
# 2. Lire le guide
cat QUICK_START.md
# 3. Démarrer
cd backend && npm install && npm run dev &
cd frontend && npm install && npm run dev
# 4. Visiter
# Frontend: http://localhost:5173
# Backend: http://localhost:3001Lisez QUICK_START.md pour instructions détaillées!
Bon développement!
Dernière mise à jour: 18 mars 2026