Aller au contenu principal

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​

ComposantTechnologieVersion
FrameworkNext.js15.3.4
ReactReact19.2.1
LangageTypeScript^5
StylingTailwind CSS^3.4.1
UI ComponentsRadix UIMultiple
IconsLucide React^0.474.0
ChartsRecharts^2.15.3
HTTP ClientAxios^1.10.0
Internationalisationnext-intl^4.13.1
PDF GenerationjsPDF^3.0.1
Excel Exportxlsx^0.18.5
Date HandlingDay.js^1.11.13
FirebaseFirebase^11.9.1
CAPTCHATurnstile^1.5.3
NotificationsSonner^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

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: web
    • X-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​