My App
Architecture/FSD

Introduction

Il n'y a pas de "meilleure" architecture absolue. Une architecture se choisit en fonction de l'envergure, de la taille de l'équipe et de la durée de vie du projet. Mettre en place une usine à gaz pour un MVP de deux mois est une erreur.

On va voir les deux standards actuels : l'approche par Feature et le Feature Sliced Design.

L'architecture Feature-Driven

L'approche classique par rôle technique (un dossier components, un dossier hooks, un dossier services) devient vite un enfer.
Si on veut modifier le panier, on doit ouvrir quatre dossiers différents.

La première étape vers un code propre est de regrouper les fichiers par domaine métier (les Features).

src/
├── components/    /* Uniquement l'UI générique (Button, Input) */
├── features/      /* Le code métier groupé par domaine */
│   ├── auth/
│   │   ├── LoginForm.jsx
│   │   ├── useAuth.js
│   │   └── authApi.js
│   └── cart/
│       ├── CartWidget.jsx
│       └── useCart.js
├── pages/         /* Les vues principales */
└── utils/

Avantages : C'est simple, intuitif, et on trouve tout ce qui concerne le "panier" au même endroit. Limites : Quand le projet devient énorme, les features commencent à s'importer entre elles (le panier importe l'auth, qui importe les produits). On se retrouve avec des dépendances circulaires croisées qui font crasher l'application.