Skip to content
Talha Shaikh.
← Back to projects

Case study

Volvelo — Luxury Atelier Marketplace

European Craftsmanship. Multi-Tenant Enterprise Architecture.

Author & Lead Full-Stack Architect — Enterprise Multi-Tenant E-Commerce & Merchant Atelier Ecosystem.

A production-grade, multi-tenant luxury e-commerce platform and artisan atelier marketplace built with Next.js 16 (Turbopack) and React 19. Connects independent European makers with international luxury consumers with strict tenant isolation, dynamic currency conversion, and enterprise admin suites.

Next.js 16React 19TypeScriptTailwind CSS v4Neon PostgresPrisma ORMClerk Core 3Zustand
🔒vovelo.vercel.app
Production
Volvelo — Luxury Atelier Marketplace live web preview

Overview

Volvelo is a production-grade luxury marketplace connecting independent European artisans (Swiss horologists, Milanese leather ateliers, French cashmere weavers) with global consumers. The architecture incorporates strict tenant data isolation, real-time Clerk Cloud RBAC synchronization, dynamic multi-currency calculations, an abandoned cart recovery pipeline, and structured Answer Engine Optimization (AEO).

The problem

Luxury craft makers lack direct-to-consumer software infrastructure that preserves their boutique atelier branding while managing global fulfillment, multi-currency conversions, and commission splitting, while standard marketplace templates fail to convey bespoke European luxury aesthetics.

The solution

A modular three-tier architecture: an ultra-fast customer storefront with multi-currency shopping, an isolated Merchant Atelier Portal (/portal) where makers manage inventory and fulfillment, and an Enterprise Super-Admin Hub (/admin) spanning 48 Next.js routes.

  • Strict Multi-Tenant Partitioning: Makers operate within isolated tenant boundaries; cross-tenant queries and orders are barred at middleware and database levels.
  • Bidirectional Clerk RBAC Synchronization: Automatically syncs database role updates directly into Clerk Cloud publicMetadata via updateUserMetadata.
  • Dynamic Multi-Currency Converter: Real-time client-side conversion between EUR (€), USD ($), GBP (£), and PKR (Rs.) persisted in Zustand.
  • 3-Tier International Checkout: Supports Credit/Debit card tokenization, Cash-on-Delivery (domestic), and Direct Bank Wire / IBAN for high-ticket orders.
  • Enterprise Admin Suite: 48 routes covering inventory SKU management, multi-carrier tracking injection (DHL, FedEx), and abandoned cart recovery.
  • AEO & AI Search Schemas: Organization, WebSite, FAQPage, CollectionPage, and BreadcrumbList structured data targeting GPTBot and Perplexity.

Technical architecture

Multi-Tenant Data Partitioning & Route Guards

Implemented strict tenantId query scoping and Clerk middleware route guards. Super-admins have unified atelier switcher bars, while merchant sessions are cryptographically locked to their own inventory and sales data.

Bidirectional Role Sync (Clerk Core 3 + Neon Postgres)

Utilized async clerkClient() APIs to synchronize SUPER_ADMIN, ADMIN, SUPPORT, and MERCHANT roles between Neon PostgreSQL and Clerk session tokens, eliminating role propagation lag.

Zero Hydration Mismatch Client State

Configured hydration guards for Zustand stores (Cart, Wishlist, Currency) ensuring seamless server-to-client transitions with zero React 19 console errors.

Relational Schema & Connection Pooling

Prisma ORM with Neon Serverless PostgreSQL connection pooling handles complex atelier relationships, hierarchical product taxonomies, and multi-tier promotion codes.

Problems I ran into

…and how I worked through them.

The problem

RBAC Session Desynchronization: Role updates made in admin dashboards failed to immediately update user JWT session claims in Clerk without forcing a re-login.

How I solved it

Implemented bidirectional metadata synchronization via Clerk updateUserMetadata, pushing instant claim updates to the cloud auth provider.

The problem

Multi-Tenant Cross-Contamination Risk: Without strict partitioning, concurrent queries could leak orders or customer data between competing ateliers.

How I solved it

Built a tenant isolation middleware guard that validates merchant ownership on every server action and database query.

The problem

React 19 SSR Hydration Mismatch with Persistent Zustand Stores: LocalStorage cart and currency data differing from server prerenders created client console warnings.

How I solved it

Engineered client-side hydration wrappers that mount persisted state cleanly after initial DOM paint.

Results

  • Engineered full enterprise platform spanning 48 dynamic and static Next.js 16 routes.
  • Implemented real-time margin splitting (85% Maker Net Payout vs. 15% Platform Commission).
  • Optimized Core Web Vitals and structured data for AI answer engines (ClaudeBot, PerplexityBot, GPTBot).
  • Built responsive mega-menus, side-cart drawers, and animated checkout confetti micro-interactions.

Full tech stack

Next.js 16React 19Tailwind CSS v4TypeScriptNeon PostgresPrisma ORMClerk Core 3ZustandCanvas ConfettiLucide React