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.
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.
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.
- 01Customer login
- 02Portal permissions
- 03Shopify records
This overview shows the concerns involved; the account below distinguishes delivered work from plans.
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.