arm
  • Home
  • Work
  • About
  • Writing
  • Resume
  • Contact
Open to work
❡Case study · Deep dive · 7 min read

KRM Engineering Works — a shipped B2B catalog with shareable state.

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

shippedclientclient workshippedB2B
A catalog that survives a copy-paste
KRM sells industrial products to other businesses. The site is a fast, filterable catalog with a lightweight cart and a mailto-based enquiry flow — no checkout, because B2B buying happens over a conversation, not a card form. Shipped to production.
URL
Filter state
0
Backend servers
1
Shipped client
100%
Responsive
Category + filter view

§01The problem

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.

§02System architecture

Deliberately serverless and simple — the “backend” is the buyer's email client. The engineering went into state management and responsive category navigation.

Client
Next.js 15shadcn/uiTailwind v4
State
URL search paramsZustand cartNo persistence needed
Enquiry
mailto deep linksPrefilled cart contents
Tooling
BiomeVercel deploy

§03Three decisions worth defending

Decision 01

Filters in the URL, not in state

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.

Decision 02

mailto over a contact form

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.

Decision 03

Zustand for an ephemeral cart

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.

§04Hardest problems, plainly

Challenge 01

Keeping URL and UI in sync

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.

Challenge 02

Responsive category navigation

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.

Challenge 03

mailto body limits

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
Talk about this project →
Open to work

Have something in mind? Let's make it.

iamparmjeetmishra@gmail.com→
GithubMailLinkedInX/Twitter
arm© 2026 — Made with ♡ by Parm
HomeWorkAboutWritingResumeContact