diff --git a/cdc.md b/cdc.md index 543d91c..1986cb0 100644 --- a/cdc.md +++ b/cdc.md @@ -23,6 +23,13 @@ L'application sera développée en utilisant les technologies suivantes: - Implémentation du SSR (Server-Side Rendering) pour améliorer le SEO et le temps de chargement initial - Utilisation des API Routes pour les endpoints spécifiques au frontend +- **SWR**: Bibliothèque React Hooks pour la récupération de données + - Mise en cache intelligente et revalidation automatique des données + - Stratégies de récupération optimisées (stale-while-revalidate) + - Gestion des états de chargement, d'erreur et de données + - Revalidation automatique lors du focus de la fenêtre et de la reconnexion réseau + - Déduplication des requêtes multiples vers le même endpoint + - **ShadcnUI**: Bibliothèque de composants UI pour un design cohérent - Composants accessibles et personnalisables - Thèmes adaptables pour le mode clair/sombre @@ -109,12 +116,36 @@ L'application suivra une architecture monorepo avec séparation claire entre le └── ... ``` -#### 2.2.2 Communication entre les Services +#### 2.2.2 Gestion du Workspace avec PNPM +Le projet utilise PNPM pour la gestion du workspace et des packages. PNPM offre plusieurs avantages par rapport à d'autres gestionnaires de packages: + +- **Efficacité de stockage**: Utilise un stockage partagé pour éviter la duplication des packages +- **Gestion de monorepo**: Facilite la gestion des dépendances entre les packages du monorepo +- **Performance**: Installation et mise à jour des dépendances plus rapides +- **Déterminisme**: Garantit que les mêmes dépendances sont installées de manière cohérente + +Exemples d'utilisation de PNPM dans le monorepo: + +```bash +# Exécuter une commande dans un package spécifique +pnpm --filter + +# Exemple : démarrer le frontend uniquement +pnpm --filter web dev + +# Installer une dépendance dans un package spécifique +pnpm --filter add + +# Installer une dépendance de développement dans un package spécifique +pnpm --filter add -D +``` + +#### 2.2.3 Communication entre les Services - API REST pour les opérations CRUD standard - WebSockets via SocketIO pour les communications en temps réel - Authentification via JWT pour sécuriser les échanges -#### 2.2.3 Architecture et Flux d'Interactions +#### 2.2.4 Architecture et Flux d'Interactions Le diagramme ci-dessous illustre les interactions entre les différents composants du système: ```mermaid @@ -182,7 +213,7 @@ Ce diagramme montre les principaux flux d'interactions: Cette architecture permet une séparation claire des responsabilités tout en offrant une expérience utilisateur fluide et réactive. -#### 2.2.4 Déploiement +#### 2.2.5 Déploiement - Conteneurisation avec Docker pour assurer la cohérence entre les environnements - CI/CD via GitHub Actions pour l'intégration et le déploiement continus - Infrastructure scalable pour gérer les pics de charge