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
- Select individual modules: auth-supabase, stripe-core, db-postgres
- Configure Postgres database URL for production scalability
- Set up Stripe with product catalog integration
- Add custom environment variables for inventory APIs
- 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
- •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
- •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
- •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
- •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.