You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
109 lines
3.0 KiB
Markdown
109 lines
3.0 KiB
Markdown
|
2 months ago
|
# 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
|