An industrial product catalog where every filter lives in the URL and every enquiry is one click away.

B2B buyers do not check out — they send an enquiry. They also share links: “here are the three valves we need.” A catalog that loses its filter state on refresh or cannot be linked to is actively in the way of how these deals actually happen.
So the requirements inverted the usual e-commerce defaults: no payments, deep-linkable filters, and a frictionless mailto enquiry instead of a cart-to-card funnel.
Deliberately serverless and simple — the “backend” is the buyer's email client. The engineering went into state management and responsive category navigation.
Every filter and category lives in search params, so any view is shareable and survives refresh and back-button. The URL is the source of truth; React just reflects it.
The enquiry button assembles a pre-filled email from the cart and opens the buyer's own mail client. No backend, no spam surface, and the buyer keeps a copy in their sent folder — which is exactly how B2B follow-up works.
The cart never needs a server — it is a short-lived list that turns into an email. Zustand keeps it lightweight with zero backend and no auth, matching the product's real lifespan.
Two-way binding between search params and filter controls has sharp edges — stale closures, double history entries, and back-button surprises. Getting it to feel native took careful effort around the router.
A deep industrial taxonomy that works as a sidebar on desktop has to collapse into something thumb-friendly on mobile without burying products three taps deep.
Long carts blow past practical URL/mailto length limits in some clients. The enquiry payload had to stay concise and degrade gracefully when a buyer selects a lot of items.
“The best feature was the one I did not build: there is no checkout, because the client's customers do not want one.”— Parm, on KRM