Skip to main content

Vue d’ensemble

Kit’Asso utilise des patterns cohérents pour structurer le code de manière prévisible et maintenable. Ce guide documente les 4 patterns principaux du projet.

Pattern 1 : Architecture des Modals

Structure Container/Form/Preview/Hook

Chaque modal complexe suit cette organisation :

Exemple : ToolModal

1. Container (index.tsx)

Responsabilités :
  • Orchestration (form vs preview)
  • Lazy loading des composants lourds
  • Gestion des états de chargement
  • Routing du modal (ouverture/fermeture)

2. Form Component (ToolForm.tsx)

Responsabilités :
  • Validation avec Zod
  • Gestion des inputs
  • Affichage des erreurs
  • UI du formulaire uniquement

3. Hook métier (useToolModal.ts)

Responsabilités :
  • Chargement des données
  • Appels API
  • Gestion des erreurs
  • Business logic

4. Types (types.ts)


Avantages du pattern

Separation of Concerns : UI, logique, data séparés
Testabilité : Chaque partie testable indépendamment
Réutilisabilité : Form peut être utilisé ailleurs
Performance : Lazy loading des composants lourds
Maintenabilité : Facile à comprendre et modifier

Pattern 2 : Forms avec React Hook Form + Zod

Setup standard

Validation complexe

Validation asynchrone


Pattern 3 : Custom Hooks

Hook de données (useAppData)

Hook de logique métier (useFavorites)

Hook avec debounce (useToolFilters)


Pattern 4 : Routes & Navigation

React Router v6 setup

Protected Routes


Checklist patterns

Avant de créer un nouveau composant complexe :
  • Container avec lazy loading
  • Form séparé avec React Hook Form + Zod
  • Hook métier avec logique isolée
  • Types définis dans types.ts
  • Preview component si besoin

Hook custom

  • Nom commence par use
  • Return objet avec noms explicites
  • Cleanup dans useEffect si nécessaire
  • Types de retour explicites
  • Documenté avec JSDoc

Form

  • Schema Zod défini
  • Validation côté client
  • Gestion erreurs affichée
  • Loading state sur submit
  • Accessible (labels, ARIA)

Route

  • Lazy loading si page lourde
  • Protected si nécessite auth
  • Error boundary
  • Loading state
  • Meta tags SEO

Ressources

Feature-Based

Organisation du code

API Layer

Abstraction GraphQL / Nhost

Hooks

Guide des hooks custom

Components

Composants partagés