CASE STUDY · 001commerce · engineeringLaunched

A B2B portal for customers and sales teams

Enterprise B2B distribution client · 2025–2026 · v1.0

§ 001.1 · executive summary

I built a launched B2B portal connecting customer login, role-based access, quotations, account-specific prices, and inventory. It replaced quotations handled by phone and email, and it serves 100+ internal agents and admins and 1,000+ distributors. Supporting storefront work included native technical-document search.

§ 001.2 · problem statement

Customers, agents, and administrators needed different records and actions, with a reliable path from storefront login to the correct portal page. Before the portal, quotations moved through phone calls and email threads.

§ 001.3 · architecture decision

I used Customer Account authentication with OIDC and PKCE, server-side role checks, and Shopify metafields for assignments. Commerce records stayed in Shopify; MongoDB held application records and Redis supported caching and background work.

  1. 01Customer login
  2. 02Portal permissions
  3. 03Shopify records
Simplified architecture drawn from this case study; not a deployment diagram.

This overview shows the concerns involved; the account below distinguishes delivered work from plans.

§ 001.4 · tradeoffs accepted

Keeping commerce data in Shopify avoided duplicate records but required batching, caching, and careful handling of API limits.

Login, deep links, and localization

I connected an App Proxy entry point to a separate public portal. Deep links preserved the intended destination through sign-in, while locale-aware routes retained the user's language context. I documented the authentication work for other developers.

Quotations and account context

The storefront quote list created a Shopify draft order. The portal connected that request to customer and agent assignments. Pricing and stock views used the customer's company, catalog, location, and permissions.

Search without another search service

Akeneo synchronized directly with Shopify, not the portal. I mapped technical files with metafields and metaobjects and extended the theme's existing search without a third-party search library.

Wider scope and remaining work

The engagement also scoped a headless-to-Online Store 2.0 migration. That proposal does not establish my delivery of every migration or integration workstream. The portal launched; remaining work includes bulk-order import, analytics and timeframe-export verification dependent on that import, and catalog creation through the Shopify API.