How I designed a platform where every seller gets their own branded storefront while sharing a common marketplace infrastructure.
Thrift sellers needed a platform that gave them individual branding and independence — not just another listing on a giant marketplace. The challenge was building a multi-tenant architecture where each store feels unique while sharing the backend infrastructure for scalability.
The platform uses a multi-tenant architecture with dynamic subdomains. Each seller's store is rendered from a shared Next.js application but styled and populated with their unique data from Supabase. Products, orders, and store settings are isolated per-tenant using row-level security policies.
Enables multi-tenancy at the database level without complex middleware, keeping costs low and queries fast.
Each storefront gets a unique URL using dynamic route segments, providing a branded experience without separate deployments.
Handles marketplace payment splits between platform and sellers without building custom payment infrastructure.
Multi-tenant data isolation is critical from day one — retrofitting RLS policies is painful.
Seller onboarding UX is as important as buyer UX — if sellers can't set up their store in under 5 minutes, they drop off.
Start with a simple storefront template and iterate — don't over-customize before validating demand.
Expand into a full thrift ecosystem with seller analytics, buyer wishlists, and a discovery feed that surfaces unique finds across all storefronts.
See the full product — features, tech stack, and the problem it solves.
View Product