Architecture Web - Dashboard Next.js
Vue d'ensemble
Le dashboard web Tranoo (tranoo_landing) est une application Next.js 15 avec React 19, destinée aux administrateurs pour la supervision et la gestion de la plateforme.
Stack technique
| Composant | Technologie | Version |
|---|---|---|
| Framework | Next.js | 15.3.4 |
| React | React | 19.2.1 |
| Langage | TypeScript | ^5 |
| Styling | Tailwind CSS | ^3.4.1 |
| UI Components | Radix UI | Multiple |
| Icons | Lucide React | ^0.474.0 |
| Charts | Recharts | ^2.15.3 |
| HTTP Client | Axios | ^1.10.0 |
| Internationalisation | next-intl | ^4.13.1 |
| PDF Generation | jsPDF | ^3.0.1 |
| Excel Export | xlsx | ^0.18.5 |
| Date Handling | Day.js | ^1.11.13 |
| Firebase | Firebase | ^11.9.1 |
| CAPTCHA | Turnstile | ^1.5.3 |
| Notifications | Sonner | ^2.0.4 |
Structure du projet
tranoo_landing/
├── app/ # App Router Next.js 15
│ ├── dashboard/ # Dashboard admin
│ │ └── utilisateurs/ # Gestion utilisateurs
│ │ └── details/ # Détails utilisateur
│ ├── login/ # Page connexion
│ └── ... # Autres pages
├── components/ # Composants React
│ ├── ui/ # Composants UI réutilisables
│ └── ... # Autres composants
├── lib/ # Utilitaires et helpers
├── i18n/ # Configuration i18n
│ ├── routing.ts # Routing internationalisé
│ └── request.ts # Configuration requêtes
├── messages/ # Traductions
│ ├── fr.json # Français
│ ├── en.json # Anglais
│ └── ar.json # Arabe
├── data/ # Données statiques
├── public/ # Fichiers statiques
├── middleware.ts # Middleware Next.js
├── next.config.ts # Configuration Next.js
├── tailwind.config.ts # Configuration Tailwind
├── tsconfig.json # Configuration TypeScript
├── .env # Variables environnement
└── package.json # Dépendances
Fonctionnalités principales
Gestion des utilisateurs
- Vendeurs : Validation, catalogue, ventes
- Acheteurs : Suivi achats, activité
- Transitaires : Vérification documents, abonnements (Transit international)
- Chauffeurs : Demandes chauffeur, contacts tricycles
- Agents : Performance, commissions, retraits (Agents commerciaux)
- Administrateurs : Gestion système
Supervision
- Statistiques globales
- Suivi des commandes
- Missions de transit et vérification transitaires
- Rapports et exports
Configuration
- Paramètres système
- Tarification (abonnements, publicité, vérification)
- Gestion des abonnements transitaires
Architecture des composants
UI Components (Radix UI)
- Avatar - Avatars utilisateurs
- Checkbox - Cases à cocher
- Dropdown Menu - Menus déroulants
- Label - Labels formulaires
- Radio Group - Groupes radio
- Select - Sélecteurs
- Separator - Séparateurs
- Switch - Interrupteurs
- Tabs - Onglets
- Slot - Slots composition
Icons
- Lucide React - Icônes modernes
- FontAwesome - Icônes supplémentaires
- Heroicons - Icônes Heroicons
Charts
- Recharts - Graphiques et visualisations
- Statistiques utilisateurs
- Évolution des ventes
- Performance livreurs
Internationalisation
Configuration next-intl
- Langues supportées : français (défaut), anglais, arabe
- Routing : Sans préfixe URL (cookie-based)
- Cookie : NEXT_LOCALE
- Sélecteur : LocaleSwitcher component
Fichiers de traduction
messages/
├── fr.json # Français
├── en.json # Anglais
└── ar.json # Arabe
Utilisation
const t = useTranslations("verification");
t("maCle")
Authentification
Session web
- Header :
X-Web-Session-Id(UUID) - Plateforme :
X-Client-Platform: web - Durée : 30 minutes (configurable)
- Stockage : Cookie + localStorage
Firebase Auth
- Intégration Firebase pour authentification
- Token Firebase pour requêtes API
- Gestion des sessions
CAPTCHA
- Turnstile (Cloudflare) pour protection
- Intégration @marsidev/react-turnstile
- Protection contre bots
Communication avec le backend
API REST
- Base URL configurée dans .env
- Axios pour requêtes HTTP
- Headers :
Authorization: Bearer <token>X-Client-Platform: webX-Web-Session-Id: <uuid>Accept-Language: fr|en|ar
Endpoints principaux
/api/users/vendeurs/all- Liste vendeurs/api/users/acheteurs/all- Liste acheteurs/api/users/transitaires/all- Liste transitaires/api/users/chauffeurs/all- Liste chauffeurs/api/users/admins/all- Liste admins/api/protected/stats- Statistiques globales/api/protected/stats/acheteurs- Stats acheteurs
Exports
Excel
- xlsx pour export Excel
- Export des listes utilisateurs
- Export des statistiques
PDF
- jsPDF pour génération PDF
- jsPDF-autotable pour tableaux
- Factures et rapports
Sécurité
Middleware
- Protection des routes admin
- Vérification session web
- Gestion locale
Validation
- Validation formulaires côté client
- Validation côté serveur
- Protection CSRF
Rate Limiting
- Limitation requêtes API
- Protection contre abus
Performance
Next.js 15
- App Router
- Server Components
- Turbopack (dev)
- Optimisation automatique
Optimisations
- Code splitting automatique
- Image optimization
- Font optimization
- Lazy loading
Développement
Scripts npm
npm run dev # Développement (Turbopack)
npm run build # Build production
npm run start # Démarrer production
npm run lint # Linting
npm run export # Export statique
Environnement
NEXT_PUBLIC_API_URL= # URL backend API
NEXT_PUBLIC_FIREBASE_*= # Configuration Firebase
Déploiement
Build
npm run build
Start
npm run start
Export statique
npm run export
Voir aussi
- Architecture Backend — documentation backend complète
- Architecture Mobile — documentation Flutter
- Internationalisation — configuration i18n détaillée
- Agents commerciaux — suivi admin agents
- Transit international — vérification transitaires