ujusum:1-projet:8-architecture-frontend
Table des matières
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.
ujusum/1-projet/8-architecture-frontend.txt · Dernière modification : 2026/06/06 02:59 de 91.170.108.99