v1.0 Novembre 2025
Document 4.3

Architecture Backend API

La solution de cashback nouvelle génération

24 novembre 2025
Version 1.0
Architecture Technique
1

VUE D'ENSEMBLE DE L'ARCHITECTURE BACKEND

L'architecture backend de REWAPP est conçue selon une approche microservices avec une API Gateway centralisée, permettant scalabilité, maintenabilité et haute disponibilité.

1.1 Principes Architecturaux

  • Microservices

    Séparation des domaines fonctionnels en services indépendants et autonomes

  • API-First

    Toute communication passe par des APIs REST standardisées suivant OpenAPI 3.0

  • Stateless

    Aucune session serveur, authentification via JWT pour scalabilité horizontale

  • Event-Driven

    Communication asynchrone entre services via Bull Queue (Redis)

  • Security by Design

    Sécurité intégrée dès la conception à tous les niveaux

  • Cloud Native

    Optimisation pour infrastructure AWS avec containers Docker

1.2 Stack Technique Backend

Technologies Backend

Composant Technologie Version
Runtime Node.js 18 LTS+
Framework NestJS 10.x
Base de données principale PostgreSQL 15+
Cache & Sessions Redis 7+
ORM Prisma 5.x
Queue de Jobs Bull Queue Redis-based
API Gateway Kong / AWS API Gateway -
Conteneurs Docker + ECS Fargate -

1.3 Composants Principaux

  • API Gateway : Point d'entrée unique pour toutes les requêtes clients
  • Services Métier : Microservices NestJS spécialisés par domaine fonctionnel
  • Bull Queue : Traitement asynchrone des jobs (notifications, calculs, virements)
  • Redis : Cache distribué et gestion des sessions
  • PostgreSQL : Stockage persistant des données transactionnelles
  • S3 : Stockage des fichiers et médias
2

MICROSERVICES BACKEND

2.1 Service Authentification (Auth Service)

Responsabilités
  • Inscription et authentification des utilisateurs
  • Gestion des tokens JWT (access token + refresh token)
  • Authentification biométrique (FaceID/TouchID)
  • Double authentification (2FA) pour administrateurs
  • Gestion des sessions multi-devices

2.1.1 Endpoints Principaux

Auth Service Endpoints

Méthode Endpoint Description
POST /api/v1/auth/register Inscription nouvel utilisateur
POST /api/v1/auth/login Authentification email/mot de passe
POST /api/v1/auth/login/biometric Authentification biométrique
POST /api/v1/auth/refresh Renouvellement access token
POST /api/v1/auth/logout Déconnexion et invalidation token
POST /api/v1/auth/forgot-password Demande de réinitialisation
POST /api/v1/auth/reset-password Réinitialisation mot de passe
POST /api/v1/auth/verify-email Vérification email

2.1.2 Sécurité Authentification

  • Access Token : Validité 15 minutes, signature RS256
  • Refresh Token : Validité 7 jours, stocké hashé en base
  • Mots de passe : Hashage bcrypt (10 rounds minimum)
  • Protection brute force : 5 tentatives max par IP/email sur 15 minutes
  • Device fingerprinting : Détection des nouveaux appareils

2.2 Service Utilisateurs (User Service)

Responsabilités
  • Gestion des profils utilisateurs
  • Mise à jour des informations personnelles
  • Gestion des préférences et notifications
  • Conformité RGPD (export, suppression données)

2.2.1 Endpoints Principaux

User Service Endpoints

Méthode Endpoint Description
GET /api/v1/users/me Profil utilisateur connecté
PUT /api/v1/users/me Mise à jour du profil
DELETE /api/v1/users/me Suppression compte (RGPD)
GET /api/v1/users/me/export Export données personnelles
PUT /api/v1/users/me/preferences Mise à jour préférences
GET /api/v1/users/me/devices Liste des appareils connectés
DELETE /api/v1/users/me/devices/:id Déconnexion d'un appareil

2.3 Service Transactions (Transaction Service)

Responsabilités
  • Réception et traitement des transactions bancaires (webhooks)
  • Détection automatique des achats chez partenaires
  • Calcul du cashback selon taux partenaire et palier fidélité
  • Historique des transactions par utilisateur

2.3.1 Intégration OpenBanking

Le service s'intègre avec les fournisseurs OpenBanking (Budget Insight recommandé, Plaid, Tink) pour la détection automatique des transactions. L'intégration respecte la norme PSD2.

Flux de détection
  1. Webhook reçu du fournisseur bancaire (transaction.created)
  2. Matching avec les partenaires REWAPP (par MCC code ou nom commerçant)
  3. Calcul du cashback : montant × taux_partenaire × (1 + bonus_palier)
  4. Crédit des points via le Service Points
  5. Notification push à l'utilisateur

2.3.2 Endpoints Principaux

Transaction Service Endpoints

Méthode Endpoint Description
GET /api/v1/transactions Liste transactions avec filtres
GET /api/v1/transactions/:id Détail d'une transaction
POST /api/v1/transactions/sync Synchronisation manuelle
GET /api/v1/transactions/stats Statistiques (total, période)
POST /api/v1/webhooks/banking Réception webhooks bancaires

2.4 Service Points et Fidélité (Points Service)

Responsabilités
  • Gestion du solde de points utilisateur
  • Crédit/débit de points (méthode FIFO pour expiration)
  • Calcul et mise à jour des paliers de fidélité
  • Gestion de l'expiration des points (12 mois)

2.4.1 Règles Métier Implémentées

RÈGLES FONDAMENTALES
  • 1 point = 0,10€
  • Cashback bancaire : 10 points = 0,95€ (-5%)
  • Cashback commerçant : 10 points = 1,05€ (+5%)
  • Validité des points : 12 mois (FIFO - First In First Out)
  • Minimum virement bancaire : 100 points

2.4.2 Endpoints Principaux

Points Service Endpoints

Méthode Endpoint Description
GET /api/v1/points/balance Solde actuel (disponible, bloqué, total)
GET /api/v1/points/history Historique des mouvements
GET /api/v1/points/expiring Points proches de l'expiration
GET /api/v1/points/tiers Paliers fidélité de l'utilisateur
POST /api/v1/points/redeem Conversion points (virement)

2.4.3 Calcul des Paliers

Le palier est recalculé quotidiennement (job Bull Queue à 2h00) :

  • Calcul par partenaire sur les 12 derniers mois glissants
  • Bonus cashback : Bronze +0%, Silver +5%, Gold +10%, Platine +15%, Diamant +20%

2.5 Service QR Codes (QR Code Service)

Responsabilités
  • Génération de QR codes sécurisés pour paiement commerçant
  • Validation et scan des QR codes
  • Blocage/déblocage des points pendant la génération
  • Gestion de l'expiration (60 secondes)

2.5.1 Règles de Sécurité QR Code

RÈGLES FONDAMENTALES
  • Validité : 60 secondes (1 minute)
  • Usage : UNIQUE (toute réutilisation rejetée)
  • Minimum : 10 points
  • Signature : HMAC-SHA256

2.5.2 Génération du QR Code

Contenu du QR Code (JSON signé) :

  • ID utilisateur (chiffré)
  • Montant en points
  • Montant en euros (points × 0,105)
  • Timestamp de génération (Unix ms)
  • ID transaction unique (UUID)
  • Signature HMAC-SHA256

2.5.3 Endpoints Principaux

QR Code Service Endpoints

Méthode Endpoint Description
POST /api/v1/qr-codes/generate Génération QR code
POST /api/v1/qr-codes/scan Validation scan (dashboard partenaire)
GET /api/v1/qr-codes/:id/status Statut du QR code
GET /api/v1/qr-codes/history Historique QR générés

2.5.4 Flux de Paiement QR

Étape 1 : Demande de génération

Utilisateur demande génération avec montant de points

2
Étape 2 : Blocage des points

Points bloqués immédiatement (non utilisables)

3
Étape 3 : Génération QR

QR code généré avec validité 60 secondes

Validité : 60s
4
Étape 4 : Affichage compteur

Compteur visuel affiché (vert → orange → rouge)

5
Étape 5 : Scan ou expiration

Scan par partenaire ou expiration automatique

6
Étape 6 : Finalisation

Si validé : débit instantané + notification. Si expiré : déblocage automatique des points

2.6 Service Partenaires (Merchant Service)

Responsabilités
  • Gestion des partenaires (inscription, validation, configuration)
  • Configuration du taux de cashback par partenaire
  • Gestion des campagnes promotionnelles
  • Statistiques et reporting partenaires

2.6.1 Statuts Partenaires

  • pending : En attente de validation admin (OBLIGATOIRE)
  • approved : Validé et actif
  • rejected : Refusé avec motif
  • suspended : Suspendu temporairement
  • inactive : Désactivé par le partenaire

2.6.2 Endpoints API Publique

Merchant Service - API Publique

Méthode Endpoint Description
GET /api/v1/partners Liste partenaires actifs (géolocalisés)
GET /api/v1/partners/:id Détail d'un partenaire
GET /api/v1/partners/search Recherche par nom/catégorie
GET /api/v1/partners/nearby Partenaires à proximité (lat/lng)
GET /api/v1/partners/categories Liste des catégories

2.6.3 Endpoints Dashboard Partenaire

Merchant Service - Dashboard

Méthode Endpoint Description
GET /api/v1/merchant/profile Profil du partenaire connecté
PUT /api/v1/merchant/profile Mise à jour profil
PUT /api/v1/merchant/cashback-rate Configuration taux cashback
GET /api/v1/merchant/stats Statistiques (transactions, CA)
POST /api/v1/merchant/qr-scan Scan QR code client
GET /api/v1/merchant/campaigns Liste campagnes
POST /api/v1/merchant/campaigns Création campagne

2.7 Service Bancaire (Banking Service)

Responsabilités
  • Liaison cartes bancaires (card linking)
  • Gestion des comptes bancaires (IBAN pour virements)
  • Initiation des virements SEPA
  • Intégration avec les fournisseurs bancaires

2.7.1 Card Linking

Intégration OpenBanking pour liaison sécurisée :

  • OAuth 2.0 pour autorisation utilisateur
  • Tokenisation PCI DSS (aucun numéro de carte stocké)
  • Webhook pour nouvelles transactions

2.7.2 Endpoints Principaux

Banking Service Endpoints

Méthode Endpoint Description
GET /api/v1/banking/cards Liste cartes liées
POST /api/v1/banking/cards/link Initier liaison carte
DELETE /api/v1/banking/cards/:id Délier une carte
GET /api/v1/banking/accounts Comptes bancaires (IBAN)
POST /api/v1/banking/accounts Ajouter IBAN
POST /api/v1/banking/withdrawals Demande de virement
GET /api/v1/banking/withdrawals Liste des demandes
DELETE /api/v1/banking/withdrawals/:id Annuler demande (si pending)

2.7.3 Statuts de Virement

  • pending : En attente, annulation possible
  • processing : En cours de traitement, annulation impossible
  • completed : Virement effectué
  • failed : Échec (motif fourni)
  • cancelled : Annulé par l'utilisateur

2.8 Service Notifications (Notification Service)

Responsabilités
  • Envoi de notifications push (Firebase Cloud Messaging)
  • Envoi d'emails transactionnels (SendGrid/Brevo)
  • Envoi de SMS pour alertes critiques (Twilio)
  • Centre de notifications in-app

2.8.1 Types de Notifications

  • points_credited : Points crédités suite à transaction
  • qr_payment_success : Paiement QR validé
  • withdrawal_completed : Virement effectué
  • tier_upgrade : Passage au palier supérieur
  • points_expiring : Points sur le point d'expirer (J-30, J-7)
  • promotion : Offre promotionnelle partenaire

2.8.2 Endpoints Principaux

Notification Service Endpoints

Méthode Endpoint Description
GET /api/v1/notifications Liste notifications utilisateur
PUT /api/v1/notifications/:id/read Marquer comme lu
PUT /api/v1/notifications/read-all Tout marquer comme lu
DELETE /api/v1/notifications/:id Supprimer notification
POST /api/v1/notifications/register-device Enregistrer device token

2.9 Service Administration (Admin Service)

Responsabilités
  • Validation des partenaires (workflow d'approbation)
  • Gestion des utilisateurs (suspension, suppression)
  • Reporting et KPIs globaux
  • Gestion des paramètres système

2.9.1 Endpoints Admin (Rôle Admin requis)

Admin Service Endpoints

Méthode Endpoint Description
GET /api/v1/admin/users Liste utilisateurs avec filtres
GET /api/v1/admin/users/:id Détail utilisateur
PUT /api/v1/admin/users/:id/status Modifier statut (suspend/activate)
GET /api/v1/admin/merchants/pending Partenaires en attente validation
PUT /api/v1/admin/merchants/:id/approve Approuver partenaire
PUT /api/v1/admin/merchants/:id/reject Rejeter partenaire
GET /api/v1/admin/transactions Toutes transactions
GET /api/v1/admin/withdrawals Toutes demandes de virement
GET /api/v1/admin/stats/dashboard KPIs globaux
GET /api/v1/admin/audit-logs Journal d'audit
3

API GATEWAY

3.1 Architecture Kong Gateway

L'API Gateway Kong centralise toutes les requêtes entrantes et fournit les fonctionnalités transversales.

3.1.1 Fonctionnalités Principales

  • Rate Limiting - Protection contre les abus et surcharges
  • Authentication - Validation des tokens JWT
  • Load Balancing - Répartition de charge entre instances
  • Request/Response Transform - Transformation et validation des données
  • Logging - Centralisation des logs vers ELK Stack
  • Circuit Breaker - Protection contre les cascades de pannes

3.2 Configuration du Rate Limiting

Limites par Endpoint

Endpoint Limite Période Action si dépassé
/auth/login 5 requêtes 15 minutes Block IP + notification
/auth/register 3 requêtes 1 heure Block IP
/qr-codes/generate 10 requêtes 1 minute Throttle
/points/* 100 requêtes 1 minute Throttle
Général (authentifié) 1000 requêtes 1 minute Throttle
Général (non-auth) 100 requêtes 1 minute Block temporaire

3.3 Routage des Services

Configuration du Routage

Pattern URL Service Cible
/api/v1/auth/* Auth Service
/api/v1/users/* User Service
/api/v1/transactions/* Transaction Service
/api/v1/points/* Points Service
/api/v1/qr-codes/* QR Code Service
/api/v1/partners/* Merchant Service (public)
/api/v1/merchant/* Merchant Service (dashboard)
/api/v1/banking/* Banking Service
/api/v1/notifications/* Notification Service
/api/v1/admin/* Admin Service

3.4 Health Checks

Chaque microservice expose un endpoint /health vérifié toutes les 30 secondes par l'API Gateway :

  • Statut de la connexion PostgreSQL
  • Statut de la connexion Redis
  • Métriques de latence interne
4

COMMUNICATION INTER-SERVICES

4.1 Communication Synchrone (REST)

Pour les opérations nécessitant une réponse immédiate :

  • Format : REST JSON via HTTP/HTTPS
  • Timeout : 5 secondes par défaut
  • Retry : 3 tentatives avec exponential backoff (1s, 2s, 4s)
  • Auth : Service tokens JWT distincts des tokens utilisateurs

4.2 Communication Asynchrone (Bull Queue)

Pour les opérations non critiques et le traitement en arrière-plan :

4.2.1 Queues Principales

Configuration des Queues

Queue Usage Priorité
notifications Envoi push/email/SMS Medium
transactions Traitement transactions bancaires High
points Calcul et crédit des points High
withdrawals Traitement des virements High
analytics Tracking et métriques Low
tier-calculation Recalcul quotidien des paliers Low

4.2.2 Événements Principaux

  • user.registered : Déclenchement email de bienvenue
  • transaction.detected : Calcul et crédit des points
  • points.credited : Notification push utilisateur
  • qr_code.scanned : Débit points + notification
  • withdrawal.requested : Initiation du virement
  • tier.upgraded : Notification félicitations

4.2.3 Gestion des Erreurs

  • Retry automatique : 3 tentatives avec backoff
  • Dead Letter Queue : Messages en échec stockés pour analyse
  • Alerting : Notification Slack si DLQ > 100 messages
5

BASES DE DONNÉES ET PERSISTANCE

5.1 PostgreSQL (Base Principale)

5.1.1 Configuration

  • Version : PostgreSQL 15+
  • Extensions : UUID-OSSP, PostGIS (géolocalisation)
  • Réplication : Master-Slave pour haute disponibilité
  • Backup : Quotidien avec rétention 30 jours
  • Connection Pool : PgBouncer (max 100 connexions)

5.1.2 Tables Principales

usersComptes utilisateurs
cardsCartes bancaires liées
bank_accountsIBAN pour virements
merchantsPartenaires commerciaux
transactionsHistorique des achats
points_ledgerJournal des mouvements
qr_codesQR codes générés
notificationsCentre de notifications

5.2 Redis (Cache & Sessions)

5.2.1 Utilisation

  • Sessions JWT : TTL 24 heures
  • Cache API : TTL variable selon endpoint
  • QR codes actifs : TTL 60 secondes
  • Rate limiting : Compteurs par IP/utilisateur
  • Bull Queue : Stockage des jobs

5.2.2 Configuration

  • Mode : Cluster pour haute disponibilité
  • Réplication : Master avec 2 replicas
  • Mémoire : 2GB minimum production
6

GESTION DES ERREURS ET CODES HTTP

6.1 Format Standard des Erreurs

Toutes les réponses d'erreur suivent un format JSON standardisé :

JSON
{
  "success": false,
  "error": {
    "code": "ERR_INVALID_CREDENTIALS",
    "message": "Email ou mot de passe incorrect",
    "details": [],
    "timestamp": "2025-11-24T10:30:00.000Z",
    "traceId": "abc123-def456-ghi789",
    "path": "/api/v1/auth/login"
  }
}

6.2 Codes HTTP Standardisés

6.2.1 Codes de Succès (2xx)

Codes 2xx

CodeSignificationUtilisation
200 OK Requête réussie GET, PUT, PATCH avec données
201 Created Ressource créée POST création réussie
204 No Content Succès sans contenu DELETE, certains PUT

6.2.2 Codes d'Erreur Client (4xx)

Codes 4xx

CodeSignificationUtilisation
400 Bad Request Validation échouée, JSON invalide
401 Unauthorized Token manquant ou expiré
403 Forbidden Permissions insuffisantes
404 Not Found ID inexistant
409 Conflict Email déjà utilisé
422 Unprocessable Entity Solde insuffisant
429 Too Many Requests Rate limit atteint

6.2.3 Codes d'Erreur Serveur (5xx)

Codes 5xx

CodeSignificationUtilisation
500 Internal Server Error Bug, exception non gérée
502 Bad Gateway Microservice down
503 Service Unavailable Maintenance, surcharge
504 Gateway Timeout Service lent

6.3 Codes d'Erreur Métier REWAPP

6.3.1 Erreurs Authentification (AUTH_)

  • AUTH_INVALID_CREDENTIALS : Identifiants incorrects
  • AUTH_ACCOUNT_LOCKED : Compte verrouillé (trop de tentatives)
  • AUTH_ACCOUNT_NOT_VERIFIED : Email non vérifié
  • AUTH_TOKEN_EXPIRED : Token JWT expiré
  • AUTH_TOKEN_INVALID : Token JWT invalide
  • AUTH_BIOMETRIC_FAILED : Authentification biométrique échouée

6.3.2 Erreurs Points (POINTS_)

  • POINTS_INSUFFICIENT_BALANCE : Solde de points insuffisant
  • POINTS_AMOUNT_TOO_LOW : Montant inférieur au minimum (10 points)
  • POINTS_ALREADY_REDEEMED : Points déjà utilisés
  • POINTS_EXPIRED : Points expirés
  • POINTS_BLOCKED : Points bloqués (virement en cours)

6.3.3 Erreurs QR Code (QR_)

  • QR_INVALID : QR code invalide ou malformé
  • QR_EXPIRED : QR code expiré (durée de vie 60s)
  • QR_ALREADY_USED : QR code déjà scanné
  • QR_SIGNATURE_INVALID : Signature cryptographique invalide

6.3.4 Erreurs Bancaires (BANK_)

  • BANK_CARD_LINKING_FAILED : Liaison carte échouée
  • BANK_CARD_ALREADY_LINKED : Carte déjà liée
  • BANK_IBAN_INVALID : IBAN invalide
  • BANK_WITHDRAWAL_PENDING : Virement déjà en cours
  • BANK_WITHDRAWAL_MINIMUM : Minimum 100 points non atteint
7

FORMATS DE RÉPONSE API STANDARDISÉS

7.1 Structure des Réponses

7.1.1 Réponse de Succès Simple

JSON
{
  "success": true,
  "data": {
    "id": "user_abc123",
    "email": "jean.dupont@example.com",
    "firstName": "Jean",
    "lastName": "Dupont"
  },
  "meta": {
    "requestId": "req_abc123",
    "timestamp": "2025-11-24T10:30:00.000Z"
  }
}

7.1.2 Réponse de Liste Paginée

JSON
{
  "success": true,
  "data": [...],
  "pagination": {
    "page": 1,
    "limit": 20,
    "total": 150,
    "totalPages": 8,
    "hasNext": true,
    "hasPrev": false
  }
}

7.2 Exemples de Réponses

GET /api/v1/points/balance

Retourne le solde de points de l'utilisateur connecté.

Réponse 200 OK
JSON
{
  "success": true,
  "data": {
    "available": 2450,
    "pending": 150,
    "blocked": 0,
    "total": 2600,
    "equivalentEuros": {
      "bankCashback": 232.75,
      "merchantCashback": 257.25
    },
    "expiringPoints": {
      "amount": 500,
      "expiresAt": "2025-12-31T23:59:59.000Z"
    }
  }
}
POST /api/v1/qr-codes/generate

Génère un QR code de paiement sécurisé.

Réponse 201 Created
JSON
{
  "success": true,
  "data": {
    "qrCodeId": "qr_xyz789",
    "qrCodeData": "REWAPP:PAY:qr_xyz789:500:sig_abc123",
    "qrCodeImage": "data:image/png;base64,iVBORw0KGgo...",
    "pointsAmount": 500,
    "euroAmount": 52.50,
    "expiresAt": "2025-11-24T10:31:00.000Z",
    "validitySeconds": 60,
    "status": "ACTIVE"
  }
}

7.3 Pagination

7.3.1 Paramètres de Requête

  • page : Numéro de page (défaut: 1)
  • limit : Éléments par page (défaut: 20, max: 100)
  • sort : Champ de tri (ex: createdAt)
  • order : Ordre (asc ou desc)
8

VERSIONING DE L'API

8.1 Stratégie de Versioning

L'API REWAPP utilise le versioning dans l'URL : /api/v{major}/

Format d'URL

https://api.rewapp.fr/api/v1/auth/login

8.2 Règles de Versioning

  • Versions mineures : Pas de nouvelle URL (rétrocompatibles)
  • Ajout de champs : Rétrocompatible, pas de nouvelle version
  • Suppression de champs : Nouvelle version majeure requise
  • Support minimum : 12 mois après sortie de la version suivante

8.3 Politique de Déprécation

Headers de déprécation ajoutés aux réponses :

  • Deprecation: true
  • Sunset: Sat, 24 Nov 2026 23:59:59 GMT
  • X-API-Warn: Message d'avertissement

Phases du Cycle de Vie

PhaseDescriptionDurée
Stable Version courante recommandée Indéfinie
Dépréciée Ancienne version, migration recommandée 6 mois
Maintenance Correctifs critiques uniquement 6 mois
Obsolète Plus de support 3 mois
9

SÉCURITÉ BACKEND DÉTAILLÉE

9.1 Authentification JWT

9.1.1 Architecture

  • Access Token : 15 minutes, signature RS256
  • Refresh Token : 7 jours, hashé en base
  • Rotation des clés : Tous les 90 jours
  • JWKS endpoint : https://api.rewapp.fr/.well-known/jwks.json

9.1.2 Structure du JWT

Header
{
  "alg": "RS256",
  "typ": "JWT",
  "kid": "key_2025_v1"
}
Payload
{
  "sub": "user_abc123",
  "email": "jean.dupont@example.com",
  "role": "USER",
  "permissions": ["read:points", "write:qrcode"],
  "deviceId": "device_xyz789",
  "iat": 1732441800,
  "exp": 1732442700,
  "iss": "https://api.rewapp.fr",
  "aud": "rewapp-mobile"
}

9.2 Protection des Données

Chiffrement par Type

TypeAlgorithmeUtilisation
Transit TLS 1.3 Communications client-serveur
Repos (DB) AES-256-GCM Données sensibles en base
Mots de passe bcrypt (10 rounds) Hashage des mots de passe
Tokens SHA-256 Hashage des refresh tokens
QR Code HMAC-SHA256 Signature des QR codes
Données bancaires AES-256 Tokenisation PCI DSS

9.3 Protection contre les Attaques

9.3.1 Protection OWASP Top 10

  • SQL Injection : Requêtes paramétrées via Prisma ORM
  • XSS : Content Security Policy, encodage HTML
  • CSRF : Double Submit Cookie, SameSite=Strict
  • IDOR : UUID non séquentiels, vérification propriété
  • Rate Limiting : Par IP et par utilisateur

9.3.2 Gestion des Secrets

  • Variables CapRover : Credentials et API keys
  • Rotation automatique : Tous les 90 jours
  • Principe du moindre privilège : IAM roles
10

TESTS ET QUALITÉ DU CODE

10.1 Stratégie de Tests

Types de Tests

TypeCouvertureOutilsFréquence
Unit Tests 80% minimum Jest À chaque commit
Integration Tests 60% endpoints Jest + Supertest À chaque PR
E2E Tests Scénarios critiques Cypress Avant déploiement
Performance Tests Endpoints critiques k6 Hebdomadaire
Security Tests OWASP OWASP ZAP Mensuel

10.2 Standards de Code

  • ESLint : Configuration stricte
  • Prettier : Formatage automatique
  • TypeScript : Mode strict activé
  • Husky : Hooks pre-commit (lint + tests)

10.3 Pipeline CI/CD (GitHub Actions)

1. Checkout du code
2
2. Installation dépendances (npm ci)
3
3. Linting (ESLint + Prettier)
4
4. Build TypeScript
5
5. Tests unitaires avec couverture
6
6. Tests d'intégration
7
7. Build Docker image
8
8. Push vers ECR (branches main/release)
9
9. Déploiement staging automatique
10
10. Tests E2E sur staging
11
11. Déploiement production

Après approbation manuelle

11

DOCUMENTATION OPENAPI (SWAGGER)

11.1 Accès à la Documentation

  • Swagger UI : https://api.rewapp.fr/docs
  • OpenAPI JSON : https://api.rewapp.fr/docs/openapi.json
  • ReDoc : https://api.rewapp.fr/redoc

11.2 Organisation par Tags

Tags OpenAPI

TagDescription
AuthenticationAuthentification et gestion sessions
UsersGestion du profil utilisateur
PointsGestion des points de fidélité
QR CodesGénération et validation QR codes
TransactionsHistorique des transactions
PartnersRecherche et détails partenaires
BankingLiaison carte et virements
NotificationsGestion des notifications
AdminEndpoints administration

11.3 Génération de Clients

La spécification OpenAPI permet la génération automatique de clients :

  • TypeScript : openapi-typescript-codegen
  • Swift (iOS) : OpenAPIGenerator
  • Kotlin (Android) : OpenAPIGenerator
12

CONCLUSION ET BONNES PRATIQUES

12.1 Résumé de l'Architecture

Stack Backend

ComposantTechnologieAvantages
Framework NestJS (Node.js) Modulaire, TypeScript natif, DI
API Gateway Kong Scalable, plugins riches, monitoring
Base de données PostgreSQL + Redis Performant, fiable, adapté
Queue Bull Queue (Redis) Simple, Redis-native, robuste
ORM Prisma Type-safe, migrations, performance
Infrastructure AWS ECS Fargate Serverless containers, auto-scaling

12.2 Design Patterns Adoptés

  • Repository Pattern : Abstraction de l'accès aux données
  • Service Layer : Logique métier isolée et testable
  • DTO Pattern : Contrôle des données exposées
  • Factory Pattern : Création d'objets complexes
  • Observer Pattern : Événements asynchrones

12.3 Principes SOLID

  • Single Responsibility : Un service = une responsabilité
  • Open/Closed : Extension sans modification
  • Liskov Substitution : Interfaces interchangeables
  • Interface Segregation : Interfaces minimalistes
  • Dependency Inversion : Injection de dépendances

12.4 Points Clés

  • Scalabilité

    Architecture microservices avec auto-scaling horizontal

  • Sécurité

    Protection multicouche, conformité RGPD/PCI DSS

  • Performance

    Temps de réponse < 200ms, cache multi-niveaux

  • Maintenabilité

    Code modulaire, testé et documenté

  • Fiabilité

    SLA 99.9%, déploiement multi-AZ, circuit breakers