Full-stack· Guided build· Built· Dec 2025 – Jan 2026
SellWell
A multi-vendor store. Sellers apply to open a shop, and buyers check out with Stripe or cash on delivery.
Overview
A guided build to learn Stripe webhooks and background jobs with Inngest. New stores stay pending until an admin approves them. A cart with products from several sellers gets split into one order per seller at checkout.
Architecture / how it works
- The Stripe webhook verifies the signature with
constructEvent, then marks the orders paid or deletes them if checkout is cancelled. - Clerk user events go to Inngest functions that keep the database in sync.
- Coupons can be restricted to new users or members (checked with Clerk
has({ plan: 'plus' })). - Uploading the first product image calls an OpenAI vision model to pre-fill the name and description.
Tech stack
Next.jsPostgreSQLPrismaClerkStripeInngestImageKitRedux Toolkit
Outcomes
The main flows work: store approval, Stripe checkout with webhook verification, and the Clerk-to-database sync through Inngest.