Priestly
← Tous les projets

Étude de cas 01 / 03 · Automobile / E-commerce

TruckParts

Une boutique en ligne de pièces de camion. Les clients vérifient qu'une pièce va sur leur camion, paient en ligne ou au retrait, et suivent leur commande. Le propriétaire gère tout depuis un espace d'administration qui marche aussi sur téléphone.

Rôle
Seul · frontend + backend
Statut
Démo · paiements Notch Pay en mode test
Technologies
Next.js · NestJS · PostgreSQL
Mis à jour
sept. 2026

Envie de voir l'administration ? La page de connexion propose un compte de démo en lecture seule. Explorez librement, rien de ce que vous faites ne modifiera la boutique. Aller à la page de connexion

truck-spare-part-store-frontend.vercel.app
Page d'accueil de TruckParts : « Truck parts that fit, without the guesswork », avec les boutons Find My Part et Browse all parts

01

Ce qu'il fallait, et ce que j'ai construit

Un vendeur de pièces de camion a besoin de plus qu'une liste de produits. Les clients doivent savoir qu'une pièce va sur leur camion avant d'acheter. Les paiements doivent être réels, pas un faux bouton. Et si deux personnes achètent la dernière pièce en même temps, une seule doit l'avoir. Un modèle de boutique basique ne gère rien de tout ça.

01 · Compatibilité

ProblèmeLes clients doivent savoir qu'une pièce va sur leur camion avant d'acheter.

Construit« Find My Part » : on choisit le constructeur, le modèle et l'année du camion, et seules les pièces compatibles s'affichent.

Pièces et véhicules sont reliés par une table de compatibilité (une ligne par couple pièce–véhicule)

Find My Part : choisir le constructeur, le modèle et l'année du camion pour ne voir que les pièces qui lui vont

02 · Paiement

ProblèmeUn bouton « Payé » que le navigateur peut simuler n'est pas un paiement.

ConstruitUne commande n'est marquée payée que lorsque Notch Pay le confirme : Mobile Money, carte, ou espèces au retrait.

Webhooks vérifiés par signature HMAC-SHA256 · un webhook en retard déclenche une vérification directe du statut

Paiement TruckParts : code promo, coordonnées, et choix entre payer en ligne (mobile money ou carte) ou en espèces au retrait

03 · Stock

ProblèmeDeux clients veulent acheter la dernière pièce à la même seconde.

ConstruitLe stock est réservé en une seule étape : un seul paiement l'obtient, l'autre est prévenu qu'elle n'est plus disponible.

Un seul UPDATE … WHERE quantity >= n conditionnel dans une transaction

Tableau des produits de l'administration TruckParts : prix, stock, statut publié, et une alerte indiquant qu'un produit en rupture est masqué de la boutique
Toutes les fonctionnalités (10)
  • Recherche « Find My Part » : les clients filtrent les pièces selon leur camion
  • Vrais paiements avec Notch Pay. Chaque webhook est vérifié avec une signature HMAC-SHA256, et si un webhook arrive en retard, le backend demande directement le statut du paiement à Notch Pay
  • Paiement sûr : le stock est réservé avec un seul UPDATE conditionnel dans une transaction, donc deux clients ne peuvent pas acheter la dernière pièce
  • Les jetons d'accès restent en mémoire, jamais dans le localStorage. La session est dans un cookie httpOnly, protégé par un jeton CSRF
  • Audit d'accessibilité axe-core réussi : repères de page, navigation étiquetée et contrastes de couleur WCAG AA
  • L'administration marche aussi sur téléphone. Sur petit écran, les listes s'affichent en cartes au lieu de tableaux à faire défiler sur le côté
  • Anglais et français avec next-intl. La langue est gardée dans un cookie, pas dans l'URL
  • Prix en FCFA, une monnaie sans centimes. Chaque montant est un nombre entier, donc pas d'erreurs d'arrondi
  • Les images des produits sont converties en WebP et redimensionnées à l'envoi, puis servies par le backend pour ne jamais exposer le stockage
  • Un compte admin de démo en lecture seule, pour que chacun puisse explorer l'administration. C'est le backend qui l'impose : le jeton du compte porte un indicateur « démo », et un intercepteur NestJS global refuse chaque modification

02

Comment c'est construit

J'ai construit toute la boutique, frontend et backend. La vitrine est en Next.js. Elle a une recherche « Find My Part », un panier et deux façons de payer : en ligne avec Notch Pay, ou en espèces au retrait. Il y a aussi le suivi des commandes, les codes promo et les avis. Derrière, une API NestJS gère les produits, les commandes et les paiements pour l'administration.

Frontend
Next.js + TypeScript + TailwindUn seul code pour la boutique et l'administration. Des server components là où ils aident, et pas d'application séparée à héberger.
Backend
NestJS + TypeScriptUn module par domaine (auth, commandes, paiements, images...). Plus facile à tester et à maintenir qu'une grosse application Express.
Base de données
PostgreSQL + PrismaLes commandes, le stock et les paiements doivent rester justes. Une base relationnelle est le bon outil pour ça.
Stockage des fichiers
MinIO locally, Backblaze B2 in productionLes deux utilisent le protocole Amazon S3, donc le même code marche en local (sans compte cloud) et en production. Changer ne demande que des réglages.
Authentification
JWT + httpOnly refresh cookieLe jeton de courte durée reste en mémoire, où un script injecté ne peut pas le lire. La session plus longue est dans un cookie que JavaScript ne peut pas toucher.
Paiements
Notch PayPage de paiement hébergée et webhooks, avec le Mobile Money pour l'Afrique centrale.

03

Ce qui était difficile

  • Éviter de vendre plus que le stock. Lire le stock puis le modifier peut créer un conflit, donc le paiement lance un seul UPDATE ... WHERE quantity >= demandé dans une transaction.
  • Les webhooks n'arrivent pas toujours à temps. Quand une commande reste en attente, le backend vérifie le statut du paiement auprès de l'API Notch Pay au lieu d'attendre.
  • Ajouter l'accessibilité après la première version. J'ai lancé un audit axe-core et corrigé ce qu'il a trouvé : repères manquants, navigation sans étiquette et contrastes trop faibles.
  • Rendre l'administration utilisable sur téléphone. J'ai refait chaque liste en cartes sur petit écran, au lieu d'un tableau qui défile sur le côté.

04

Résultat

Elle est en ligne comme démo sur Vercel. Avec les comptes de test, on peut faire tout le parcours : parcourir, vérifier qu'une pièce va, ajouter au panier, payer en ligne ou au retrait, confirmer le paiement, suivre la commande et la traiter côté administration. Les paiements passent par le mode test de Notch Pay, donc aucun vrai argent n'est débité.

05

Écrans

9 écrans · touchez pour agrandir

Besoin d'une boutique comme celle-ci ?

Paiements Mobile Money, un stock toujours juste, et une administration que vous gérez depuis votre téléphone.

Discuter sur WhatsApp