Structure des dossiers frontend
Statut
Document de cadrage frontend — version initiale.
État actuel visible
Le workspace contient deux principales applications frontend :
dmv-public/
app/
components/
lib/
public/
package.json
dmv_backoffice/
src/
components/
lib/
pages/
ui/
utils/
supabase/
package.json
dmv-public
| Dossier | Rôle visible |
|---|---|
app/ | Routes Next App Router, layouts, pages publiques, pages communales et espace utilisateur. |
app/components/ | Composants liés aux pages publiques : header, footer, mur, modales, filtres, drawer. |
components/ | Composants transverses ou spécialisés : espace acteur, mini-site, publications, UI. |
lib/ | Utilitaires, client Supabase, tracking, styles de boutons, stockage, recherche. |
public/ | Assets publics, manifest PWA, icônes, logo. |
dmv_backoffice
| Dossier | Rôle visible |
|---|---|
src/pages/ | Pages métier du backoffice : dashboard, acteurs, communes, publications, users, plans, stats, etc. |
src/components/ | Composants réutilisables et composants métier. |
src/components/layout/ | Composants de layout tels que page et panel. |
src/components/ui/ | Petits composants UI comme switch et disclosure. |
src/lib/ | Supabase, médias, stockage, styles de boutons. |
src/utils/ | Fonctions utilitaires et helpers de transformation. |
Principes cibles
- Garder les dossiers orientés usage plutôt que technologie seule.
- Éviter les composants globaux trop spécifiques.
- Documenter les composants réellement partagés.
- Isoler les clients données et appels métier.
- Prévoir un dossier UI commun si la mutualisation devient nécessaire.
- Éviter de multiplier des conventions différentes entre public et backoffice.
Convention recommandée
| Type | Emplacement cible |
|---|---|
| Page route | app/.../page.tsx ou src/pages/... selon application. |
| Composant page | Proche de la page si usage unique. |
| Composant réutilisable | components/ ou src/components/. |
| Composant UI générique | components/ui/ ou src/components/ui/. |
| Utilitaire pur | lib/ ou src/utils/. |
| Accès données | lib/ aujourd'hui, services API dédiés en cible. |
Points à clarifier
- Faut-il créer un package partagé de composants ?
- Quelle convention appliquer aux futures apps PlayLoop, AssoSuite et Mairie ?
- Quelle stratégie pour archiver ou supprimer les fichiers historiques ?
- Comment aligner les conventions TypeScript du public avec le JavaScript du backoffice ?