// FLAG TECHNOLOGY — Formation Chef de Projet

Maîtriser un projet tech
sans écrire une ligne de code

Tout ce que vous devez savoir pour diriger, comprendre et valider le développement de la plateforme MVNO-Light de A à Z. En langage humain.

18
modules de formation
0
ligne de code à écrire
100%
langage accessible
01
Vision globale du projet
Comprendre ce qu'on construit avant tout

Avant de parler de code ou de technologie, il faut comprendre ce que le système fait réellement. Imaginez un distributeur automatique de forfaits Internet — mais entièrement sur téléphone, sans carte physique, sans guichet, sans humain.

Pensez à un supermarché de données mobiles en ligne. L'utilisateur entre dans le magasin (l'application), choisit son forfait (1Go, 3Go...), paie en Mobile Money, et le forfait est déposé directement sur sa SIM en quelques secondes. Votre rôle : construire ce supermarché et le faire tourner.

Les 4 grands acteurs du système

L'utilisateur final
Il télécharge l'app, crée un compte, achète des forfaits. Il ne sait pas ce qui se passe derrière.
L'application mobile
Ce que l'utilisateur voit et touche sur son téléphone. La vitrine du magasin.
Le backend (cerveau)
Le moteur invisible qui reçoit les commandes, traite les paiements et active les forfaits.
Les opérateurs (MTN/Orange)
Ils possèdent le réseau. Votre système leur parle pour activer la data sur les SIM.

Le parcours d'un achat en 6 étapes

1. Utilisateur ouvre l'app
2. Choisit un forfait
3. Paie en MoMo
4. Backend vérifie le paiement
5. API opérateur activée
6. Data disponible sur SIM
Votre valeur ajoutée en tant que chef de projet : vous devez être capable d'expliquer ce parcours à n'importe qui — au client, à l'IA, à un développeur. C'est la base de tout.

02
Comment Internet fonctionne
Les bases que tout chef de projet doit connaître

Client vs Serveur

Tout sur Internet fonctionne selon un principe simple : un client demande, un serveur répond.

Le client, c'est vous dans un restaurant. Vous faites une commande. Le serveur, c'est la cuisine — elle reçoit la commande, la prépare et vous renvoie le plat. Votre application mobile est le client. Votre backend est le serveur.

Qu'est-ce qu'une requête HTTP ?

Quand votre application veut communiquer avec le backend, elle envoie une requête HTTP. C'est un message standardisé qui dit : "Je veux telle information" ou "Fais telle action".

Type de requêteCe que ça faitExemple dans votre projet
GETRécupérer une informationAfficher la liste des forfaits disponibles
POSTEnvoyer / créer quelque choseCréer un compte utilisateur, passer une commande
PUTModifier quelque choseMettre à jour les infos du profil utilisateur
DELETESupprimer quelque choseSupprimer un compte

Le HTTPS — pourquoi le "S" est vital

HTTP est la langue d'Internet. HTTPS est la même langue, mais dans une enveloppe scellée et cryptée. Sans le S, n'importe qui entre l'utilisateur et votre serveur peut lire les données qui transitent — y compris les numéros de téléphone et les informations de paiement.

Sur une plateforme financière comme la vôtre, le HTTPS n'est pas optionnel. C'est une obligation absolue sur chaque endpoint de votre système. Si l'IA produit du code en HTTP simple pour la production, c'est une erreur à corriger immédiatement.

Le JSON — le langage commun

Quand votre application et votre backend se parlent, ils utilisent un format standard appelé JSON. C'est simplement de l'information structurée, lisible par les humains et les machines.

// Exemple : ce que l'app envoie quand l'utilisateur achète un forfait { "user_id": "USR-4892", "forfait": "1GO_24H", "numero_sim": "237679910922", "moyen_paiement": "MTN_MOMO", "montant": 1500 }
Le JSON, c'est comme un bon de commande standardisé. Peu importe d'où vient la commande (iOS, Android, web), le format est toujours le même. Le backend sait exactement comment le lire.

03
L'architecture du système
La carte du territoire — comment les pièces s'assemblent

L'architecture, c'est le plan de construction de votre système. Elle définit quelles pièces existent, comment elles communiquent, et qui fait quoi. Un système mal architecturé au départ coûte 3 à 5 fois plus cher à réparer ensuite.

Les couches de votre système

1
Application mobile (Frontend)
Ce que l'utilisateur voit et touche. Elle ne contient aucune logique sensible — juste l'affichage et la collecte des actions utilisateur.
Flutter / React Native
2
API Gateway (Portail d'entrée)
Le gardien de votre système. Toutes les requêtes passent ici. Il vérifie que l'utilisateur est bien identifié avant de les laisser entrer.
Node.js / Express
3
Logique métier (Le cerveau)
C'est ici que les décisions sont prises : valider une commande, déclencher un paiement, gérer les remboursements, orchestrer les appels aux opérateurs.
Services Backend
4
File d'attente (Gestion des tâches)
Les tâches longues ou risquées (appel API opérateur, envoi SMS) sont mises en file. Si ça échoue, le système réessaie automatiquement.
RabbitMQ / CloudAMQP
5
Base de données (La mémoire)
Tout y est stocké : utilisateurs, transactions, forfaits, logs. C'est le coffre-fort du système.
PostgreSQL (Supabase)
6
Services externes (MTN, Orange, CinetPay)
Votre système leur parle via leurs API. Vous ne contrôlez pas ces systèmes — vous devez gérer leurs pannes et leurs lenteurs.
API Tiers
Règle d'or : chaque couche ne parle qu'à la couche adjacente. L'application mobile ne communique jamais directement avec la base de données. Tout passe par le backend. C'est une règle de sécurité fondamentale.

04
Le backend expliqué
Le moteur invisible de votre plateforme
Le backend, c'est la cuisine d'un restaurant. Le client (l'app) ne la voit jamais. Mais c'est là que tout se prépare : les commandes arrivent, sont traitées dans l'ordre, et les plats (données) sont envoyés au bon endroit.

Ce que fait concrètement votre backend

Authentification
Vérifier que c'est bien le bon utilisateur qui se connecte. Gérer les tokens de connexion.
Paiements
Déclencher la demande de paiement, attendre la confirmation, gérer les échecs et remboursements.
Provisionnement
Appeler l'API MTN ou Orange pour activer le forfait sur la SIM de l'utilisateur.
Logs & Historique
Enregistrer chaque action dans la base de données. Indispensable pour le support client.

Synchrone vs Asynchrone — concept clé

C'est l'un des concepts les plus importants à comprendre pour votre projet.

Synchrone : Vous appelez un taxi et vous attendez debout à la porte jusqu'à ce qu'il arrive. Vous ne faites rien d'autre entre-temps.

Asynchrone : Vous commandez un taxi via une app, il vous prévient quand il arrive. En attendant, vous continuez votre vie normalement.

Les appels aux API des opérateurs (MTN, Orange) sont asynchrones. Votre backend envoie la demande d'activation et n'attend pas la réponse bloqué — il continue à traiter d'autres commandes. Quand l'opérateur répond, le système reprend le traitement. C'est ce qui rend le système rapide et scalable.

Si le backend est programmé en mode synchrone pour les appels opérateurs, et que MTN met 30 secondes à répondre, tous les utilisateurs en attente pendant ces 30 secondes verront l'application bloquer. C'est inacceptable. Vérifiez que l'IA code bien en asynchrone pour ces parties.

L'environnement de développement vs production

EnvironnementUsageDonnéesAccès
DevelopmentL'IA écrit le code iciFausses données de testDéveloppeurs seulement
Staging (Recette)Vous testez ici avant de livrerDonnées de test réalistesVous + client
ProductionCe que les vrais utilisateurs voientDonnées réellesTout le monde
Règle absolue : on ne teste jamais directement en production. Toute modification passe par development → staging → production. Si l'IA vous propose de tester "directement sur le vrai système", refusez.

05
Les API et la communication
Comment les systèmes se parlent entre eux
Une API (Application Programming Interface), c'est comme un serveur dans un restaurant. Vous ne pouvez pas entrer en cuisine vous-même. Vous parlez au serveur, qui transmet votre commande à la cuisine selon des règles précises. L'API est ce serveur — une interface standardisée pour faire des demandes à un système externe.

Les API de votre projet

APIRôleCe que vous envoyezCe que vous recevez
MTN MoMo APIDéclencher un paiement Mobile MoneyNuméro, montant, référenceSuccès ou échec + ID transaction
Orange Partner APIActiver data sur SIM OrangeMSISDN, volume data, duréeConfirmation activation ou erreur
CinetPay APIAgréger plusieurs paiementsMontant, moyen de paiement, webhook URLLien de paiement ou callback
Votre propre APIServir l'application mobileRequêtes de l'app (commandes, profils...)Données JSON formatées

Le Webhook — comprendre les rappels automatiques

Un webhook, c'est l'inverse d'une requête normale. Au lieu de votre système qui demande "est-ce que le paiement est passé ?", c'est CinetPay qui appelle votre système automatiquement dès que le paiement est confirmé.

C'est comme un livreur qui sonne à votre porte quand le colis arrive — plutôt que vous qui appelez toutes les 5 minutes pour demander "il est où mon colis ?"
Le webhook de confirmation de paiement est le point le plus critique de votre système. Si votre backend ne reçoit pas ce webhook (panne réseau, erreur de code), la data n'est pas activée mais l'argent est débité. C'est la source numéro 1 de litiges clients. Assurez-vous que l'IA implémente un système de vérification et de retry sur ce point précis.

Les clés API — ce qu'elles sont et comment les protéger

Une clé API (API Key), c'est comme un mot de passe qui identifie votre application auprès d'un service externe. MTN vous en donne une pour accéder à leur système. CinetPay aussi.

Ne jamais mettre une clé API directement dans le code de l'application mobile. Si quelqu'un décompile votre app, il peut voler votre clé et utiliser votre compte MTN/Orange à votre place. Les clés API sont stockées uniquement côté backend, dans des variables d'environnement sécurisées — jamais dans le code visible.

06
La base de données
La mémoire permanente de votre système
La base de données, c'est le registre officiel de votre entreprise. Chaque transaction, chaque utilisateur, chaque forfait acheté y est inscrit en permanence. Si votre serveur s'éteint et redémarre, toutes les données sont toujours là.

Les tables principales de votre système

TableCe qu'elle contientImportance
usersProfil, numéro téléphone, statut KYC, date inscriptionCritique
transactionsChaque achat : montant, statut, date, référence paiementCritique
forfaitsCatalogue des forfaits disponibles : volume, prix, duréeÉlevée
provisionnementsHistorique des activations data : opérateur, MSISDN, statutCritique
logs_apiChaque appel aux API externes : requête, réponse, tempsÉlevée
kyc_documentsStatut vérification identité, référence document (pas le fichier lui-même)Critique

Les sauvegardes — ce qu'on oublie toujours

Une base de données sans sauvegarde automatique est une bombe à retardement. Si le serveur tombe ou si une erreur de code supprime des données, sans sauvegarde récente, c'est tout l'historique des transactions clients qui disparaît.

Exigez que l'IA configure des sauvegardes automatiques quotidiennes de la base de données, stockées dans un endroit différent du serveur principal. Supabase et Railway font ça automatiquement — c'est l'une des raisons pour lesquelles on les recommande.

Les migrations — gérer l'évolution de la base

Quand vous ajoutez une nouvelle fonctionnalité, la structure de la base de données doit évoluer. Une migration, c'est un script qui modifie la base de façon contrôlée et réversible.

Demandez à l'IA de systématiquement créer des fichiers de migration pour chaque modification de la base de données. Sans ça, les modifications manuelles en production deviennent incontrôlables et risquent de corrompre les données.

07
Les transactions et les files d'attente
Le cœur critique de la plateforme financière

Le problème du Double-Spending

Imaginez qu'un utilisateur appuie deux fois très vite sur le bouton "Acheter". Sans protection, votre système pourrait traiter deux commandes identiques, débiter deux fois le compte, mais n'activer la data qu'une fois. Ou pire, activer deux fois la data sans avoir été payé deux fois.

C'est le même problème que quand vous glissez deux fois votre carte bancaire parce que le terminal a semblé ne pas répondre. La protection anti double-spending, c'est le mécanisme qui détecte ça et bloque la deuxième tentative.
Demandez à l'IA d'implémenter un identifiant unique d'idempotence sur chaque transaction. En clair : chaque tentative d'achat reçoit un code unique. Si le même code arrive deux fois, le système ignore la deuxième. C'est la protection standard contre le double-spending.

La file d'attente — pourquoi c'est indispensable

L'API d'Orange ou de MTN peut prendre 2 secondes, 10 secondes, ou parfois tomber complètement. Si votre backend attend debout que l'opérateur réponde, tout le système est bloqué. La file d'attente résout ça.

Paiement confirmé
Message mis en file
Worker traite le message
API opérateur appelée
Succès ou Retry

La logique de retry (nouvelle tentative automatique)

Si l'API de l'opérateur échoue, le système doit réessayer automatiquement. Mais pas n'importe comment :

TentativeDélai avant réessaiRaison
1ère30 secondesPeut être une micro-coupure temporaire
2ème2 minutesDélai exponentiel — ne pas surcharger l'opérateur
3ème10 minutesDernier essai automatique
Après échec totalRemboursement automatique déclenchée
Cette logique de retry avec remboursement automatique est ce qui distingue une plateforme professionnelle d'une application amateur. Vérifiez explicitement que l'IA l'implémente — c'est non négociable sur un système financier.

08
L'application mobile
Ce que vos utilisateurs voient et touchent

Flutter — pourquoi ce choix ?

Flutter est un outil de développement de Google qui permet d'écrire une seule fois le code et d'obtenir automatiquement une application qui fonctionne sur iOS et Android. Sans Flutter, il faudrait deux équipes de développeurs et deux codes séparés.

Un seul code
iOS + Android depuis le même code source. Maintenance deux fois plus simple.
Performances natives
L'application est aussi fluide qu'une app codée spécifiquement pour chaque OS.
Compatible Lovable AI
Les outils IA génèrent facilement des interfaces Flutter de qualité.

Les écrans essentiels du MVP

  • Écran d'accueil & onboarding Première impression — doit inspirer confiance
  • Inscription avec numéro de téléphone + vérification par SMS OTP
  • KYC — vérification d'identité Upload CNI + selfie
  • Catalogue des forfaits Affichage clair : volume, durée, prix
  • Écran de commande & confirmation Récapitulatif avant paiement
  • Paiement Mobile Money Interface MoMo ou Orange Money
  • Confirmation d'activation Notification push + écran succès
  • Historique des achats Liste de toutes les transactions
  • Profil utilisateur Gestion du compte, solde, paramètres
  • Support client Chat ou formulaire de contact

Les notifications push — comment ça fonctionne

Quand la data est activée, l'utilisateur reçoit une notification sur son téléphone. Ça passe par un service tiers (Firebase Cloud Messaging de Google, gratuit) qui achemine la notification à l'appareil même si l'application est fermée.

Les notifications push sont un outil de rétention puissant. En dehors des confirmations de transaction, elles peuvent alerter quand la data est presque épuisée (50 Mo restants), ce qui génère un nouvel achat. Prévoyez ça dès le MVP.

L'état de l'application — concept important

Dans une application mobile, l'état, c'est l'ensemble des informations affichées à un instant T. Quand l'utilisateur achète un forfait, l'état doit se mettre à jour partout : le solde affiché, l'historique, le statut de la commande. Si l'état est mal géré, l'utilisateur voit des données incohérentes — ce qui génère des appels au support.


09
Le KYC — Vérification d'identité
Obligation légale et protection de la plateforme
KYC signifie "Know Your Customer" — Connaître votre client. C'est exactement ce que fait une banque quand elle vous demande votre carte d'identité pour ouvrir un compte. Sur votre plateforme, c'est obligatoire par la réglementation camerounaise pour toute activation de service télécom.

Le flux KYC de votre application

Inscription numéro
Vérification SMS OTP
Photo CNI recto/verso
Selfie (liveness check)
Validation système
Compte activé

Le Liveness Check — éviter les fraudes

Le liveness check, c'est la vérification que la personne qui prend le selfie est bien vivante et présente — pas une photo d'une photo. L'utilisateur est invité à sourire, tourner la tête, ou cligner des yeux. Ça empêche quelqu'un d'utiliser la photo d'identité d'une autre personne.

Stockage sécurisé des documents

Les photos de CNI sont des données extrêmement sensibles. Elles ne doivent jamais être stockées directement dans la base de données. Elles vont dans un espace de stockage sécurisé (Cloudflare R2 ou AWS S3) avec chiffrement, accès restreint, et suppression automatique après validation. Seule une référence (un lien temporaire) est gardée en base.

Les niveaux de compte

NiveauConditionLimites
Non vérifiéJuste le numéro confirméPeut parcourir le catalogue, pas d'achat
KYC basiqueCNI uploadée, en attente validationAchat limité (ex: max 2 000 FCFA/jour)
KYC validéIdentité confirméeAccès complet à tous les forfaits

10
Les paiements Mobile Money
L'argent qui circule — le flux le plus critique

Les deux modèles d'intégration

ModèleComment ça marcheAvantageInconvénient
Intégration directeVous connectez votre backend directement à l'API MTN et Orange séparémentMoins de frais intermédiairesDouble travail, double maintenance
Agrégateur (CinetPay)CinetPay gère MTN + Orange + d'autres en une seule connexionUne seule intégration, plus rapideCommission 1,5% – 3% par transaction
Pour le MVP, utilisez CinetPay ou Monetbil. Le gain de temps de développement compense largement les frais de commission. En Phase 2, si les volumes sont importants, vous pourrez envisager les intégrations directes pour réduire les coûts.

Le flux de paiement sécurisé

1
L'utilisateur initie le paiement dans l'app
Il saisit son numéro MoMo et confirme le montant
2
Votre backend crée une transaction en statut "En attente"
L'enregistrement en base AVANT le paiement est essentiel — traçabilité totale
3
CinetPay envoie la demande de débit à MTN/Orange
L'utilisateur reçoit un SMS de confirmation sur son téléphone
4
CinetPay envoie un webhook à votre backend
Message signé cryptographiquement confirmant le succès ou l'échec
5
Seulement après webhook "succès" → activation data
Jamais avant. Jamais sans vérification de la signature du webhook.

Le problème du décalage de trésorerie

CinetPay collecte l'argent pour vous mais le reverse sur votre compte bancaire avec un délai de 24 à 72 heures. Pendant ce temps, vous avez déjà payé l'opérateur pour activer la data. Vous avez besoin d'un fonds de roulement pour couvrir ce décalage — c'est une dépense réelle à provisionner.


11
Provisionnement data et eSIM
Comment la data atterrit sur le téléphone

Le provisionnement MSISDN (SIM physique)

Le MSISDN, c'est simplement le numéro de téléphone unique associé à une SIM. Quand un utilisateur achète un forfait, votre backend appelle l'API de l'opérateur avec ce numéro et lui dit "ajoute X mégaoctets sur ce compte". L'opérateur exécute.

C'est comme appeler le gérant d'un parking pour dire "ajoutez 2 heures sur la place numéro 47". Vous ne bougez pas la voiture, vous ne touchez pas la barrière — vous parlez juste à quelqu'un qui a accès au système.

La eSIM — comment ça fonctionne

Une eSIM (SIM embarquée), c'est une puce soudée à l'intérieur du téléphone. Au lieu d'insérer une carte physique, on télécharge un "profil réseau" directement sur cette puce via Internet.

Utilisateur achète eSIM dans l'app
Votre backend appelle Telnyx/Zendit
QR code généré
Utilisateur scanne le QR
Profil téléchargé sur la puce
Connexion active
Pour le MVP, concentrez-vous sur le provisionnement MSISDN (SIM physique). La eSIM est plus complexe, nécessite des certifications Apple/Samsung, et le marché camerounais n'est pas encore mature pour ça. Prévoyez-la en Phase 2.

12
La sécurité de A à Z
Protéger les utilisateurs et votre plateforme
Sur une plateforme financière, une faille de sécurité ne signifie pas juste un bug à corriger. Ça signifie de l'argent volé, des données personnelles exposées, et une réputation détruite définitivement.

Les menaces principales à connaître

MenaceCe que c'est en simpleComment l'éviter
Injection SQLUn attaquant envoie du code malveillant à la place d'un numéro de téléphone pour accéder à toute la base de donnéesL'IA doit utiliser des "requêtes préparées" — jamais construire des requêtes SQL avec du texte utilisateur directement
Attaque par force bruteUn robot essaie des milliers de mots de passe par secondeLimiter le nombre de tentatives de connexion (rate limiting) — bloquer après 5 échecs
Vol de tokenQuelqu'un intercepte le jeton de connexion d'un utilisateur et se connecte à sa placeTokens avec durée de vie courte (1h), HTTPS obligatoire, refresh tokens sécurisés
Webhook falsifiéUn attaquant envoie un faux message "paiement réussi" pour déclencher l'activation de data sans payerVérifier la signature cryptographique de chaque webhook reçu — si la signature ne correspond pas, ignorer
Exposition de donnéesDes données sensibles (CNI, transactions) accessibles sans restrictionChiffrement des données au repos, contrôle d'accès strict, logs de tous les accès

L'authentification — JWT (tokens de connexion)

Quand un utilisateur se connecte, votre backend lui donne un jeton JWT (JSON Web Token). C'est comme un badge temporaire. Chaque fois que l'application fait une requête, elle présente ce badge. Le backend vérifie que le badge est valide avant de répondre.

C'est comme un bracelet de festival. Vous le montrez à l'entrée de chaque zone. Sans bracelet, ou avec un bracelet expiré, vous n'entrez pas. Pas besoin de revérifier votre identité à chaque fois.

Le rate limiting — freiner les abus

Le rate limiting limite le nombre de requêtes qu'une même adresse IP peut faire en un temps donné. Sans ça, un attaquant peut envoyer des milliers de requêtes par seconde pour tester des mots de passe ou saturer votre serveur.

// Exemple de règle de rate limiting à demander à l'IA // Connexion : max 5 tentatives par 15 minutes par IP // Achat : max 10 transactions par heure par utilisateur // API publique : max 100 requêtes par minute par IP

Le pentest — tester comme un attaquant

Un test de pénétration (pentest), c'est quand vous payez un expert en sécurité pour qu'il essaie de hacker votre propre système avant que les vrais hackers ne le fassent. Il vous remet un rapport avec les failles trouvées et comment les corriger.

Exigez un pentest avant la mise en production. C'est l'étape que beaucoup sautent pour économiser — et c'est exactement l'étape qui évite les catastrophes. Prévoyez 500 000 à 1 200 000 FCFA pour ça dans votre budget.

13
Confidentialité et réglementation
Les obligations légales que votre système doit respecter

Les données que vous collectez

Donnée collectéePourquoiDurée de conservationQui peut y accéder
Numéro de téléphoneIdentification + provisionnementDurée du compteBackend uniquement
Photo CNIKYC obligatoireSupprimer après validationSystème KYC + admin
Historique transactionsSupport client + comptabilité10 ans (obligation fiscale)Admin + utilisateur lui-même
Localisation approximativeDétection fraude30 joursSystème anti-fraude
Logs de connexionSécurité1 anAdmin sécurité

Ce que la loi camerounaise exige

  • Informer clairement l'utilisateur des données collectées Via une politique de confidentialité accessible dans l'app
  • Obtenir le consentement explicite avant toute collecte Case à cocher lors de l'inscription — pas pré-cochée
  • Permettre à l'utilisateur de supprimer son compte Et toutes ses données personnelles avec
  • Ne pas vendre les données à des tiers Jamais, même à des partenaires commerciaux
  • Sécuriser les données contre les accès non autorisés Chiffrement, contrôle d'accès, logs d'audit
  • Notifier les utilisateurs en cas de fuite de données Dans les 72h suivant la découverte

La politique de confidentialité dans l'app

Ce n'est pas juste un document juridique à coller quelque part. C'est un écran dans l'application, rédigé en français simple, que l'utilisateur peut consulter à tout moment depuis son profil. Apple et Google refusent les applications sans politique de confidentialité lors de la validation sur les stores.


14
Les tests
Comment vérifier que le système fait ce qu'il est censé faire

Les types de tests à connaître

Type de testCe qu'il testeQui le faitQuand
Tests unitairesUne petite fonction isolée (ex: calculer la marge)L'IA + développeurEn continu pendant le dev
Tests d'intégrationQue les différentes parties communiquent bien entre ellesDéveloppeur + QAAprès chaque module terminé
Tests de bout en boutSimuler un vrai achat de A à ZQA + vous-mêmeAvant chaque livraison
Tests de chargeQue le système tient quand 1000 personnes achètent en même tempsQA spécialiséAvant le Go-Live
Tests de sécuritéChercher les failles exploitablesExpert sécurité externeAvant le Go-Live

Les scénarios de test critiques à valider vous-même

  • Achat réussi complet : paiement MoMo → data activée Le parcours normal qui doit fonctionner parfaitement
  • Paiement échoué → aucune activation → pas de débit L'utilisateur ne paie pas et ne reçoit rien
  • Paiement réussi mais API opérateur tombe → remboursement auto Le cas le plus délicat — vérifiez que l'argent revient bien
  • Double appui sur "Acheter" → une seule transaction créée Protection anti double-spending
  • Connexion avec mauvais mot de passe 5 fois → compte bloqué temporairement Rate limiting actif
  • Webhook avec fausse signature → rejeté sans action Protection contre les webhooks falsifiés
  • Upload CNI corrompue → message d'erreur clair Gestion d'erreurs propre côté utilisateur
  • App utilisée sans connexion Internet → message d'erreur clair Pas de crash silencieux
Ne validez jamais une livraison sans avoir personnellement parcouru ces 8 scénarios sur l'environnement de staging. L'IA génère du code mais ne teste pas elle-même les cas limites dans le monde réel.

15
Le déploiement et le Cloud
Mettre le système en ligne et le faire tourner

Le déploiement continu — CI/CD

CI/CD (Intégration Continue / Déploiement Continu) est un processus automatique qui prend le code de l'IA, le teste, et le met en ligne sans intervention manuelle. Chaque fois que du nouveau code est validé, le système tourne automatiquement les tests et si tout passe, déploie la nouvelle version.

C'est comme une chaîne de montage automatisée. Dès qu'un nouveau composant arrive (nouveau code), la chaîne le vérifie, l'assemble avec le reste, et sort le produit fini. Si une vérification échoue, la chaîne s'arrête et vous prévient.

Les variables d'environnement

Les informations sensibles (clés API, mots de passe de base de données) ne sont jamais écrites dans le code. Elles sont stockées dans des variables d'environnement — des paramètres secrets configurés directement sur le serveur, invisibles dans le code source.

// Ce que l'IA écrit dans le code (correct) const apiKey = process.env.MTN_API_KEY; // Ce que l'IA ne doit JAMAIS écrire (dangereux) const apiKey = "sk-1234567890abcdef"; // ❌ jamais ça

Le monitoring — surveiller que tout tourne

Une fois en production, vous avez besoin de savoir en temps réel si quelque chose ne va pas. Le monitoring, c'est un tableau de bord qui vous alerte immédiatement si une erreur survient, si le serveur est lent, ou si une transaction échoue en masse.

Sentry
Capture chaque erreur en production et vous envoie une alerte avec le détail exact du problème.
UptimeRobot
Vérifie toutes les 5 minutes que votre API répond. Vous alerte par SMS si elle est hors ligne.
Railway Dashboard
Consommation CPU, mémoire, requêtes par seconde — la santé de votre serveur en temps réel.

16
Gérer l'IA comme outil de développement
Tirer le maximum de Claude Code et Lovable
L'IA est un développeur extraordinairement rapide mais sans jugement propre. C'est vous qui portez le jugement. Votre rôle est de diriger, valider, et corriger — pas d'exécuter.

Comment bien prompter l'IA pour du code

Mauvais promptBon prompt
"Fais moi l'intégration MoMo""Crée un service backend Node.js qui appelle l'API MTN MoMo pour débiter un compte. Le paiement ne doit se déclencher que si l'utilisateur est KYC validé. En cas d'échec, déclenche un remboursement via l'API de décaissement CinetPay."
"Code la sécurité""Ajoute un middleware d'authentification JWT sur toutes les routes /api/v1/. Ajoute un rate limiting de 5 requêtes/minute sur /auth/login. Vérifie la signature HMAC-SHA256 sur le endpoint /webhooks/payment."

Ce que vous devez vérifier dans chaque livraison de l'IA

  • Toutes les routes API sont-elles protégées par authentification ? Aucune donnée sensible accessible sans token valide
  • Les clés API sont-elles dans des variables d'environnement ? Jamais en dur dans le code
  • Les appels aux opérateurs sont-ils asynchrones ? Avec retry automatique et timeout configuré
  • Le webhook de paiement vérifie-t-il la signature ? Protection contre les webhooks falsifiés
  • L'activation data se déclenche-t-elle APRÈS confirmation paiement ? Jamais avant, jamais sans vérification
  • Les erreurs sont-elles loggées en base de données ? Pour le support client et l'audit
  • Y a-t-il des tests automatisés pour les flux critiques ? Minimum : achat réussi, paiement échoué, remboursement

Les limites de l'IA à connaître

Elle ne teste pas elle-même
L'IA génère du code qui semble correct mais ne vérifie pas son comportement dans des conditions réelles d'Afrique subsaharienne.
Elle peut oublier le contexte
Sur un long projet, elle peut proposer du code qui contredit des décisions prises au début. Gardez un document de référence des décisions techniques.
APIs locales peu documentées
Les API MTN/Orange Cameroun sont mal documentées. L'IA peut générer du code basé sur une documentation obsolète. Testez toujours en sandbox réelle.

17
Standards et bonnes pratiques
Les règles du métier que tout projet pro respecte

Le versioning du code — Git

Git est un système qui garde l'historique de chaque modification du code. Si l'IA produit du code qui casse quelque chose, vous pouvez revenir à la version précédente en une commande. C'est la ceinture de sécurité du développement.

Toute modification de code passe par Git. Aucune modification directe sur le serveur de production. Si l'IA modifie du code, ce code doit être commité (enregistré) dans Git avant d'être déployé.

La convention de nommage des API — REST

REST est un standard de conception d'API. Il définit comment nommer et organiser vos endpoints de façon logique et prévisible.

// Convention REST — à exiger de l'IA GET /api/v1/forfaits → liste tous les forfaits GET /api/v1/forfaits/1GO_24H → détail d'un forfait POST /api/v1/commandes → créer une nouvelle commande GET /api/v1/users/:id/historique → historique d'un utilisateur POST /api/v1/auth/login → connexion POST /api/v1/webhooks/paiement → réception webhook CinetPay

La gestion des erreurs — codes de statut HTTP

CodeSignificationExemple dans votre projet
200SuccèsForfait activé avec succès
201Créé avec succèsCompte utilisateur créé
400Mauvaise requête (erreur client)Numéro de téléphone invalide
401Non authentifiéToken de connexion absent ou expiré
403Accès refuséKYC non validé — achat impossible
404Non trouvéForfait inexistant
409ConflitTransaction déjà en cours (anti double-spending)
500Erreur serveurPanne interne — à logger immédiatement

Le versioning d'API — pourquoi /v1/

Remarquez le /v1/ dans tous les endpoints. Quand vous sortez une version 2 de l'API avec des changements incompatibles, les anciennes applications mobiles continuent de fonctionner sur /v1/ pendant que les nouvelles utilisent /v2/. Sans ça, une mise à jour backend peut casser toutes les apps mobiles déjà installées chez les utilisateurs.


18
Checklist Go-Live
Les 30 vérifications avant de lancer en production

Technique

  • HTTPS actif sur tous les endpoints Vérifiez le cadenas dans le navigateur sur chaque URL
  • Variables d'environnement configurées en production Aucune clé API en dur dans le code
  • Base de données avec sauvegardes automatiques quotidiennes activées Testez une restauration avant le Go-Live
  • Monitoring Sentry + UptimeRobot configurés et testés Vous devez recevoir une alerte test sur votre téléphone
  • Rate limiting actif sur toutes les routes sensibles Connexion, paiement, inscription
  • Signature webhook vérifiée sur l'endpoint paiement Testez un webhook avec fausse signature — il doit être rejeté
  • Logique de retry active sur les appels opérateurs Simulez une panne de l'API MTN — le retry doit se déclencher
  • Remboursement automatique testé et fonctionnel Déclenchez manuellement un échec d'activation — l'argent doit revenir
  • Tests de charge effectués (simulation 500 utilisateurs simultanés) Le serveur ne doit pas tomber
  • Pentest réalisé et failles critiques corrigées Rapport signé par le prestataire sécurité

Légal & Business

  • Politique de confidentialité accessible dans l'app En français, compréhensible, à jour
  • CGU (Conditions Générales d'Utilisation) acceptées à l'inscription Case à cocher non pré-cochée
  • Compte marchand CinetPay / Monetbil validé et testé Effectuez un vrai paiement test de 100 FCFA
  • Contrat d'interconnexion MTN signé Accès production confirmé
  • Contrat d'interconnexion Orange signé Accès production confirmé
  • Récépissé SVA / licence ART obtenu Document en main
  • Fonds de roulement disponible sur le compte Minimum 3 mois d'exploitation projetée

Stores & Distribution

  • Compte Apple Developer actif Membership annuel payé
  • Application soumise à Apple et validée Délai moyen 5 à 10 jours ouvrés
  • Compte Google Play Developer actif Frais uniques payés
  • Application soumise sur Google Play et validée Délai moyen 1 à 3 jours
  • Captures d'écran et description en français prêtes Requises par les deux stores
  • Politique de confidentialité URL publique fournie aux stores Apple la vérifie systématiquement

Après le Go-Live — la première semaine

  • Surveiller Sentry toutes les heures les 3 premiers jours Les premières erreurs réelles arrivent toujours dans cette fenêtre
  • Vérifier manuellement les premières transactions réelles Confirmer que la data est bien activée chez les premiers utilisateurs
  • Surveiller les délais de réponse des API opérateurs Une dégradation progressive peut signaler un problème d'accord B2B
  • Activer un canal de support client dès J1 WhatsApp Business ou email dédié — les premiers utilisateurs auront des questions
Vous êtes maintenant équipé pour diriger ce projet comme un professionnel. Le code, c'est l'IA. La vision, les décisions, la validation — c'est vous.