5.0 KiB
Story 5.4: Créer le dashboard principal avec navigation
Status: review
Acceptance Criteria
Given je suis connecté When j'accède au dashboard Then la navigation bottom bar est affichée (mobile) avec 4 onglets : Accueil, Matchs, Historique, Profil And la navigation top tabs est affichée (desktop) avec les mêmes sections And la zone de clic est min 44x44px (mobile) / 48x48px (desktop)
Given je suis sur mobile When je swipe gauche/droite Then je navigue entre les onglets And l'animation de transition est fluide (300ms)
Given je suis sur le dashboard When je pull-to-refresh Then les prédictions sont rafraîchies And un indicateur de chargement est affiché
Tasks / Subtasks
-
Créer la structure de navigation (AC: #1)
- Créer
src/app/(dashboard)/layout.tsx - Créer la navigation bottom bar pour mobile
- Créer la navigation top tabs pour desktop
- Utiliser shadcn/ui components (Tabs, Button)
- Configurer les zones de clic (44x44px mobile, 48x48px desktop)
- Créer
-
Créer les pages du dashboard (AC: #1)
- Créer
src/app/(dashboard)/accueil/page.tsx - Créer
src/app/(dashboard)/matchs/page.tsx - Créer
src/app/(dashboard)/historique/page.tsx - Créer
src/app/(dashboard)/profil/page.tsx - Utiliser le layout dashboard commun
- Créer
-
Implémenter la navigation mobile (AC: #2)
- Créer
src/components/navigation/BottomNav.tsx - Gérer le swipe gauche/droite
- Créer une animation fluide (300ms)
- Gérer l'état de l'onglet actif
- Optimiser les performances
- Créer
-
Implémenter la navigation desktop (AC: #1)
- Créer
src/components/navigation/TopTabs.tsx - Afficher les onglets horizontalement
- Gérer l'état de l'onglet actif
- Cacher sur mobile, afficher sur desktop
- Utiliser media queries CSS
- Créer
-
Implémenter le pull-to-refresh (AC: #3)
- Installer
@tanstack/react-querypour le cache - Créer
src/hooks/useRefresh.ts - Implémenter le pull-to-refresh avec
react-pull-to-refresh - Rafraîchir les prédictions lors du refresh
- Afficher un indicateur de chargement
- Installer
-
Créer les tests du dashboard (Tous AC)
- Tester la navigation sur mobile
- Tester la navigation sur desktop
- Tester le swipe gauche/droite
- Tester le pull-to-refresh
- Tester la responsivité
Dev Notes
Stack Technique
- Navigation: Custom components + React state
- Pull-to-refresh:
react-pull-to-refresh - State: React Query + Zustand
- UI: shadcn/ui + Tailwind CSS
File Structure
src/
├── app/
│ └── (dashboard)/
│ ├── layout.tsx
│ ├── accueil/page.tsx
│ ├── matchs/page.tsx
│ ├── historique/page.tsx
│ └── profil/page.tsx
└── components/
└── navigation/
├── BottomNav.tsx
└── TopTabs.tsx
References
- [Source: _bmad-output/planning-artifacts/epics.md#Story-5.4]
Dev Agent Record
Agent Model Used
GLM-4.7
Implementation Plan
- Créer la structure de navigation avec layout, bottom nav et top tabs
- Implémenter les pages du dashboard (accueil, matchs, historique, profil)
- Ajouter la navigation mobile avec swipe gauche/droite
- Intégrer le pull-to-refresh avec react-pull-to-refresh
- Créer des tests complets pour valider toutes les fonctionnalités
Debug Log
- ✅ Layout dashboard créé avec Next.js App Router
- ✅ BottomNav et TopTabs implémentés avec shadcn/ui
- ✅ Swipe navigation implémenté avec événements tactiles
- ✅ Pull-to-refresh intégré avec react-pull-to-refresh
- ✅ Tous les tests créés et passants (18 tests)
- ✅ Linting valide sans erreurs sur le code nouvellement créé
Completion Notes List
- Structure de navigation implémentée avec succès (layout, bottom nav, top tabs)
- 4 pages du dashboard créées (accueil, matchs, historique, profil)
- Navigation mobile avec swipe gauche/droite fonctionnelle
- Navigation desktop avec top tabs responsive
- Pull-to-refresh intégré avec React Query
- Tests complets créés et validés (18 tests passants)
- Code linté et conforme aux standards du projet
File List
src/app/(dashboard)/layout.tsxsrc/app/(dashboard)/accueil/page.tsxsrc/app/(dashboard)/matchs/page.tsxsrc/app/(dashboard)/historique/page.tsxsrc/app/(dashboard)/profil/page.tsxsrc/components/navigation/BottomNav.tsxsrc/components/navigation/TopTabs.tsxsrc/components/dashboard/DashboardWrapper.tsxsrc/hooks/useRefresh.tssrc/tests/dashboard-layout.test.tsxsrc/tests/navigation.test.tsxsrc/tests/dashboard-wrapper.test.tsx
Change Log
- 2026-01-17: Implémentation complète du dashboard principal avec navigation
- Création de la structure de navigation responsive
- Implémentation du swipe gauche/droite sur mobile
- Intégration du pull-to-refresh
- Création de 18 tests couvrant toutes les fonctionnalités