Architecture Frontend
(Mobile + Web)
La solution de cashback nouvelle génération
VUE D'ENSEMBLE FRONTEND
1.1 Présentation Générale
L'architecture frontend de REWAPP couvre quatre applications distinctes, chacune optimisée pour son contexte d'utilisation et son audience cible. Toutes les applications partagent des principes communs de performance, sécurité et expérience utilisateur.
Applications Frontend
| Application | Technologie | Type | Utilisateurs Cibles |
|---|---|---|---|
| Application Mobile | Angular + Ionic |
App Native iOS/Android | Clients finaux |
| Site Vitrine | Angular 20 + TailwindCSS v4 |
SPA Web (pas SSR) | Prospects, SEO |
| Dashboard Admin | Angular 20 + Ionic 8 |
PWA | Équipe REWAPP |
| Dashboard Partenaire | Angular 20 + Ionic 8 |
PWA | Commerçants partenaires |
1.2 Principes Architecturaux Frontend
L'architecture frontend de REWAPP suit plusieurs principes fondamentaux pour garantir performance, maintenabilité et expérience utilisateur optimale.
- Séparation des responsabilités : Chaque application frontend a un rôle spécifique et utilise les technologies les plus adaptées à son contexte.
- Performance First : Optimisation du temps de chargement, réduction de la consommation de données mobiles et fluidité des interactions.
- Security by Design : Authentification robuste via JWT, protection des données sensibles et conformité RGPD intégrée.
- Responsive Design : Adaptation automatique à tous les types d'écrans et orientations (mobile, tablette, desktop).
- Accessibilité : Conformité WCAG 2.1 niveau AA pour garantir l'accessibilité à tous les utilisateurs.
- Maintenabilité : Code modulaire, réutilisable, testé et documenté avec couverture de tests minimale de 80%.
1.3 Communication avec le Backend
Toutes les applications frontend communiquent avec le backend via l'API REST sécurisée.
Configuration Communication
| Élément | Description | Configuration |
|---|---|---|
| Load Balancer | Point d'entrée unique (Traefik) | Routage, auth, rate limiting |
| Authentification | JWT avec refresh token | Access: 15min, Refresh: 7 jours |
| Format de données | JSON pour toutes les communications | UTF-8, gzip compression |
| Gestion des erreurs | Format standardisé avec codes HTTP | Codes métier personnalisés |
| WebSockets | Mises à jour temps réel (dashboards) | Server-Sent Events (SSE), polling REST |
1.4 Schéma d'Architecture Frontend Globale
+------------------+ +------------------+ +------------------+
| App Mobile | | Site Vitrine | | Dashboards |
| Angular + Ionic | | Angular + Tailwind| | Angular + Ionic |
+--------+---------+ +--------+---------+ +--------+---------+
| | |
| HTTPS/TLS 1.3 | |
+------------------------+------------------------+
|
+-------------+-------------+
| Traefik |
| (Routing, TLS, Rate) |
+-------------+-------------+
|
+-------------+-------------+
| Backend Monolithe |
| Modulaire |
| (NestJS) |
+---------------------------+
ARCHITECTURE APPLICATION MOBILE (ANGULAR + IONIC)
2.1 Stack Technique Mobile
L'application mobile REWAPP utilise Angular avec Ionic et Capacitor pour permettre un développement cross-platform efficace tout en maintenant des performances natives.
Technologies Mobile
| Technologie | Version | Rôle |
|---|---|---|
Angular |
20.x | Framework enterprise-grade |
Ionic Framework |
8.x | Composants UI natifs, cross-platform |
Capacitor |
8.x | Build natif iOS/Android, APIs natives |
Angular Services |
20.x | State management réactif via services |
Ionic Router |
8.x | Navigation et routing |
RxJS |
7.x | Programmation réactive |
@capacitor/geolocation |
Latest | Géolocalisation |
Firebase |
Latest | Push notifications |
2.2 Structure des Dossiers
src/
├── app/ # Module racine Angular
│ ├── core/ # Services singleton, guards
│ │ ├── services/
│ │ ├── guards/
│ │ └── interceptors/
│ ├── shared/ # Composants partagés
│ │ ├── components/
│ │ ├── directives/
│ │ └── pipes/
│ ├── features/ # Modules fonctionnels
│ │ ├── auth/ # Authentification
│ │ │ ├── login/
│ │ │ ├── register/
│ │ │ └── forgot-password/
│ │ ├── home/ # Page d'accueil
│ │ ├── transactions/ # Transactions
│ │ ├── qr-code/ # Scanner QR
│ │ ├── rewards/ # Récompenses
│ │ └── profile/ # Profil utilisateur
│ ├── app.component.ts
│ ├── app.module.ts
│ └── app-routing.module.ts
├── environments/ # Configuration par environnement
├── theme/ # Variables Ionic/SCSS
├── assets/ # Images, polices, etc.
└── main.ts # Point d'entrée
2.3 Gestion d'État (Services Angular)
L'application utilise les services Angular injectables avec RxJS (BehaviorSubject, Observable) pour la gestion d'état. Aucune bibliothèque NgRx n'est utilisée.
Services Angular
| Service | Données Gérées | Méthodes Principales |
|---|---|---|
AuthService |
Tokens JWT, état connexion | login(), logout(), refreshToken() |
UserService |
Profil utilisateur, préférences | updateProfile(), getProfile() |
PointsService |
Solde, historique, paliers | getBalance(), generateQRCode() |
TransactionsService |
Liste transactions, filtres | getTransactions(), filterByDate() |
// services/auth.service.ts
import { Injectable } from '@angular/core';
import { BehaviorSubject, Observable } from 'rxjs';
import { Storage } from '@ionic/storage-angular';
import { HttpClient } from '@angular/common/http';
@Injectable({ providedIn: 'root' })
export class AuthService {
private authState$ = new BehaviorSubject<boolean>(false);
private user$ = new BehaviorSubject<User | null>(null);
constructor(
private storage: Storage,
private http: HttpClient
) {
this.initStorage();
}
async initStorage() {
await this.storage.create();
const token = await this.storage.get('access_token');
this.authState$.next(!!token);
}
isAuthenticated(): Observable<boolean> {
return this.authState$.asObservable();
}
async login(credentials: LoginDto): Promise<void> {
const response = await this.http.post<AuthResponse>('/api/auth/login', credentials).toPromise();
await this.storage.set('access_token', response.accessToken);
await this.storage.set('refresh_token', response.refreshToken);
this.authState$.next(true);
}
}
2.4 Navigation (Ionic Router)
Ionic Router (basé sur Angular Router) gère toute la navigation de l'application mobile avec une structure modulaire et lazy loading.
AppRoutingModule
├── AuthModule (lazy loaded, non connecté)
│ ├── /login → LoginPage
│ ├── /register → RegisterPage
│ ├── /forgot-password → ForgotPasswordPage
│ └── /verify-email → VerifyEmailPage
└── MainModule (lazy loaded, connecté + guards)
├── TabsModule (ion-tabs)
│ ├── /home → HomePage
│ ├── /transactions → TransactionsPage
│ ├── /qr-code → QRCodePage
│ ├── /rewards → RewardsPage
│ └── /profile → ProfilePage
└── Modal Pages
├── TransactionDetailPage
├── WithdrawalPage
├── SettingsPage
└── NotificationsPage
Deep Linking
L'application supporte les deep links pour permettre la navigation depuis les notifications push ou les liens externes.
Schémas URL
| Schéma URL | Écran Cible | Paramètres |
|---|---|---|
rewapp://login |
LoginScreen | redirect? |
rewapp://transaction/:id |
TransactionDetailScreen | id (UUID) |
rewapp://qrcode |
QRCodeScreen | amount? |
rewapp://rewards |
RewardsScreen | - |
rewapp://settings |
SettingsScreen | section? |
2.5 Écrans Principaux
2.5.1 Écran d'Accueil (HomeScreen)
L'écran d'accueil affiche une vue d'ensemble du compte utilisateur avec les informations essentielles.
- Solde de recoins avec valeur en euros (conversion 1 recoin = €0.20 soit 5 recoins/€)
- Palier de fidélité actuel et progression
- Dernières transactions (3-5 plus récentes)
- Campagnes partenaires actives (featured)
- Bouton d'action rapide vers génération QR code
2.5.2 Écran QR Code (QRCodeScreen)
COMPORTEMENT CRITIQUE
QR Code valide 15 minutes, usage UNIQUE. Animation couleur : vert (15-5min) → orange (5-2min) → rouge (2-0min)
- Saisie du montant en points (minimum 10 points)
- Validation du solde suffisant
- Génération QR code avec signature HMAC-SHA256
- Compteur visuel à rebours de 15 minutes
- Expiration automatique avec déblocage des points
2.5.3 Écran Récompenses (RewardsScreen)
- Affichage solde disponible et valeur en euros
- Demande de virement (minimum €10.00)
- Historique des demandes de virement
- Statut des demandes (En attente, En cours, Effectué)
- Estimation du délai de traitement (2-3 semaines)
2.6 Sécurité Mobile
Stockage Sécurisé
| Donnée | Stockage | Méthode |
|---|---|---|
| Access Token | Keychain (iOS) / Keystore (Android) | Chiffré, secure enclave |
| Refresh Token | Keychain / Keystore | Chiffré, secure enclave |
| Préférences utilisateur | Ionic Storage | Non sensible |
| Cache API | Ionic Storage | TTL, invalidation |
Certificate Pinning
Implémentation du certificate pinning pour prévenir les attaques MITM (Man-in-the-Middle).
Certificats pinnés
api.rewapp.fr (API principale) • cdn.rewapp.fr (CDN assets)
2.7 Performance Mobile
Optimisations Implémentées
| Technique | Description | Gain |
|---|---|---|
| Ionic Capacitor | Runtime natif optimisé pour les plugins | Accès APIs natives |
| Lazy Loading | Chargement différé des écrans non visibles | -30% bundle initial |
| Image Caching | Cache images avec Ionic/Capacitor | Réduction bande passante |
| Memoization | OnPush, trackBy, Pure Pipes | Évite re-renders inutiles |
| List Virtualization | FlatList avec windowSize optimisé | Scroll fluide listes longues |
Métriques Cibles
ARCHITECTURE SITE VITRINE (ANGULAR)
3.1 Stack Technique Site Vitrine
Le site vitrine REWAPP utilise Angular 20 avec TailwindCSS v4 en mode SPA. C'est une application web single-page, sans rendu serveur (SSR).
Technologies Web
| Technologie | Version | Rôle |
|---|---|---|
Angular |
20.x | Framework frontend TypeScript |
Tailwind CSS |
4.x | Framework CSS utility-first |
TypeScript |
5.x | Typage statique |
Angular Router |
20.x | Routing SPA avec lazy loading |
3.2 Structure des Dossiers
src/
├── app/ # Application Angular
│ ├── app.component.ts # Composant racine
│ ├── app.routes.ts # Routing Angular
│ ├── pages/
│ │ ├── home/ # Page d'accueil
│ │ ├── partenaires/ # Liste partenaires
│ │ │ └── [slug]/ # Fiche partenaire
│ │ ├── a-propos/ # Page à propos
│ │ ├── contact/ # Page contact
│ │ └── faq/ # FAQ
│ ├── core/ # Services, guards, interceptors
│ └── shared/ # Composants réutilisables
│ ├── mentions-legales/page.tsx
│ ├── cgu/page.tsx
│ └── politique-confidentialite/page.tsx
├── components/
│ ├── layout/ # Header, Footer, Navigation
│ ├── home/ # Hero, Features, HowItWorks
│ ├── partners/ # PartnerCard, PartnerGrid
│ └── common/ # Button, Card, SEO
├── lib/ # API, utils
├── types/ # Types TypeScript
└── public/ # Images, icons, fonts
3.3 Stratégie de Rendu
Le site vitrine est une SPA Angular (single-page application). Toutes les pages sont servies côté client avec lazy loading par route.
Stratégies par Page
| Page | Stratégie | Justification |
|---|---|---|
| Page d'accueil | SPA + pré-rendu | Contenu semi-statique, SEO critique |
| Liste partenaires | SPA | Données dynamiques via API |
| Fiche partenaire | SPA | Données via API partenaire |
| FAQ | SPA | Contenu statique lazy loaded |
| Pages légales | SPA | Contenu très stable |
3.4 Optimisation SEO
// app.config.ts - Angular Meta service
export const appConfig: ApplicationConfig = {
providers: [
provideMeta({
title: 'REWAPP - Cashback nouvelle génération',
description: 'REWAPP transforme chaque achat en récompense. Cashback bancaire direct.',
keywords: 'cashback, fidélité, remboursement, points, récompenses',
openGraph: {
type: 'website',
locale: 'fr_FR',
url: 'https://rewapp.fr',
siteName: 'REWAPP',
},
twitter: { card: 'summary_large_image' },
robots: { index: true, follow: true },
}),
],
};
Éléments SEO Implémentés
- Meta tags optimisés par page (title, description, keywords)
- Sitemap XML généré automatiquement (/sitemap.xml)
- Robots.txt configuré (/robots.txt)
- Structured data JSON-LD (Organization, LocalBusiness, FAQ)
- Balises Open Graph pour réseaux sociaux
- URLs canoniques et balises hreflang
3.5 Performance Site Vitrine
Core Web Vitals Cibles
Métriques Performance
| Métrique | Cible | Seuil "Bon" |
|---|---|---|
| LCP (Largest Contentful Paint) | < 1.5s | < 2.5s |
| FID (First Input Delay) | < 50ms | < 100ms |
| CLS (Cumulative Layout Shift) | < 0.05 | < 0.1 |
| TTFB (Time to First Byte) | < 200ms | < 600ms |
Optimisations Implémentées
- Images : Angular img loading lazy, formats WebP, srcset responsive via HTML standard
- Fonts : Préchargement Google Fonts avec font-display: swap, subset français uniquement
- CSS : Tailwind CSS v4 avec purge automatique, critical CSS inline
- JavaScript : Code splitting automatique par route Angular, tree shaking, minification
- Caching : Headers cache optimisés, CDN Traefik
ARCHITECTURE DASHBOARD ADMIN (ANGULAR SPA)
4.1 Stack Technique Dashboard Admin
Le Dashboard Admin est une Angular SPA optimisée pour la gestion complète de la plateforme REWAPP.
Technologies Dashboard Admin
| Technologie | Version | Rôle |
|---|---|---|
Angular |
20.x | Framework UI |
Ionic Framework |
8.x | Composants UI natifs (web components) |
Angular Services |
20.x | State management et appels API |
Angular Router |
20.x | Routing SPA avec guards |
Chart.js |
4.x | Graphiques et visualisations |
Angular Reactive Forms |
20.x | Gestion formulaires |
4.2 Gestion d'État
Angular Services pour Données Serveur
Les services Angular injectables gèrent tout le cache serveur et la synchronisation des données avec le backend via RxJS.
// services/user.service.ts
@Injectable({ providedIn: 'root' })
export class UserService {
private apiUrl = '/admin/users';
constructor(private http: HttpClient) {}
getUsers(filters?: UserFilters): Observable<PaginatedResponse<User>> {
return this.http.get<PaginatedResponse<User>>(this.apiUrl, { params: filters as HttpParams });
}
updateUser(id: string, data: Partial<User>): Observable<User> {
return this.http.put<User>(`${this.apiUrl}/${id}`, data);
}
}
Services Angular avec RxJS
State Management (Services)
| Store | Données | Persistance |
|---|---|---|
authStore |
User admin, tokens, permissions | localStorage (chiffré) |
uiStore |
Sidebar collapsed, theme, langue | localStorage |
filtersStore |
Filtres tables (temporaires) | Non |
4.3 Modules Fonctionnels
Tableau de Bord Principal
KPIs affichés en temps réel :
- Nombre total d'utilisateurs (avec variation période)
- Nombre de partenaires actifs
- Volume de transactions (jour/semaine/mois)
- Revenus générés (commissions)
- Points distribués vs utilisés
Gestion des Utilisateurs
- Liste paginée avec tri et filtres
- Recherche par nom, email, téléphone
- Détail complet du profil utilisateur
- Actions : bloquer, débloquer, supprimer (RGPD)
- Export CSV des utilisateurs
Gestion des Partenaires
- Liste des partenaires avec statut (en attente, validé, suspendu)
- Workflow de validation des nouveaux partenaires
- Configuration des taux de cashback
- Gestion des abonnements premium
4.4 Sécurité Dashboard Admin
AUTHENTIFICATION RENFORCÉE OBLIGATOIRE
Email + mot de passe fort (12 caractères min) • 2FA obligatoire (TOTP) • Session timeout : 30 minutes
Contrôle d'Accès RBAC
Rôles et Permissions
| Rôle | Permissions |
|---|---|
| Super Admin | Accès complet, configuration système, gestion des admins |
| Admin | Gestion utilisateurs, partenaires, transactions, reporting |
| Support | Consultation uniquement, support utilisateurs |
ARCHITECTURE DASHBOARD PARTENAIRE (ANGULAR)
5.1 Stack Technique
Le Dashboard Partenaire est une Progressive Web App (PWA) Angular optimisée pour une utilisation mobile et desktop par les commerçants. Même stack technique que le Dashboard Admin.
Technologies PWA
| Technologie | Version | Rôle |
|---|---|---|
Angular |
20.x | Framework UI |
Ionic Framework |
8.x | Composants UI natifs (web components) |
TailwindCSS |
4.x | Framework CSS utility-first |
Angular Services |
20.x | State management et appels API |
Chart.js |
4.x | Graphiques et visualisations |
Firebase |
Latest | Push notifications |
5.2 Fonctionnalités PWA
Capacités Offline (Service Worker)
Disponibilité Offline
| Fonctionnalité | Disponible Offline | Synchronisation |
|---|---|---|
| Scan QR code | Oui | Auto à reconnexion |
| Consultation stats | Oui (cache) | Background sync |
| Transactions récentes | Oui (cache) | Temps réel online |
| Configuration | Non | Online uniquement |
Installation PWA
- Prompt d'installation sur mobile et desktop
- Icône personnalisée REWAPP
- Splash screen au lancement
- Mise à jour automatique en arrière-plan
5.3 Module de Scan QR Code
Flux de Scan
-
1
Ouverture Scanner
Partenaire ouvre le scanner (accès caméra)
-
2
Scan QR Code
Scan du QR code présenté par le client
-
3
Validation Serveur
Validation côté serveur (signature, expiration, solde)
-
4
Confirmation
Affichage du résultat et confirmation par le partenaire
-
5
Débit Points
Débit instantané des points + notification push au client
Gestion des Erreurs Scan
Erreurs et Actions
| Erreur | Message Affiché | Action |
|---|---|---|
| QR expiré | "QR code expiré. Demandez au client de régénérer." | Nouveau scan |
| QR déjà utilisé | "QR code déjà scanné." | Nouveau scan |
| Solde insuffisant | "Solde client insuffisant." | Annulation |
| Erreur réseau | "Connexion impossible. Scan mis en file d'attente." | Queue offline |
| QR invalide | "QR code non reconnu." | Nouveau scan |
5.4 Statistiques Partenaire
Métriques affichées :
- Nombre de transactions du jour/semaine/mois
- Volume de points acceptés
- Panier moyen des clients REWAPP
- Nouveaux clients vs clients fidèles
- Comparaison avec la période précédente
COMPOSANTS PARTAGÉS ET DESIGN SYSTEM
6.1 Bibliothèque de Composants
Une bibliothèque de composants partagés assure la cohérence visuelle entre les dashboards.
Composants Communs
| Composant | Description | Utilisé Dans |
|---|---|---|
DataTable |
Tableau avec tri, filtres, pagination | Admin, Partenaire |
MetricCard |
Carte affichant une métrique avec variation | Admin, Partenaire |
LineChart |
Graphique en ligne configurable | Admin, Partenaire |
StatusBadge |
Badge de statut coloré | Admin, Partenaire |
ConfirmDialog |
Modal de confirmation d'action | Admin, Partenaire |
EmptyState |
État vide avec illustration | Tous |
LoadingSpinner |
Indicateur de chargement | Tous |
6.2 Tokens de Design
Couleurs
Palette de Couleurs
| Token | Valeur | Usage |
|---|---|---|
--primary |
#6366F1 | Actions principales, liens |
--primary-dark |
#4F46E5 | Hover actions principales |
--secondary |
#10B981 | Succès, cashback, positif |
--warning |
#F59E0B | Alertes, attention |
--error |
#EF4444 | Erreurs, danger |
--neutral-50 |
#F9FAFB | Backgrounds clairs |
--neutral-900 |
#111827 | Textes principaux |
Typographie
Échelle Typographique
| Élément | Taille | Poids | Usage |
|---|---|---|---|
| Heading 1 | 32px | 700 | Titres de page |
| Heading 2 | 24px | 600 | Titres de section |
| Heading 3 | 20px | 600 | Sous-titres |
| Body | 16px | 400 | Texte courant |
| Small | 14px | 400 | Textes secondaires |
| Caption | 12px | 400 | Labels, métadonnées |
6.3 Responsive Design
Breakpoints
| Breakpoint | Taille | Appareils Cibles |
|---|---|---|
xs |
< 576px | Mobiles portrait |
sm |
≥ 576px | Mobiles paysage, petites tablettes |
md |
≥ 768px | Tablettes |
lg |
≥ 992px | Laptops, petits écrans |
xl |
≥ 1200px | Desktops |
xxl |
≥ 1600px | Grands écrans |
GESTION DES ASSETS ET RESSOURCES
7.1 Images et Médias
Optimisation Images
| Plateforme | Format | Optimisation |
|---|---|---|
| Mobile | WebP, PNG | Compression, @2x/@3x |
| Site Vitrine | WebP, AVIF | Angular img loading, lazy loading natif |
| Dashboards | SVG, WebP | Sprites icons, lazy load |
CDN et Distribution
CDN Traefik
URL : cdn.rewapp.fr • Cache : 1 an pour assets versionnés • Compression : gzip, brotli • Invalidation automatique au déploiement
7.2 Icônes
Bibliothèques d'Icônes
| Application | Bibliothèque | Raison |
|---|---|---|
| Mobile | Ionicons |
Icônes natives Ionic |
| Site Vitrine | Heroicons |
Cohérence Tailwind |
| Dashboards | Ionicons |
Icônes Ionic natives (same stack) |
7.3 Polices
Polices utilisées :
- Titres : Inter (Google Fonts)
- Corps : Inter (Google Fonts)
- Code : JetBrains Mono (monospace)
Chargement optimisé avec font-display: swap et préchargement.
BUILD ET DÉPLOIEMENT FRONTEND
8.1 Environnements
Environnements
| Environnement | URL | Usage |
|---|---|---|
| Development | localhost:3000 |
Développement local |
| Staging | staging.rewapp.fr |
Tests et validation |
| Production | rewapp.fr / app.rewapp.fr |
Production |
8.2 Build Mobile
iOS
- Build via Capacitor + Xcode
- Signing avec certificates Apple Developer
- Distribution : App Store Connect
Android
- Build via Capacitor + Android Studio
- Signing avec keystore sécurisé
- Distribution : Google Play Console
export default {
name: process.env.APP_ENV === 'production' ? 'REWAPP' : 'REWAPP Dev',
extra: {
apiUrl: process.env.API_URL,
environment: process.env.APP_ENV,
},
};
8.3 Build Web
Site Vitrine (Angular)
# Build Angular SPA
npm run build
# Déploiement vers CapRover
caprover deploy --appName rewapp-vitrine
# Cache invalidation automatique via CapRover
Dashboards (Angular)
# Build production
npm run build
# Déploiement via Docker
docker build -t rewapp-dashboard-admin .
docker push registry.rewapp.com/rewapp-dashboard-admin
8.4 CI/CD Frontend
Pipeline GitLab CI/CD :
Pipeline CI/CD
| Étape | Action | Déclencheur |
|---|---|---|
| Lint | ESLint + Prettier | Push toute branche |
| Tests | Jest + Angular Testing Library | Push toute branche |
| Build | Build de production | Push main/develop |
| Deploy Staging | Déploiement staging | Push develop |
| Deploy Production | Déploiement production | Tag release |
MONITORING ET ANALYTICS FRONTEND
9.1 Error Tracking
Sentry est intégré dans toutes les applications frontend pour le tracking des erreurs.
- Source maps uploadés pour debugging
- Alertes email pour erreurs critiques
- Contexte utilisateur (ID anonymisé)
- Breadcrumbs pour reproduction
9.2 Analytics Utilisateur
Outils Analytics
| Outil | Usage | Données Collectées |
|---|---|---|
Google Analytics 4 |
Trafic web, conversions | Pages vues, events, goals |
Mixpanel |
Analytics produit avancé | Funnels, cohortes, rétention |
Firebase Analytics |
Analytics mobile | Sessions, events, crashes |
9.3 Performance Monitoring
Mobile
- Temps de démarrage (cold/warm start)
- Frame rate et animations
- Consommation batterie
- Utilisation mémoire
Web
- Core Web Vitals (LCP, FID, CLS)
- Time to Interactive (TTI)
- First Contentful Paint (FCP)
CONCLUSION
10.1 Récapitulatif de l'Architecture Frontend
L'architecture frontend de REWAPP est conçue pour offrir une expérience utilisateur optimale sur toutes les plateformes :
- Application Mobile : Angular 20 + Ionic 8 avec Capacitor 8 pour un développement cross-platform efficace avec performances natives, gestion d'état via Services Angular (RxJS), et sécurité renforcée (certificate pinning).
- Site Vitrine : Angular 20 SPA avec TailwindCSS v4, pas de SSR. SEO via meta tags Angular, design responsive, Core Web Vitals optimisés.
- Dashboard Admin : Angular 20 + Ionic 8 pour une interface professionnelle, gestion d'état via Services Angular, et sécurité renforcée (2FA obligatoire).
- Dashboard Partenaire : Angular 20 + Ionic 8 PWA pour une utilisation mobile et desktop avec capacités offline, scan QR code via navigateur, et installation comme application native.
10.2 Évolutions Futures
L'architecture frontend est conçue pour supporter les évolutions suivantes :
- Évolution vers Angular 21 et Signals
- Micro-frontends pour isolation des dashboards
- Design system unifié avec Storybook
- Tests E2E automatisés avec Playwright