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.

8.1 KiB

🏗️ BricoLoc Architecture Evolution

Projet de Démonstration d'Architecture Logicielle
Migration d'une architecture Legacy vers une architecture Moderne

License: MIT PRs Welcome


📋 Vue d'Ensemble

Ce projet démontre l'évolution architecturale d'une application de location d'outils (BricoLoc), en comparant deux implémentations :

  • 🕰️ Application Legacy : Simulation du système actuel (2013-2025) avec ses problématiques
  • Application Moderne : Nouvelle architecture avec résolution des problèmes et patterns modernes

🎯 Objectifs du Projet

  1. Démontrer la maîtrise de l'architecture logicielle (principes, patterns, best practices)
  2. Comparer concrètement deux approches architecturales
  3. Illustrer les bénéfices d'une refonte architecturale (performance, maintenabilité, scalabilité)
  4. Créer un portfolio technique de qualité professionnelle

🏛️ Architecture

Ce projet met en œuvre plusieurs principes et patterns architecturaux :

Principes

  • SOLID (Single Responsibility, Open/Closed, Liskov, Interface Segregation, Dependency Inversion)
  • Clean Architecture (indépendance des frameworks, testabilité)
  • DRY (Don't Repeat Yourself)
  • KISS (Keep It Simple, Stupid)
  • Separation of Concerns

Patterns

  • 🔹 Repository Pattern (abstraction de la couche data)
  • 🔹 Service Layer (logique métier centralisée)
  • 🔹 Dependency Injection
  • 🔹 Factory Pattern
  • 🔹 Observer Pattern (temps réel avec Supabase)

Pour plus de détails, voir ARCHITECTURE.md


📁 Structure du Projet

bricoloc-architecture-evolution/
├── docs/                           # 📚 Documentation complète
│   ├── architecture/               # Architecture & ADR
│   ├── specifications/             # Cahier des charges, exigences
│   ├── roadmap/                    # Planification & sprints
│   └── guides/                     # Guides de développement
│
├── apps/
│   ├── legacy-app/                 # 🕰️ Application Legacy
│   └── modern-app/                 # ⚡ Application Moderne
│
├── packages/                       # Code partagé
│   └── shared-types/
│
├── tools/                          # Scripts et générateurs
│
└── .github/                        # CI/CD et templates

🚀 Quick Start

Prérequis

  • Node.js 20+ (LTS)
  • pnpm 8+
  • WSL (pour développement Linux)
  • Git

Installation

# Cloner le repository
git clone https://github.com/[username]/bricoloc-architecture-evolution.git
cd bricoloc-architecture-evolution

# Installer les dépendances (mono-repo)
pnpm install

# Lancer l'application Legacy
pnpm --filter legacy-app dev

# Lancer l'application Moderne
pnpm --filter modern-app dev

🗺️ Navigation du Repository

📚 Documentation

Document Description
ARCHITECTURE.md Vue d'ensemble de l'architecture
Cahier des Charges Contexte, objectifs, périmètre
Exigences Fonctionnelles EF-01 à EF-23
Architecture Decision Records Justifications des choix techniques
Diagrammes C4 Modèle C4 (Context, Container, Component)
Roadmap Planning et phases de développement

🛠️ Guides de Développement

Guide Description
Setup WSL Configuration de l'environnement
Standards de Code Conventions et bonnes pratiques
Git Workflow Stratégie de branching
CONTRIBUTING Guide de contribution

🏗️ Applications

🕰️ Application Legacy

Stack Technique : Node.js + Express + EJS + SQLite

Caractéristiques :

  • Architecture monolithique
  • Couplage fort entre les couches
  • Design années 2010 (volontairement daté)
  • Bugs simulés (incohérence stocks, erreurs aléatoires)
  • Performance dégradée

👉 Documentation Legacy


Application Moderne

Stack Technique : Next.js 14 + TypeScript + Supabase + Tailwind + shadcn/ui

Caractéristiques :

  • Clean Architecture (couches découplées)
  • Patterns modernes (Repository, Service Layer, DI)
  • Design system cohérent (shadcn/ui)
  • Performance optimale (Lighthouse 95+)
  • Temps réel (Supabase Realtime)

👉 Documentation Moderne


📊 Comparaison

Aspect Legacy Moderne Amélioration
Performance (Lighthouse) 52 98 +88%
Temps de chargement 3.5s 0.4s -88%
Maintenabilité Faible Élevée +200%
Testabilité Difficile Facile +300%
Scalabilité Limitée Horizontale ♾️
Bugs 🐛 Multiples Zéro -100%

🎓 Compétences Démontrées

Architecture & Design

  • Principes SOLID
  • Clean Architecture
  • Design Patterns (Repository, Service, Factory, Observer)
  • Separation of Concerns
  • Dependency Injection

Frontend Moderne

  • Next.js 14 (App Router, SSR, SSG)
  • React 18 (hooks, context, composition)
  • TypeScript (types avancés, generics)
  • Tailwind CSS + Design System (shadcn/ui)
  • State Management (React Query, Zustand)

Backend & BDD

  • Next.js API Routes
  • Supabase (PostgreSQL, Auth, Realtime)
  • Prisma ORM (en local)
  • RESTful API design
  • Database modeling & optimization

DevOps & Outils

  • Mono-repo (pnpm workspaces)
  • Git workflow (feature branches, PR)
  • CI/CD (GitHub Actions)
  • Linting & Formatting (ESLint, Prettier)
  • Testing (Jest, React Testing Library)

📈 Roadmap

Phase 1 : Fondations (Semaine 1-2)

  • Structure du projet
  • Documentation architecture
  • Setup mono-repo

Phase 2 : Application Legacy (Semaine 3-4)

  • Setup Express + SQLite
  • Authentification
  • Catalogue & Réservation
  • Bugs simulés

Phase 3 : Application Moderne (Semaine 5-8)

  • Setup Next.js + Supabase
  • Architecture en couches
  • Authentification (Supabase Auth)
  • Catalogue & Réservation
  • Tests unitaires & intégration

Phase 4 : Comparaison & Démo (Semaine 9-10)

  • Documentation comparative
  • Métriques de performance
  • Vidéo de démonstration
  • Présentation finale

👉 Roadmap détaillée


🤝 Contribution

Ce projet est développé dans le cadre d'un projet académique en architecture logicielle.

Pour contribuer :

  1. Lire CONTRIBUTING.md
  2. Créer une branche feature (git checkout -b feature/ma-feature)
  3. Suivre les standards de code
  4. Soumettre une Pull Request

📄 License

MIT License - voir LICENSE pour plus de détails.


📞 Contact

Projet Académique - Architecture Logicielle
École : MAALSI
Année : 2025


🙏 Remerciements

  • BricoLoc (entreprise fictive) pour le cas d'étude
  • Supabase pour la plateforme backend moderne
  • Vercel pour l'hébergement Next.js
  • shadcn/ui pour les composants UI accessibles

Si ce projet vous aide, n'hésitez pas à lui donner une étoile !


Dernière mise à jour : Octobre 2025

bricolociaac