Aller au contenu
SYS–01Étude de casEn production

The Mad Space

Marketplace print-on-demand connectant créateurs et consommateurs. ~15 000 LOC, 30+ endpoints API, auth custom session-based, OAuth 2.0 Google, conformité GDPR/Loi 25, 7+ intégrations B2B et fulfillment automatisé Gelato.

Rôle
Seul ingénieur
Durée
~3 mois (1re version)
Stack
Next.js · PostgreSQL
Statut
En production
01

Contexte

Une place de marché d'impression à la demande pensée pour valoriser les idées créatives, avec un partage des profits transparent.

  • Partage des profits : 10–20 % aux porteurs d'idées, 20–35 % aux designers
  • 3 rôles utilisateurs : admin, créateur, client
  • 4 devises (CAD, USD, EUR, GBP) et 2 langues
  • 7+ services externes branchés, maintenus par un seul ingénieur
02

Contraintes

Une première version rapide, sécurisée dès le premier paiement, conforme dès le jour 1.

  • ~3 mois pour la première version
  • Paiements réels dès le lancement : sécurité non négociable
  • Conformité au RGPD, à la Loi 25 et à la Loi 96 dès le jour 1
  • Client non technique : chaque décision lui est expliquée
03

Décisions

Trois décisions d'architecture ont défini le projet — chacune un compromis assumé.

WordPress ou solution sur mesure ?
Contrainte
Première version en ~3 mois, un seul développeur, multidevise.
Choix
Next.js sur mesure (App Router).
Compromis
Plus de code initial à écrire.
Traitements en périphérie et processus complexes rendus possibles.
Sécurité des paiements
Contrainte
Paiements réels dès le lancement.
Choix
Notifications Stripe signées (HMAC) + limitation du débit.
Compromis
Chemins d'erreur plus longs à coder.
Résiste aux requêtes falsifiées et aux notifications dupliquées.
Organisation des processus
Contrainte
4 processus métier à maintenir seul.
Choix
Modules isolés par processus.
Compromis
Un peu de duplication structurelle.
4e processus (fidélité) ajouté en quelques jours.
04

Architecture

Le chemin d'une commande, du client au fulfillment : requête → API vérifiée par signature (HMAC) → Prisma/PostgreSQL → traitement automatisé Gelato/Stripe, sans intervention manuelle.

05

Résultats

Le gain le plus concret : le traitement d'une commande complexe, divisé par plus de deux.

~15 000
lignes de TypeScript
30+
points d'API REST
4
processus métier
150–300ms
temps de réponse
06

Apprentissages

Les choix structurants ont payé ; l'outillage de test aurait dû venir plus tôt.

  • Next.js sur mesure plutôt que WordPress a rendu possible tout le reste
  • Processus isolés : le 4e (fidélité) ajouté en quelques jours
  • À refaire : tests d'intégration Playwright et mode test de Stripe plus tôt