Background
A Netherlands-based product distributor ran a network of independent dealers but had no way to give each dealer their own branded online presence. Every dealer linked customers to the same main store — there was no personalised pricing, no branded experience per dealer, and no structured quote process. Quote requests were handled over email, tracked in spreadsheets, and fielded case-by-case.
The Problem
Onboarding a new dealer meant a slow, manual configuration process with no standard workflow. Dealers couldn’t set their own pricing strategy or profit margins. There was no digital trail for quote requests — just emails. And customers had no consistent branded experience depending on which dealer they came through.
What Was Built
A full-stack Shopify embedded app was built using Remix and PostgreSQL — a multi-tenant whitelabel dealer portal covering four interlocking systems.
Dealer onboarding and account management
A complete lifecycle from registration to activation: dealers register with email verification, enter a pending queue for admin review, and are approved or suspended with a single action. Each dealer account stores its own commission rate, markup configuration, SMTP credentials, and custom domain. The status pipeline (Email Not Verified → Pending → Active → Suspended) is enforced at every API boundary.
Dynamic pricing per dealer
Each dealer gets a configurable pricing rule applied across all assigned products. Three markup types are supported: Fixed (add a flat amount), Increment (add an absolute value), and Percentage (multiply by a factor). Per-product pricing overrides allow fine-grained control. Prices can be hidden entirely for quote-only dealers.
Dual quotation system
Two separate but related quotation flows were built. Dealer quotations: customers add products to cart on a dealer’s storefront and submit a quote request via an Alpine.js modal — capturing customer details, optional file attachments, and cart data. Quotes move through a status pipeline (Draft → Sent → Viewed → Accepted / Rejected / Expired / Converted) and are managed inside the dealer dashboard. Admin quotations: the main store has its own separate quotation endpoint with rate limiting, summary stats, filtering, and pagination.
Whitelabel storefronts
Each dealer storefront runs on a custom domain provisioned via Coolify. The Shopify Liquid theme is extended with a quote modal, cart integration, and settings schema covering colour schemes, typography, and checkout customisation. S3-backed media management handles automatic WebP conversion and thumbnail generation. Per-dealer and global SMTP with customisable email templates is included.
Scope
- 20+ Prisma database models: Dealer, Product, DealerProduct, DealerPricing, Order, Quotation, QuotationItem, Customer, and more
- 15+ Remix route modules covering admin, dealer portal, and public API
- 10+ REST API endpoints for quotations, dealer auth, media, products, and health checks
- 60+ Liquid sections and snippets built for dealer storefronts
- Full email notification system with per-dealer template customisation
- Production deployment guide and security audit delivered with the project