v1.0 Novembre 2025
4.5

Stack Technique Détaillé

La solution de cashback nouvelle génération

24 novembre 2025
Version 1.0
1

INTRODUCTION

1.1 Objectif du Document

Ce document présente en détail l'ensemble des technologies, frameworks, outils et services utilisés pour développer et exploiter la plateforme REWAPP. Il constitue la référence technique pour l'équipe de développement et les parties prenantes techniques du projet.

1.2 Principes de Sélection

Les choix technologiques de REWAPP ont été guidés par les principes suivants :

  • Performance : Temps de réponse API < 200ms, fluidité des applications
  • Scalabilité : Architecture capable de supporter 300 000 utilisateurs à 3 ans
  • Sécurité : Protection des données bancaires et personnelles (PCI DSS, RGPD)
  • Maintenabilité : Technologies matures avec écosystème riche
  • Coût : Optimisation des coûts d'infrastructure et de développement

1.3 Vue d'Ensemble de l'Écosystème

Technologies Principales par Composante

Composante Technologie Principale Version
Application Mobile Angular + Ionic + Capacitor 20 / 8 / 8
Site Vitrine Angular 20 + Tailwind CSS 20
Dashboard Admin Angular 20 + Ionic 8 20 / 8
Dashboard Partenaire Angular 20 + Ionic 8 20 / 8
Backend API Node.js + NestJS >=18 LTS / 11.1
Base de données PostgreSQL 15+
Cache Redis 7+
Message Queue BullMQ + Redis -
Infrastructure CapRover + Docker -
2

STACK FRONTEND

2.1 Application Mobile

2.1.1 Technologies Principales

Stack Mobile Angular + Ionic

Technologie Version Justification
Angular 20 Framework enterprise-grade, architecture modulaire, ecosyste complet
Ionic Framework 8 Composants UI natifs, cross-platform iOS/Android, performance optimisée
Capacitor 8 Build natif iOS/Android, acces APIs natives, plugins officiels
TypeScript 5.x Typage statique, meilleure maintenabilité, détection erreurs
NgRx / Services Angular 17.x Gestion d'état réactive, services injectables
Ionic Router 7.x Navigation native performante, deep linking, animations

2.1.2 Bibliothèques et Plugins Clés

  • HttpClient Angular : Client HTTP natif avec intercepteurs pour authentification
  • RxJS (7.x) : Programmation réactive, gestion des flux de données
  • @capacitor/camera : Scan QR code et capture photo native
  • @capacitor/push-notifications : Notifications FCM/APNs
  • Ionic Storage : Persistance locale des données (SQLite/IndexedDB)
  • @capacitor/secure-storage : Stockage sécurisé des tokens (Keychain/Keystore)
  • @capacitor/geolocation : Géolocalisation native

2.1.3 Outils de Développement

  • Angular CLI : Outil de développement et build Angular
  • Ionic CLI : Gestion des projets Ionic et builds
  • Angular DevTools : Debugging et inspection des composants
  • Capacitor : Build natif iOS (Xcode) et Android (Android Studio)

2.1.4 Compatibilité

Plateforme Version Minimum Version Cible
iOS 14.0 17.x
Android 10 (API 29) 14 (API 34)

2.2 Site Vitrine

2.2.1 Technologies Principales

Stack Angular Vitrine

Technologie Version Justification
Angular 20 Framework enterprise-grade, cohesion monorepo, ecosyseme complet
TypeScript 5.x Typage statique, maintenabilité
Tailwind CSS 3.4+ Styling utility-first, responsive rapide
SSR Angular Universal - Server-side rendering, SEO optimise

2.2.2 Bibliothèques Clés

  • @angular/ssr : Server-side rendering pour SEO
  • @angular/forms : Formulaires reactifs
  • Zod : Validation des donnees cote client
  • Zod : Validation des données côté client

2.2.3 Optimisations SEO

CORE WEB VITALS OPTIMISÉS

LCP < 2.5s | FID < 100ms | CLS < 0.1

  • SSR pour toutes les pages publiques
  • Sitemap XML automatique
  • Structured Data (JSON-LD)

2.3 Dashboard Admin

2.3.1 Technologies Principales

Stack Angular Admin

Technologie Version Justification
Angular + Ionic 20 / 8 Cohesion monorepo, composants UI riches, ecosysteme unifie
TypeScript 5.x Typage statique, refactoring sécurisé
Tailwind CSS 3.x Styling utility-first, responsive rapide

2.3.2 Bibliothèques Clés

  • @angular/common/http : Data fetching avec intercepteurs
  • RxJS : Programmation reactive
  • @swimlane/ngx-charts : Visualisations de donnees
  • Socket.io-client : WebSocket pour temps reel
  • date-fns : Manipulation des dates

2.3.3 Fonctionnalités Spécifiques

  • Authentification 2FA obligatoire
  • Gestion des rôles (Super Admin, Admin, Support)
  • Export des données (CSV, Excel, PDF)
  • Tableaux de bord personnalisables

2.4 Dashboard Partenaire

2.4.1 Technologies Principales

Technologie Version Justification
Angular + Ionic 20 / 8 Cohesion monorepo, composants PWA integres, scan QR natif
TypeScript 5.x Typage statique
Tailwind CSS 4.x Styling utility-first, PWA support

2.4.2 Fonctionnalités PWA

PROGRESSIVE WEB APP

Application installable avec support offline et notifications push

  • Service Worker pour mode offline
  • Installation sur écran d'accueil
  • Notifications push via Web Push API
  • Cache des données critiques
  • Responsive design mobile/desktop

2.4.3 Bibliothèques Clés

  • @angular/service-worker : Service Worker et caching
  • html5-qrcode : Scan QR code via caméra web
  • RxJS Services : Synchronisation donnees
  • @swimlane/ngx-charts : Statistiques et graphiques
3

STACK BACKEND

3.1 API et Framework

3.1.1 Technologies Principales

Stack Backend Node.js

Technologie Version Justification
Node.js 20 LTS Runtime JavaScript performant, écosystème npm
NestJS 11.x Framework modulaire, architecture scalable, TypeScript natif
TypeScript 5.x Typage statique, maintenabilité
TypeORM 0.3.x ORM natif NestJS, migrations, relations, decorators

3.1.2 Justification de NestJS

  • Architecture modulaire inspirée d'Angular
  • Injection de dépendances native
  • Support natif TypeScript
  • Intégration OpenAPI/Swagger automatique
  • Middleware, Guards, Interceptors, Pipes
  • Support microservices et WebSockets

3.1.3 Bibliothèques Backend

Package Utilisation
@nestjs/passportAuthentification (JWT, OAuth2)
@nestjs/swaggerDocumentation API automatique
@nestjs/bullGestion des queues de tâches
@nestjs/websocketsWebSocket pour temps réel
class-validatorValidation des DTOs
class-transformerTransformation des données
bcryptHashage des mots de passe
jsonwebtokenGénération et validation JWT
helmetHeaders de sécurité HTTP
compressionCompression gzip des réponses

3.1.4 API Gateway

Traefik API Gateway (CapRover)

Technologie Utilisation
Traefik (CapRover) Reverse proxy intégré, SSL, load balancing
Rate Limiting 100 req/min par utilisateur, 1000 req/min par IP
RATE LIMITING

100 req/min par utilisateur | 1000 req/min par IP | Circuit Breaker actif

3.2 Bases de Données

3.2.1 PostgreSQL (Base Principale)

Configuration PostgreSQL

Paramètre Valeur Justification
Version 15+ Performances améliorées, JSON, partitioning
Extensions uuid-ossp, PostGIS UUID natifs, données géographiques
Réplication Master-Slave Haute disponibilité, read replicas
Connection Pool PgBouncer Optimisation des connexions

Utilisation :

  • Données utilisateurs et authentification
  • Transactions et historique
  • Recoines de fidélité et mouvements
  • Partenaires et campagnes
  • QR codes et validations
  • Logs d'audit et événements système

3.3 Cache et Sessions

3.3.1 Redis

Configuration Redis

Paramètre Valeur Justification
Version 7+ Performances, cluster mode
Mode Cluster Haute disponibilité, scalabilité
Persistance AOF + RDB Durabilité des données

Utilisation :

  • Sessions utilisateurs (TTL 24h)
  • Cache API responses (TTL variable)
  • QR codes temporaires (TTL 15 min)
  • Rate limiting counters
  • Pub/Sub pour WebSocket
  • Queues BullMQ pour jobs asynchrones

3.4 Message Queue

3.4.1 BullMQ + Redis

Configuration BullMQ

Paramètre Valeur Justification
Broker Redis Queue basée sur Redis (déjà déployé)
Package @nestjs/bullmq Intégration NestJS native
Clustering Oui Haute disponibilité via Redis Cluster

Utilisation :

  • Communication asynchrone (transactions, notifications)
  • Traitement des transactions en arrière-plan
  • Envoi d'emails et notifications push
  • Calcul des recoines et paliers
  • Génération des QR codes

Événements Principaux

Queue Events
user.registered      → Nouvel utilisateur inscrit
transaction.detected → Transaction détectée (Plaid webhooks)
recoins.credited     → Recoines crédités sur un compte
qr_code.scanned      → QR code scanné et validé
campaign.created     → Nouvelle campagne partenaire
payout.requested     → Demande de virement initiée
4

INFRASTRUCTURE CLOUD

4.1 Services Infrastructure CapRover

4.1.1 Compute

Services de Calcul

Service Utilisation Configuration
Docker CapRover Container orchestration Auto-scaling 2-10 tasks
EC2 Serveurs applicatifs (fallback) t3.medium (prod)
jobs CRON / BullMQ Fonctions serverless Tâches ponctuelles

4.1.2 Stockage

Services de Stockage

Service Utilisation Configuration
PostgreSQL Container Base de données principale db.t3.medium, redondant
Redis Container Cache et sessions cache.t3.micro, Cluster
MinIO / Volume local Stockage objets (images, docs) Versioning, Lifecycle policies
Backup distant Archivage long terme Logs, backups anciens

4.1.3 Réseau et Distribution

Service Utilisation Configuration
Nginx/Traefik Reverse proxy + cache HTTPS, compression
ALB Load Balancer Health checks, SSL termination
DNS provider externe DNS Failover routing
réseau interne serveur Réseau privé redondant, réseaux internes isolés

4.1.4 Sécurité et Monitoring

Services de Sécurité

Service Utilisation Configuration
WAF Firewall applicatif Protection OWASP
Shield Protection DDoS Standard (inclus)
variables d'environnement CapRover Gestion des secrets Rotation 90 jours
Prometheus/Grafana Logs et métriques Alertes automatiques
Fail2Ban Détection menaces Analyse continue

4.2 Réseau et Sécurité

4.2.1 Architecture réseau interne serveur

réseau interne serveur Architecture
réseau interne serveur CIDR          : 10.0.0.0/16
Réseaux publics   : 10.0.1.0/24, 10.0.2.0/24 (redondant)
Réseaux privés    : 10.0.10.0/24, 10.0.11.0/24 (redondant)
Réseaux database  : 10.0.20.0/24, 10.0.21.0/24 (redondant)
NAT Gateway       : Accès internet sortant
Docker Network    : Réseau interne containers

4.2.2 Security Groups

Règles de Sécurité Réseau

Groupe Ports Source
ALB 443 0.0.0.0/0
App Servers 3000 ALB uniquement
Database 5432 App Servers uniquement
Redis 6379 App Servers uniquement
5

INTÉGRATIONS TIERCES

5.1 Solution Bancaire

5.1.1 Connexion Bancaire (OpenBanking)

Fournisseurs OpenBanking

Fournisseur Statut Fonctionnalités
Plaid Implémenté Liaison compte bancaire, détection transactions, agrégation
Tink Alternative API moderne, couverture européenne
CONFORMITÉ

PSD2 / DSP2 | OAuth 2.0 | Webhooks temps réel | Tokenisation PCI DSS

5.1.2 Virements SEPA

Fournisseur Statut Fonctionnalités
Stripe Connect Recommandé BaaS complet, virements SEPA, payouts
Plaid Pour transferts Transferts ACH pour US

5.2 Notifications

5.2.1 Push Notifications

Service Plateforme Utilisation
Firebase Cloud Messaging (FCM) Android/iOS Notifications push
Apple Push Notification Service (APNs) iOS Fallback iOS
  • Topics pour segmentation (merchants, users, premium)
  • Analytics de delivery et engagement
  • Notifications riches (images, actions)
  • Fallback vers notification in-app

5.3 Emails

5.3.1 Emails Transactionnels

Service Utilisation
SendGrid Emails transactionnels principaux
Brevo (ex-Sendinblue) Alternative/Backup

Types d'emails :

  • Confirmation d'inscription
  • Réinitialisation de mot de passe
  • Notification de transaction
  • Points sur le point d'expirer
  • Newsletter et promotions

5.4 Analytics

5.4.1 Analytics Utilisateur

Service Utilisation Plateforme
Google Analytics 4 Tracking web et mobile Toutes
Mixpanel Funnels et cohortes Mobile + Dashboards
Hotjar Heatmaps et recordings Site Vitrine

5.4.2 Monitoring Technique

Service Utilisation Plateforme
Sentry Error tracking Toutes
Prometheus + Grafana Métriques, alerting, dashboards Backend + Infrastructure
Prometheus + Grafana Métriques système Infrastructure
6

OUTILS DE DÉVELOPPEMENT

6.1 Versioning et CI/CD

6.1.1 Gestion du Code Source

Outil Version Utilisation
Git 2.x Versioning
GitLab - Hébergement repositories (thomas.giardina.sin)
GitLab CI/CD - CI/CD pipelines

6.1.2 Pipeline CI/CD

Étapes du Pipeline

Étape Outils Déclencheur
Lint & Format ESLint, Prettier Chaque commit
Tests Unitaires Jest Chaque commit
Tests Intégration Jest + Supertest Chaque PR
Build TypeScript, Webpack, Vite Chaque PR
Security Scan npm audit, Snyk Chaque PR
Docker Build Docker, Docker Registry Merge main
Deploy Staging Docker, CapRover Merge main
Tests E2E Playwright Staging
Deploy Production Docker, CapRover Tag release

6.1.3 Infrastructure as Code

Outil Version Utilisation
Terraform 1.6+ Provisioning infrastructure CapRover
Docker Compose 3.x Alternative IaC
Docker 24.x Containerisation
Docker Compose 2.x Développement local

6.2 Monitoring et Observabilité

6.2.1 Stack de Monitoring

Outils de Monitoring

Composant Outil Utilisation
Métriques Prometheus + Grafana Dashboards, alertes
Métriques Prometheus + Grafana Métriques système et application
Errors Sentry Error tracking, alerting

6.2.2 Alertes

Seuils d'Alertes

Métrique Seuil Action
API Latency > 500ms Warning Slack
Error Rate > 1% PagerDuty Critical
CPU Usage > 80% Auto-scaling trigger
Database Connections > 80% Investigation immédiate
Disk Usage > 85% Alerte équipe ops

6.3 Tests et Qualité

6.3.1 Outils de Test

Type Outil Couverture
Unit Tests Jest 80% minimum
Integration Tests Jest + Supertest 60% endpoints
E2E Tests Playwright Scénarios critiques
Performance Tests k6, Artillery Endpoints critiques
Security Tests OWASP ZAP Vulnérabilités

6.3.2 Qualité du Code

Outil Version Utilisation
ESLint 8.x Linting JavaScript/TypeScript
Prettier 3.x Formatage automatique
Husky 8.x Git hooks pre-commit
SonarQube - Analyse qualité et sécurité
7

JUSTIFICATION DES CHOIX TECHNOLOGIQUES

7.1 Angular/Ionic vs React Native

Comparaison Framework Mobile

Critère Angular + Ionic React Native
Language TypeScript JavaScript/TypeScript
Architecture Modulaire, structurée (DI native) Flexible, composants
Build natif Capacitor (iOS/Android) Metro + natif
Composants UI Ionic (complets, thémables) RN Elements / Paper
Performance Excellente (WebView optimisé) Excellente (natif)
DÉCISION CHOISI -
JUSTIFICATION

Angular + Ionic offre une architecture enterprise-grade avec injection de dépendances native, une bibliothèque de composants UI complète et thémable, et Capacitor pour un accès aux APIs natives. L'architecture modulaire d'Angular facilite la maintenance à long terme du projet.

7.2 NestJS vs Express

Comparaison Framework Backend

Critère NestJS Express
Architecture Modulaire, structurée Flexible, minimal
TypeScript Natif À configurer
DI (Injection) Native Manuelle
Documentation API Swagger intégré À ajouter
Courbe apprentissage Moyenne Faible
DÉCISION CHOISI -
JUSTIFICATION

NestJS offre une architecture structurée et modulaire idéale pour une application d'entreprise. L'injection de dépendances native et l'intégration Swagger facilitent le développement et la maintenance.

7.3 PostgreSQL vs MySQL

Comparaison Base de Données

Critère PostgreSQL MySQL
Conformité SQL Excellente Bonne
Types JSON Natif, performant Basique
Extensions Très riche Limitées
Transactions ACID complet ACID
Géospatial PostGIS excellent Basique
DÉCISION CHOISI -
JUSTIFICATION

PostgreSQL offre une meilleure conformité SQL, des types JSON natifs performants et l'extension PostGIS pour les données géographiques (localisation partenaires).

7.4 CapRover vs Cloud Providers

Comparaison Cloud Providers

Critère CapRover GCP Azure
Maturité Très mature Mature Mature
Services Très complet Complet Complet
Présence France Région Paris Région Paris Région Paris
Prix Compétitif Compétitif Variable
Écosystème Très riche Riche Riche
DÉCISION CHOISI - -
JUSTIFICATION

CapRover offre une solution auto-hébergée économique (~500€/mois) avec Docker containers. L'hébergement en France garantit la conformité RGPD et une latence optimale.

8

CONFIGURATION PAR ENVIRONNEMENT

8.1 Environnements

Environnement URL Description
Développement localhost:3000 Développement local
Staging staging.rewapp.fr Tests et validation
Production api.rewapp.fr Environnement live

8.2 Configuration Infrastructure

Ressources par Environnement

Ressource DEV STAGING PRODUCTION
Docker Container 1 container t3.small x2 t3.medium x4
PostgreSQL Container db.t3.micro db.t3.small db.t3.medium redondant
Redis Container 1 container cache.t3.micro cache.t3.small Cluster
MinIO/Volume Volume unique Bucket dédié Bucket + réplication

8.3 Configuration Applicative

Paramètres par Environnement

Paramètre DEV STAGING PRODUCTION
LOG_LEVEL debug info warn
JWT_EXPIRY 1h 15min 15min
RATE_LIMIT Désactivé 1000 req/min 100 req/min
CACHE_TTL 60s 300s 600s
SSL Non Oui Oui

8.4 Gestion des Secrets

GESTION DES SDocker RegistryETS

Tous les secrets sont gérés via les variables d'environnement CapRover avec accès sécurisé.

Secrets
DATABASE_URL       → URL de connexion PostgreSQL
REDIS_URL          → URL de connexion Redis
JWT_SECRET         → Clé de signature JWT (RS256)
BANKING_API_KEY    → Clé API solution bancaire
SENDGRID_API_KEY   → Clé API SendGrid
FCM_SERVER_KEY     → Clé serveur Firebase
9

CONCLUSION

9.1 Récapitulatif du Stack

Stack Technique Complet

Couche Technologies
Frontend Mobile Angular, Ionic, Capacitor, TypeScript
Frontend Web Angular 20, Tailwind CSS
Backend Node.js, NestJS, TypeScript, TypeORM
Bases de données PostgreSQL, Redis
Message Queue BullMQ + Redis
Infrastructure CapRover (Docker, PostgreSQL, Redis, MinIO, Traefik)
CI/CD GitLab CI, Docker, Terraform
Monitoring Prometheus, Grafana, Sentry

9.2 Points Clés

Le stack technique de REWAPP a été conçu pour répondre aux exigences suivantes :

  • Scalabilité

    Architecture microservices avec scaling Docker containers horizontal permettant de supporter 30 000 à 300 000 utilisateurs

  • Performance

    Temps de réponse API < 200ms grâce au cache multi-niveaux (Redis, CDN)

  • Sécurité

    Protection des données bancaires avec chiffrement AES-256, JWT RS256, conformité RGPD et PCI DSS

  • Maintenabilité

    Code TypeScript, architecture modulaire NestJS, tests automatisés et documentation OpenAPI

  • Disponibilité

    Déploiement CapRover avec SLA 99.9%, circuit breakers et health checks

9.3 Évolutions Prévues

9.3.1 Court Terme (6 mois)

  • GraphQL : API GraphQL pour les clients mobiles (flexibilité des requêtes)
  • gRPC : Communication inter-services plus performante
  • WebSocket : Amélioration du temps réel pour les notifications

9.3.2 Moyen Terme (12 mois)

  • Kubernetes : Migration vers K8s pour orchestration avancée
  • Service Mesh : Istio pour observabilité et sécurité
  • Machine Learning : Détection de fraude et recommandations personnalisées

9.3.3 Long Terme (24 mois)

  • Event Sourcing : Traçabilité complète des événements métier
  • CQRS : Séparation lecture/écriture pour scalabilité maximale
  • Multi-région : Déploiement européen pour latence réduite