Aller au contenu principal

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

DossierRô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

DossierRô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

TypeEmplacement cible
Page routeapp/.../page.tsx ou src/pages/... selon application.
Composant pageProche de la page si usage unique.
Composant réutilisablecomponents/ ou src/components/.
Composant UI génériquecomponents/ui/ ou src/components/ui/.
Utilitaire purlib/ ou src/utils/.
Accès donnéeslib/ 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 ?