====== 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.