Note: This documentation uses Next.js App Router. If you're still on Pages Router, see the migration guide.

E-commerce Platform

Create an e-commerce platform with Stripe integration and inventory management.

Steps in the UI

  1. Select individual modules: auth-supabase, stripe-core, db-postgres
  2. Configure Postgres database URL for production scalability
  3. Set up Stripe with product catalog integration
  4. Add custom environment variables for inventory APIs
  5. Generate with custom target directory: "./ecommerce-platform"

Modules included: auth-supabase, stripe-core, db-postgres

Routes générées

  • /products- Catalogue de produits
  • /products/[productId]- Détail d'un produit
  • /cart- Panier d'achat
  • /checkout- Processus de paiement
  • /orders- Historique des commandes
  • /orders/[orderId]- Détail d'une commande
  • /admin/products- Gestion des produits
  • /admin/orders- Gestion des commandes
  • /admin/inventory- Gestion des stocks
  • /api/products/route.ts- API des produits
  • /api/products/[productId]/route.ts- API d'un produit
  • /api/cart/route.ts- API du panier
  • /api/orders/route.ts- API des commandes
  • /api/stripe/create-checkout-session/route.ts- Session de paiement
  • /api/stripe/webhook/route.ts- Webhook Stripe
  • /api/admin/products/route.ts- API admin des produits
  • /api/admin/orders/route.ts- API admin des commandes

.env minimal

# Database
DATABASE_URL="postgresql://user:password@localhost:5432/ecommerce"

# NextAuth
NEXTAUTH_SECRET="your-secret-key-here"
NEXTAUTH_URL="http://localhost:3000"

# Supabase
NEXT_PUBLIC_SUPABASE_URL="https://your-project.supabase.co"
NEXT_PUBLIC_SUPABASE_ANON_KEY="your-anon-key"
SUPABASE_SERVICE_ROLE_KEY="your-service-role-key"

# Stripe
STRIPE_SECRET_KEY="sk_test_..."
NEXT_PUBLIC_STRIPE_PUBLISHABLE_KEY="pk_test_..."
STRIPE_WEBHOOK_SECRET="whsec_..."

# Inventory (optionnel)
INVENTORY_API_KEY="your-inventory-api-key"
INVENTORY_API_URL="https://api.inventory-provider.com"

# Email
EMAIL_PROVIDER="resend"
EMAIL_FROM="orders@yourstore.com"
RESEND_API_KEY="re_..."

Smoke test

curl -I http://localhost:3000

Expected: HTTP/1.1 200 OK

curl -I http://localhost:3000/products

Expected: HTTP/1.1 200 OK

curl -X GET "http://localhost:3000/api/products" \
  -H "Content-Type: application/json"

Expected: HTTP/1.1 200 OK avec liste des produits

curl -X GET "http://localhost:3000/api/cart" \
  -H "Content-Type: application/json"

Expected: HTTP/1.1 200 OK ou 401 Unauthorized

curl -X POST "https://api.stripe.com/v1/products" \
  -H "Authorization: Bearer sk_test_..." \
  -H "Content-Type: application/x-www-form-urlencoded" \
  -d "name=Test Product&price=1000"

Expected: HTTP/1.1 200 OK avec détails du produit créé

curl -I http://localhost:3000/admin/products

Expected: HTTP/1.1 302 Found (redirection) ou 200 OK (si admin)

Actions déclenchées

Emails de commande

Quand : Nouvelle commande passée

Voir le résultat :
  • Email de confirmation envoyé au client
  • Email de notification envoyé à l'admin
  • Dashboard Resend/Postmark > Logs
  • Base de données : table `orders`

Webhooks Stripe

Quand : Paiement réussi, échec, remboursement

Voir le résultat :
  • Mise à jour automatique du statut de commande
  • Logs dans la console de développement
  • Dashboard Stripe > Webhooks > Logs
  • Base de données : table `orders` et `payments`

Mise à jour des stocks

Quand : Commande confirmée

Voir le résultat :
  • Déduction automatique du stock
  • Notification si stock faible
  • Base de données : table `products` (stock)
  • API d'inventaire externe (si configurée)

Notifications d'administration

Quand : Nouvelle commande, stock faible, erreur de paiement

Voir le résultat :
  • Notification in-app dans `/admin/notifications`
  • Email d'alerte (si configuré)
  • Dashboard d'administration

Need help?

If you need assistance with this example or have questions about boiler.plate modules, check out our documentation.