# BricoLoc Legacy Application Application monolithique Node.js/Express démontrant l'architecture legacy de BricoLoc (2013-2025). ## 🎯 Objectif Cette application reproduit intentionnellement les problèmes d'une architecture monolithique mal maintenue : - Bugs de sécurité (mots de passe en clair, SQL injection, etc.) - Anti-patterns architecturaux (monolithe, code dupliqué, etc.) - Problèmes de performance (pas de pagination, requêtes N+1, etc.) **⚠️ ATTENTION** : Cette application contient des vulnérabilités intentionnelles à des fins pédagogiques. Ne JAMAIS utiliser en production. ## 🏗️ Stack Technique - **Runtime** : Node.js 20+ - **Framework Web** : Express.js 4.x - **Template Engine** : EJS - **Base de données** : SQLite 3 - **Sessions** : express-session + connect-sqlite3 - **Upload** : multer ## 📦 Installation ```bash # Installer les dépendances npm install # Initialiser la base de données npm run db:init # Charger les données de test npm run db:seed ``` ## 🚀 Lancement ```bash # Mode développement (avec nodemon) npm run dev # Mode production npm start ``` L'application sera accessible sur `http://localhost:3000` ## 👤 Comptes de Test ### Compte Administrateur - **Email** : `admin@bricoloc.fr` - **Mot de passe** : `admin123` ### Compte Utilisateur - **Email** : `jean.dupont@email.fr` - **Mot de passe** : `password123` ## 📚 Documentation - [Roadmap Legacy](./docs/ROADMAP_LEGACY.md) - Planning détaillé du développement - [Liste des Bugs](./docs/BUGS.md) - Bugs intentionnels documentés - [Architecture](./docs/ARCHITECTURE.md) - Schéma de l'architecture ## 🐛 Bugs Intentionnels Cette application contient **18+ bugs intentionnels** : - ❌ Mots de passe en clair dans la base de données - ❌ Vulnérabilités SQL Injection - ❌ Pas de protection CSRF - ❌ Race conditions sur les réservations - ❌ Pas de pagination (problèmes de performance) - ❌ Et bien d'autres... Voir [BUGS.md](./docs/BUGS.md) pour la liste complète. ## 📁 Structure du Projet ``` apps/legacy-app/ ├── src/ │ ├── server.js # Fichier principal monolithique │ ├── database.js # Connexion SQLite │ ├── views/ # Templates EJS │ ├── public/ # Assets statiques │ └── uploads/ # Fichiers uploadés ├── data/ │ ├── bricoloc.db # Base SQLite │ └── seeds/ # Scripts SQL de seed ├── docs/ │ ├── ROADMAP_LEGACY.md │ ├── BUGS.md │ └── ARCHITECTURE.md └── package.json ``` ## 🔧 Scripts NPM ```bash npm run dev # Lancer en mode développement (nodemon) npm start # Lancer en mode production npm run db:init # Créer le schéma de base de données npm run db:seed # Charger les données de test npm run db:reset # Réinitialiser la base de données ``` ## 📝 Licence MIT - Projet pédagogique MAALSI