Skip to main content
A fully functional online store for handmade jewelry with a browsable product catalog, persistent shopping cart, Stripe-powered checkout, order management, and automated customer notifications. Customers can browse collections, filter by category, add items to their cart, pay securely, and receive order confirmation emails with tracking details.By the end of this recipe you will have a production-ready store that you can customize, rebrand, and launch as your own product.

Tech stack

You do not need to understand these technologies. Rocket handles them automatically. This table is for reference.

Architecture overview

The store follows a straightforward data flow:
  1. Browse: Customers explore products pulled from Supabase, with images served from Supabase Storage.
  2. Cart: Selected items are stored in a client-side cart that syncs to Supabase for logged-in users.
  3. Checkout: The cart is sent to Stripe Checkout for secure payment processing.
  4. Order saved: On successful payment, a Stripe webhook writes the order to Supabase and updates inventory.
  5. Notification: An order confirmation email is sent through SendGrid or Resend with order details and estimated delivery.
  6. Analytics: GA4 tracks product views, add-to-cart events, and completed purchases for conversion analysis.

How long does it take?

Step-by-step build

1

Start your project

Open Rocket and describe the full scope of your store so it can scaffold the right structure from the beginning.
Rocket generates the full project structure, page layouts, navigation, and placeholder product data.
2

Connect Supabase and set up the product catalog

Connect your Supabase project and ask Rocket to create the database schema for your store.
Seed your products table with 8-12 sample items so you have real data to work with while building. You can ask Rocket to generate sample jewelry data with realistic names, descriptions, and prices.
3

Build product listing and detail pages

Replace the placeholder data with live Supabase queries and build out the shopping experience.
4

Implement the shopping cart

Add a persistent cart that works for both guests and logged-in users.
Test the cart with multiple products and edge cases: adding the same item twice, removing the last item, and refreshing the page to verify persistence.
5

Connect Stripe for checkout

Wire up Stripe Checkout so customers can pay securely.
Make sure your Stripe webhook secret is stored as an environment variable, not hardcoded. Rocket handles this automatically when you connect Stripe through the integrations panel.
6

Add order management and history

Give customers visibility into their past orders and current order status.
7

Set up email notifications

Send customers an email when their order is confirmed.
If you want to add shipping notification emails later, you can ask Rocket to send another email when the order status changes to “shipped.”
8

Add analytics tracking

Track the full purchase funnel so you can see where customers drop off.
9

Polish and deploy

Add final touches and ship your store.
Use the Launch button in your Rocket project to deploy to the web. Rocket handles the Netlify build configuration automatically. Make sure all required environment variables are set in your project’s integration settings before launching.
After deploying, connect a custom domain through Netlify and set up an SSL certificate. You can do this from the Netlify dashboard or ask Rocket to guide you through it.

Customization ideas

Track stock levels and show “Out of Stock” badges when inventory runs out. Ask Rocket to add an admin page where you can update inventory counts and receive low-stock alerts.
Let customers apply promo codes at checkout for percentage or fixed-amount discounts.
Let customers leave ratings and reviews on products they have purchased.
Let logged-in customers save products to a wishlist for later.
Build a back-office dashboard for managing products, orders, and customers.

Troubleshooting

If items disappear from the cart after refreshing, the cart may not be saving to the browser’s storage. Ask Rocket to fix it:
If a customer pays but no order shows up in the app, the Stripe webhook may not be configured correctly. Make sure Stripe is connected in your project’s Integrations panel, then ask Rocket to debug:
If product images appear broken, the Supabase Storage bucket may not have public access enabled. Ask Rocket to check:
If the amount charged in Stripe is different from what the cart shows, the prices may be calculated on the wrong side. Ask Rocket to fix it: