Architecture Backend API
La solution de cashback nouvelle génération
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
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
- Webhook reçu du fournisseur bancaire (
transaction.created) - Matching avec les partenaires REWAPP (par MCC code ou nom commerçant)
- Calcul du cashback :
montant × taux_partenaire × (1 + bonus_palier) - Crédit des points via le Service Points
- 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
Étape 2 : Blocage des points
Points bloqués immédiatement (non utilisables)
Étape 3 : Génération QR
QR code généré avec validité 60 secondes
Étape 4 : Affichage compteur
Compteur visuel affiché (vert → orange → rouge)
Étape 5 : Scan ou expiration
Scan par partenaire ou expiration automatique
É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 actifrejected: Refusé avec motifsuspended: Suspendu temporairementinactive: 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 possibleprocessing: En cours de traitement, annulation impossiblecompleted: 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 à transactionqr_payment_success: Paiement QR validéwithdrawal_completed: Virement effectuétier_upgrade: Passage au palier supérieurpoints_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 |
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
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 bienvenuetransaction.detected: Calcul et crédit des pointspoints.credited: Notification push utilisateurqr_code.scanned: Débit points + notificationwithdrawal.requested: Initiation du virementtier.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
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
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
GESTION DES ERREURS ET CODES HTTP
6.1 Format Standard des Erreurs
Toutes les réponses d'erreur suivent un format JSON standardisé :
{
"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
| Code | Signification | Utilisation |
|---|---|---|
| 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
| Code | Signification | Utilisation |
|---|---|---|
| 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
| Code | Signification | Utilisation |
|---|---|---|
| 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 incorrectsAUTH_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 invalideAUTH_BIOMETRIC_FAILED: Authentification biométrique échouée
6.3.2 Erreurs Points (POINTS_)
POINTS_INSUFFICIENT_BALANCE: Solde de points insuffisantPOINTS_AMOUNT_TOO_LOW: Montant inférieur au minimum (10 points)POINTS_ALREADY_REDEEMED: Points déjà utilisésPOINTS_EXPIRED: Points expirésPOINTS_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éeBANK_CARD_ALREADY_LINKED: Carte déjà liéeBANK_IBAN_INVALID: IBAN invalideBANK_WITHDRAWAL_PENDING: Virement déjà en coursBANK_WITHDRAWAL_MINIMUM: Minimum 100 points non atteint
FORMATS DE RÉPONSE API STANDARDISÉS
7.1 Structure des Réponses
7.1.1 Réponse de Succès Simple
{
"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
{
"success": true,
"data": [...],
"pagination": {
"page": 1,
"limit": 20,
"total": 150,
"totalPages": 8,
"hasNext": true,
"hasPrev": false
}
}
7.2 Exemples de Réponses
/api/v1/points/balance
Retourne le solde de points de l'utilisateur connecté.
Réponse 200 OK
{
"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"
}
}
}
/api/v1/qr-codes/generate
Génère un QR code de paiement sécurisé.
Réponse 201 Created
{
"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)
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: trueSunset: Sat, 24 Nov 2026 23:59:59 GMTX-API-Warn: Message d'avertissement
Phases du Cycle de Vie
| Phase | Description | Duré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 |
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
{
"alg": "RS256",
"typ": "JWT",
"kid": "key_2025_v1"
}
{
"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
| Type | Algorithme | Utilisation |
|---|---|---|
| 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
TESTS ET QUALITÉ DU CODE
10.1 Stratégie de Tests
Types de Tests
| Type | Couverture | Outils | Fré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. Installation dépendances (npm ci)
3. Linting (ESLint + Prettier)
4. Build TypeScript
5. Tests unitaires avec couverture
6. Tests d'intégration
7. Build Docker image
8. Push vers ECR (branches main/release)
9. Déploiement staging automatique
10. Tests E2E sur staging
11. Déploiement production
Après approbation manuelle
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
| Tag | Description |
|---|---|
Authentication | Authentification et gestion sessions |
Users | Gestion du profil utilisateur |
Points | Gestion des points de fidélité |
QR Codes | Génération et validation QR codes |
Transactions | Historique des transactions |
Partners | Recherche et détails partenaires |
Banking | Liaison carte et virements |
Notifications | Gestion des notifications |
Admin | Endpoints 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
CONCLUSION ET BONNES PRATIQUES
12.1 Résumé de l'Architecture
Stack Backend
| Composant | Technologie | Avantages |
|---|---|---|
| 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