Spécifications Dashboard Partenaire
Interface de gestion pour commerçants — rewapp-partner
VUE D'ENSEMBLE
1.1Description
Le dashboard partenaire (rewapp-partner) est l'interface web permettant aux commerçants partenaires de REWAPP de gérer leur programme de fidélité : profil, programme de cashback, marketing, statistiques et paramètres.
C'est une application Angular + Ionic avec authentification JWT, permissions par rôle (système d'équipe), et routing protégé par AuthGuard + TeamPermissionsGuard.
1.2Fonctionnalités
- Dashboard : vue d'ensemble (
/dashboard) - Profil : informations du commerce (
/profile) - Programme : configuration du cashback (
/programme) - Marketing : événements et promotions (
/marketing) - Statistiques : reporting (
/statistics) - Informations : infos commerce (
/informations) - Paramètres : paramètres équipe et compte (
/settings) - KYB :Know Your Business (
/kyb) — pour partenaires en attente de validation
PAS DE SCAN QR CODE DANS LE DASHBOARD
Le scan QR code pour débit de points se fait via l'application mobile du commerçant, PAS via ce dashboard web. Ce dashboard sert uniquement à la configuration et au pilotage.
AUTHENTIFICATION & INSCRIPTION
2.1Pages Publiques (sans auth)
Routes publiques
| Path | Composant | Description |
|---|---|---|
/login |
LoginPage |
Connexion commerçant |
/inscription |
InscriptionPage |
Inscription nouveau partenaire |
/verify-email |
VerifyEmailPage |
Vérification email après inscription |
/accept-invite |
AcceptInvitePage |
Acceptation invitation membre équipe |
2.2Flux d'Inscription
Inscription Nouveau Partenaire
- 1
Remplissage formulaire inscription
POST /api/auth/register/partner - 2
Envoi email de vérification
Lien valable 24h
- 3
Vérification email
POST /api/auth/verify-email - 4
Redirection vers KYB
Processus Know Your Business
- 5
Validation admin
Compte en pending_approval → approved
- 6
Accès au dashboard
Sidebar visible selon permissions
ARCHITECTURE & NAVIGATION
3.1Structure du Projet
rewapp-partner/src/app/
├── app.component.ts
├── app.config.ts
├── app.routes.ts # Routes + AuthGuard + TeamPermissionsGuard
├── core/
│ └── guards/
│ ├── auth.guard.ts # Protection authentification
│ └── team-permissions.guard.ts # Filtrage par permission
├── pages/
│ ├── login/ # LoginPage
│ ├── inscription/ # InscriptionPage
│ ├── verify-email/ # VerifyEmailPage
│ ├── accept-invite/ # AcceptInvitePage
│ ├── kyb/ # KybPage (pending_approval)
│ ├── dashboard/ # DashboardPage
│ ├── profile/ # ProfilePage
│ ├── programme/ # ProgrammePage
│ ├── marketing/ # MarketingPage
│ ├── statistics/ # StatisticsPage
│ ├── informations/ # InformationsPage
│ └── settings/ # SettingsPage
├── services/
└── shared/
├── components/
│ ├── app-shell/ # AppShellComponent
│ ├── sidebar/ # SidebarComponent
│ └── user-card/ # UserCardComponent
└── services/
└── toast/ # ToastService
3.2Routes
Routes Angular
| Path | Composant | Guard | Permission |
|---|---|---|---|
/login |
LoginPage |
— | Public |
/inscription |
InscriptionPage |
— | Public |
/verify-email |
VerifyEmailPage |
— | Public |
/accept-invite |
AcceptInvitePage |
— | Public |
/ |
redirect → /dashboard |
AuthGuard | — |
| Pages protégées (AppShell) | |||
/kyb |
KybPage |
AuthGuard | — |
/dashboard |
DashboardPage |
AuthGuard + TeamPermissionsGuard | dashboard.view |
/profile |
ProfilePage |
AuthGuard + TeamPermissionsGuard | settings.manage |
/programme |
ProgrammePage |
AuthGuard + TeamPermissionsGuard | settings.manage |
/marketing |
MarketingPage |
AuthGuard + TeamPermissionsGuard | marketing.manage |
/statistics |
StatisticsPage |
AuthGuard + TeamPermissionsGuard | statistics.view |
/informations |
InformationsPage |
AuthGuard | — (tous rôles) |
/settings |
SettingsPage |
AuthGuard + TeamPermissionsGuard | settings.manage |
3.3Sidebar Navigation
L'AppShellComponent wrap les pages protégées et affiche la sidebar. La navigation est filtrée dynamiquement selon les permissions du membre connecté.
Navigation Principale
| ID | Label | Icône | Route | Permission |
|---|---|---|---|---|
| dashboard | Tableau de bord | home.svg | /dashboard |
dashboard.view |
| profile | Profil | shop.svg | /profile |
settings.manage |
| programme | Programme | discount.svg | /programme |
settings.manage |
| marketing | Marketing | calendar.svg | /marketing |
marketing.manage |
| statistics | Statistiques | chart-bars.svg | /statistics |
statistics.view |
Navigation du Bas
| ID | Label | Icône | Route | Permission |
|---|---|---|---|---|
| informations | Informations | info.svg | /informations |
Tous (pas de filtre) |
| settings | Paramètres | settings.svg | /settings |
settings.manage |
Filtrage dynamique : la sidebar affiche/masque les liens selon les permissions du membre connecté (récupérées live depuis le backend, pas depuis le JWT). Un membre avec uniquement dashboard.view verra seulement Dashboard + Informations.
PAGES DU DASHBOARD
4.1Dashboard
Route : /dashboard | Composant : DashboardPage
Page d'accueil après connexion. KPIs principaux, dernières transactions, alertes.
4.2Profil
Route : /profile | Composant : ProfilePage
Gestion des informations du commerce : nom, adresse, horaires, logo, coordonnées.
4.3Programme
Route : /programme | Composant : ProgrammePage
Configuration du programme de cashback : taux de fidélisation, paliers, bonus, programme d'établissement.
4.4Marketing
Route : /marketing | Composant : MarketingPage
Gestion des événements et promotions. Créer, modifier, activer/désactiver des événements.
4.5Statistiques
Route : /statistics | Composant : StatisticsPage
Reporting détaillé : transactions, points émis, évolution du programme, performances par période.
4.6Autres Pages
Pages restantes
| Route | Composant | Usage |
|---|---|---|
/informations |
InformationsPage |
Informations du commerce (visible par tous les membres) |
/settings |
SettingsPage |
Paramètres : équipe, invitations, sécurité |
/kyb |
KybPage |
Know Your Business — pour partenaires en attente de validation |
PERMISSIONS & ÉQUIPE
5.1Système de Permissions
Chaque membre d'équipe possède des permissions spécifiques. Le TeamPermissionsGuard vérifie la permission requise avant d'afficher une page.
Permissions
| Permission | Description | Pages accessibles |
|---|---|---|
dashboard.view |
Vue dashboard | Dashboard |
settings.manage |
Gestion paramètres et programme | Profil, Programme, Paramètres |
marketing.manage |
Gestion marketing et événements | Marketing |
statistics.view |
Consultation des statistiques | Statistiques |
5.2Gestion d'Équipe
- Invitation par email de nouveaux membres (
/accept-invite) - Affectation de permissions par rôle
- Révoquer l'accès à un membre
- Filtrage dynamique de la sidebar selon permissions live
STACK TECHNIQUE
6.1Technologies
Stack
| Catégorie | Technologie | Version |
|---|---|---|
| Framework | Angular |
20.x (standalone components) |
| UI | Ionic |
8.x |
| Styling | SCSS |
Composant-scoped |
| Auth | JWT |
Via AuthService |
| Routing | Angular Router |
Lazy-loaded pages |
| HTTP | HttpClient |
Angular |
| Notifications | ToastService |
DOM-based |
| Déploiement | CapRover |
rewapp-partner container |
6.2Architecture
- Routing avec lazy-loading (chaque page = chunk séparé)
AppShellComponent= layout wrapper avec sidebar- Icons SVG dans
src/assets/icons/ - Services Angular dans
src/app/services/ - Modèles TypeScript dans
src/app/models/ - Sidebar collapsible (mobile)
- Permissions filtrées live depuis le backend (pas juste JWT)