Développe un site e-commerce avec React Router 7 et Stripe

Construis un vrai site e-commerce avec React Router 7, Stripe, Prisma et Tailwind. Prends confiance et prépare-toi à briller en freelance !

4 min read

Un nouveau terrain de jeu pour consolider tes super-pouvoirs

Tu as (presque) tout vu : routing avancé, loaders, actions, formulaires type-safe, déploiement Docker, SEO... Il manque encore une pièce au puzzle : mettre tout ça au service d’une vraie application métier. Bienvenue dans le module « On développe un projet React Router 7 » !

Ici, on oublie les petits snippets isolés : tu vas coder un site e-commerce complet, avec gestion de produits, panier, paiement Stripe et e-mails transactionnels. Objectif : en sortie de module, tu auras un repo clonable que tu pourras montrer à un recruteur ou déployer pour un client freelance – sans coller l’étiquette “exercice scolaire”.


Ce que l’on va construire

FonctionnalitéTechnos & bonnes pratiques
Catalogue + pages produitloader() (côté serveur), cache Cache-Control, données structurées Product
Panier persistéContext + useFetcher(), UI optimiste
Paiement sécuriséStripe Checkout côté serveur (no secret côté client)
Gestion des commandesPrisma + relation OrderOrderItem
E-mails transactionnelsResend + templates React
Tableau admin lightRoutes protégées + role-based access (requireUser({ role: "admin" }))
SEO d’un site e-commerceBalises meta prix, JSON-LD Product, sitemap dynamique
Déploiement productionDocker multi-stage, GitHub Actions, reverse proxy Caddy

Stack technique retenue

  • React Router 7 pour le full-stack rendering.
  • Prisma + PostgreSQL pour la base produits / commandes.
  • Stripe Checkout pour ne pas gérer la carte bleue nous-mêmes.
  • Tailwind CSS v4 + shadcn/ui pour une UI cohérente sans partir sur du Figma.
  • Resend pour expédier confirmation de commande et ticket Stripe en 2 lignes.
  • Zod + Conform pour un tunnel d’achat sans friction : validation instantanée côté client et serveur.
  • Docker, Caddy, GitHub Actions… mais ça, tu sais déjà faire grâce au module Déploiement 😉

Tour express du dépôt de départ

Le squelette est disponible sur GitHub :

Terminal
1
git clone https://github.com/Varkoff/shop-router.git
2
cd shop-router
3
npm install

Organisation principale :

{2,6,9}
1
shop-router/
2
├── prisma/
3
│ └── schema.prisma # modèles Product, Order, User déjà esquissés
4
├── app/
5
│ ├── routes/ # pages React Router 7
6
│ ├── components/ # UI shadcn + composants maisons
7
│ └── server/ # helpers Stripe, Resend, sessions
8
└── docker-compose.yml # stack dev (Postgres + App)

Le projet compile et lance la page par défaut React Router 7. On va l’enrichir bloc par bloc.


Roadmap du module

  1. Catalogue & pages produit – loaders server-side, route dynamique /product/:slug, JSON-LD Product.
  2. Panier & checkout StripeuseFetcher() pour l’UI optimiste, session panier en cookie, redirection sécurisée vers Stripe, web-hook de confirmation.
  3. E-mails transactionnels – template React + Resend, envoi après le web-hook, tests en sandbox.
  4. Espace admin mini-ERP – liste des commandes, changement de statut, accès restreint (role === "admin").
  5. SEO & performances – précharge des images LCP, sitemap dynamique, données structurées prix / stock.
  6. Déploiement staging + prod – Build CI, push Docker Hub, déploiement auto sur ton VPS existant.

Points clés du module

  • On part from scratch et on construit l'application petit à petit
  • React Router 7 reste le cœur, mais on y branche Stripe, Prisma, Resend.
  • On utilisera toujours Tailwind, shadcn/ui pour aller vite côté design.
  • But final : un site e-commerce pro que tu pourrais déployer chez un client.

Ce que tu peux préparer avant la prochaine leçon

Terminal
1
# ① Cloner + installer les deps (si pas déjà fait)
2
git clone https://github.com/Varkoff/shop-router.git
3
cd shop-router
4
git checkout 1-initialisation-du-projet
5
npm install
6
7
# ③ Lancer le projet
8
npm run dev

Prêt ? Je t’attends de l’autre côté !