Cette page décrit l’architecture feature-based du frontend Châtaigne, conçue
pour être modulaire, maintenable et évolutive avec Next.js 14.
Organisation Générale
Le frontend utilise une architecture feature-based plutôt que page-based, permettant une meilleure scalabilité et maintenabilité du code.Stack Technique
Framework & Language
• Next.js 14 - Framework React avec App Router• TypeScript - Type safety et meilleure DX
State Management
• TanStack Query - Gestion du cache et des requêtes API• Zustand - State management léger pour l’état client
UI & Styling
• Tailwind CSS - Styling utility-first• shadcn/ui - Composants UI réutilisables
Validation & Forms
• Zod - Validation de schémas runtime• React Hook Form - Gestion des formulaires performante
Couches Principales
1
App Directory (Routing)
Gestion du routing uniquement :
- Fichiers extrêmement légers
- Import direct des vues depuis les features
- Aucune logique métier
2
Features (Modules métier)
Modules autonomes et complets :
- Views : Composition visuelle uniquement
- Hooks : Toute la logique métier et TanStack Query
- Services : Communication avec les APIs
- Store : État client local (Zustand)
- Components : Éléments UI spécifiques
3
Shared (Ressources partagées)
Éléments réutilisables :
- Components : shadcn/ui et composants communs
- Hooks : Hooks partagés et requêtes communes
- Services : API client et services globaux
- Store : État global de l’application
Conventions de Nommage
Nous utilisons des conventions strictes avec kebab-case et des suffixes
spécifiques.
Fichiers
Tous les fichiers suivent le format kebab-case avec des suffixes spécifiques selon leur type :Components & Views
•
.component.tsx - Composants UI• .view.tsx - Pages/vues principalesLogique & Services
•
.hook.ts - Hooks custom• .service.ts - Services APIÉtat & Validation
•
.store.ts - Stores Zustand• .schema.ts - Schémas ZodConfiguration
•
.type.ts - Types TypeScript• .config.ts - ConfigurationExports TypeScript
- PascalCase pour les interfaces/types
- camelCase pour les schémas Zod
Gestion d’État Hybride
Le frontend utilise une approche hybride pour la gestion d’état :- TanStack Query : Pour tout l’état serveur (data fetching, cache, synchronisation)
- Zustand : Pour l’état client uniquement (UI state, préférences utilisateur)
Points d’Attention
Séparation des responsabilités
• Views : Composition et orchestration des composants• Hooks : Logique métier et gestion d’état• Services : Communication avec les APIs externes• Components : Composants présentationnels réutilisables
État hybride
• TanStack Query pour l’état serveur• Zustand pour l’état client uniquement• Jamais de duplication entre les deux
Feature autonome
• Chaque feature est indépendante• Minimisation des dépendances inter-features• Facilite le code splitting
Type safety
• TypeScript partout• Validation avec Zod• Inférence de types maximale