Skip to content
Naraz Design

B2B eCommerce

Grimaldi

Grimaldi is a B2B industrial-tools storefront where pricing is gated behind manual admin approval and every approved business gets per-tier or per-SKU pricing. A single site serves Canadian and US trade customers, with CAD-native pricing, daily FX conversion for USD display, and Stripe-managed checkout, tax, and refunds.

Grimaldi

Case Study

Context. Grimaldi sells industrial tools to trade customers across Canada and the US. The model is the opposite of consumer eCom: visitors can browse the full catalog but never see prices or stock until a business registers and is hand-approved. That single rule shapes every layer of the system.

Problem. B2B distribution sites usually feel like 1998 portals — gated, ugly, and operationally fragile. The goal was an industrial-modern storefront that looks confident on both desktop and mobile, while running the full back office (approvals, tiered pricing, inventory, refunds, audit) from one codebase.

Approach. Three layers of access enforcement: UI hides, API rejects, and Postgres RLS catches everything else. Pricing lives in CAD; US visitors see USD via a daily FX pipeline; Stripe charges in CAD with Stripe Tax handling Canada-wide and per-state US tax. Phased delivery — gated catalog first, then tier pricing, then inventory and admin tools, then the launch hardening pass.

Stack. Next.js App Router, Supabase (Postgres, Auth, Storage, RLS), Stripe + Stripe Tax, Resend, Mapbox, Sentry, PostHog, Vercel.

What I built. Public catalog with no-price gating, business registration + admin approval queue, four trade tiers plus per-customer overrides, full cart and Stripe checkout, order history and address book, inventory receiving and adjustments with append-only movements, admin order/refund/return flows, audit log surfaces, daily reports, FX rate jobs, and an impersonate-as-customer flow. Every admin mutation writes to audit_log.

Outcome. A single solo-built codebase that operates as a storefront, an account portal, an admin console, and a warehouse portal — designed to scale from 500-SKU launch into a full WMS, NET terms, and procurement integrations in v2.