(01) The brief
A hair care brand based in Canada. It needed a store in Canadian dollars, with an international gateway and in-house marketing tools (newsletter, coupons) without paying monthly platform fees.
(02) What it does
- Catalog, cart, coupons and payment with Stripe (cards, Apple Pay, Google Pay).
- Accounts with email or Google login.
- Newsletter with templates and a subscriber list managed from the panel.
- Ticket support and customer reviews.
(03) How it was built
- Full migration from a Supabase base to Convex: real-time data, typed functions and built-in authentication.
- Stripe with signed webhooks; the order becomes paid only on server confirmation.
- Images on Cloudinary with on-demand transformations.
- Panel with sales analytics, best sellers and funnel.
(04) Security
- Rate limits per user and per IP on sensitive actions.
- Roles and a promotion log; panel out of search engines.
- Webhooks verified by signature; CSP and HSTS.
(05) Speed and Google
Hybrid rendering and global CDN; product structured data in English.
(06) What it deliberately doesn’t do
- Provincial taxes are configured manually; it does not integrate with accounting systems.