====== Architecture Frontend NextJS 15 ====== ===== Objectifs ===== Le frontend constitue la couche de présentation de la plateforme. Objectifs : * SEO performant * Responsive Mobile / Tablet / Desktop * Accessibilité RGAA * Temps de chargement optimisés * Architecture modulaire * Réutilisation maximale des composants * Génération automatique du client API OpenAPI Technologies retenues : * NextJS 15 (App Router) * React 19 * TypeScript * Tailwind CSS * TanStack Query * React Hook Form * Zod * OpenAPI Generator * shadcn/ui ---- ====== Architecture globale ====== Frontend ├── Front Office │ ├── Extranet Propriétaire │ ├── Back Office │ └── Administration ---- ====== Structure du projet ====== src/ ├── app/ ├── components/ ├── features/ ├── services/ ├── hooks/ ├── stores/ ├── lib/ ├── types/ ├── providers/ ├── styles/ └── generated/ ---- ====== App Router ====== ===== Structure générale ===== app/ ├── (public) ├── (auth) ├── (client) ├── (owner) ├── (backoffice) └── api ---- ====== Front Office ====== ===== Pages publiques ===== (public) / /search /property/[slug] /about /contact /legal /privacy /terms ---- ===== Authentification ===== (auth) /login /register /forgot-password /reset-password /verify-email ---- ===== Espace Client ===== (client) /dashboard /profile /favorites /reservations /reservations/[id] /contracts /payments /messages /settings ---- ====== Extranet Propriétaire ====== (owner) /dashboard /properties /properties/[id] /calendar /reservations /revenues /contracts /invoices /messages /profile ---- ====== Back Office ====== (backoffice) /dashboard /properties /properties/create /properties/[id] /reservations /reservations/[id] /owners /owners/[id] /customers /customers/[id] /contracts /payments /crm /reports /settings ---- ====== Organisation métier ====== Chaque domaine métier devient une Feature. features/ auth/ users/ owners/ properties/ reservations/ contracts/ payments/ crm/ messaging/ reporting/ ---- ====== Exemple Feature ====== features/properties ├── api ├── components ├── forms ├── hooks ├── schemas ├── types └── pages ---- ====== Génération OpenAPI ====== ===== Client API ===== generated/ ├── api.ts ├── models.ts ├── services.ts └── schemas.ts ---- ===== Génération ===== openapi-generator-cli generate \ -i openapi.yaml \ -g typescript-fetch \ -o src/generated ---- ====== Gestion d'état ====== ===== TanStack Query ===== Utilisation : * Cache API * Synchronisation serveur * Pagination * Invalidation cache ---- ===== Exemple ===== useProperties() useProperty(id) useReservations() usePayments() ---- ====== Gestion des formulaires ====== ===== Stack ===== React Hook Form + Zod + OpenAPI DTO ---- ===== Exemple ===== PropertyFormSchema ReservationFormSchema CustomerFormSchema ---- ====== Design System ====== ===== Principes ===== * Mobile First * Atomic Design * Accessibilité * Dark Mode Ready * Réutilisable ---- ====== Tokens ====== ===== Espacements ===== xs sm md lg xl 2xl ---- ===== Rayons ===== sm md lg xl full ---- ===== Ombres ===== sm md lg xl ---- ====== Couleurs ====== ===== Primaire ===== Primary PrimaryForeground ---- ===== Secondaire ===== Secondary SecondaryForeground ---- ===== États ===== Success Warning Danger Info ---- ====== Bibliothèque de composants ====== ===== Layout ===== AppLayout DashboardLayout PublicLayout AuthLayout ---- ===== Navigation ===== Navbar Sidebar Breadcrumb Pagination Tabs ---- ===== Inputs ===== Input Textarea Select MultiSelect Checkbox Radio DatePicker FileUpload ---- ===== Data Display ===== Card Badge Avatar Table DataGrid Timeline Calendar ---- ===== Feedback ===== Alert Toast Modal Drawer Skeleton Spinner ---- ====== Écrans Front Office ====== ===== Accueil ===== Sections : * Hero Search * Destinations populaires * Derniers biens * Promotions * Témoignages ---- ===== Recherche ===== Composants : * Barre de recherche * Carte interactive * Liste résultats * Filtres ---- ===== Fiche Bien ===== Sections : * Galerie * Description * Équipements * Calendrier * Carte * Réservation ---- ===== Réservation ===== Étapes : - Choix dates - Informations client - Paiement - Signature - Confirmation ---- ====== Écrans Extranet Propriétaire ====== ===== Dashboard ===== Widgets : * Revenus * Réservations * Occupation * Alertes ---- ===== Mes Biens ===== Vue : * Cartes * Tableau ---- ===== Revenus ===== Graphiques : * Mensuel * Annuel * Par bien ---- ====== Écrans Back Office ====== ===== Dashboard ===== KPIs : * CA * Réservations * Taux occupation * Nouveaux clients ---- ===== Gestion des biens ===== Actions : * Créer * Modifier * Publier * Archiver ---- ===== Gestion clients ===== Actions : * Consulter * Modifier * Historique ---- ===== CRM ===== Pipeline : Prospect ↓ Qualifié ↓ Visite ↓ Négociation ↓ Client ---- ====== Parcours UX ====== ===== Parcours Client ===== Accueil ↓ Recherche ↓ Fiche Bien ↓ Réservation ↓ Paiement ↓ Signature ↓ Confirmation ---- ===== Parcours Propriétaire ===== Connexion ↓ Dashboard ↓ Mes Biens ↓ Revenus ↓ Export ---- ===== Parcours Gestionnaire ===== Dashboard ↓ Réservation ↓ Contrat ↓ Paiement ↓ Facturation ---- ====== Sécurité Frontend ====== ===== Auth ===== * JWT * Refresh Token * Auto Refresh ---- ===== Contrôle accès ===== ProtectedRoute RoleGuard PermissionGuard ---- ====== Performance ====== ===== Optimisations ===== * Server Components * Streaming * Lazy Loading * Image Optimization * ISR * Cache API ---- ====== Tests ====== ===== Unitaires ===== Vitest ---- ===== Composants ===== React Testing Library ---- ===== E2E ===== Playwright ---- ====== Structure finale ====== Nombre estimé : ^ Élément ^ Volume ^ | Pages | 80+ | | Composants | 150+ | | Features | 12 | | Formulaires | 40+ | | Hooks | 80+ | | API Calls | 250+ | ---- ====== Livrables générés ====== * Architecture Frontend * Design System * Bibliothèque UI * Arborescence complète * Parcours utilisateurs * Organisation des Features * Convention de développement ---- ====== Étape suivante ====== À partir de cette architecture Frontend, nous pouvons désormais produire : * Wireframes détaillés de tous les écrans * Maquettes UX basse fidélité * Maquettes UI haute fidélité (Figma) * Charte graphique complète * Design Tokens * Bibliothèque de composants Figma * Prototype cliquable complet * Plan de sprints Scrum (Sprint 0 à Sprint 20) Le prochain livrable recommandé est : **Dossier UX/UI complet (Wireframes + Maquettes + Design System Figma)** afin de permettre à l'équipe produit et aux designers de lancer immédiatement la phase de conception visuelle.