Work / Plumberium
Plumberium
Live demo belowA B2B storefront and drop-ship platform for a plumbing supply business: a catalog contractors can search from a truck, a cart that behaves like a purchase order, and an order pipeline that routes each line to whoever is actually going to ship it.
- Client
- Plumberium — named with permission
- Our role
- Product design, full build, ongoing maintenance
- Scope
- Storefront, cart & checkout, order pipeline, accounts, admin
- Stack
- Next.js · Node · PostgreSQL · Stripe
This is a live sandbox, not a slideshow. The interface below is the real one, running in your browser against invented data. Follow the walkthrough or ignore it and click around — nothing here charges a card, ships a pallet, or emails anyone. Reload the page to reset it.
How it is built
The storefront is a Next.js application talking to a Node API over a PostgreSQL database. Catalog pages are rendered on the server and cached at the edge so a contractor on a phone in a basement gets a page in well under a second; availability and account pricing are fetched client-side on top of that cached shell, because those are the two things that must never be stale.
The data model, in one paragraph
Everything hangs off four tables. Products carry the SKU, category, and dimensions. Inventory is a separate row per product per location, which is what makes drop-ship possible — the same SKU can be in stock at the branch and also available from the manufacturer with a different lead time. Accounts hold the contractor company, its ship-to addresses, terms, and price tier. Orders are immutable once submitted: subsequent changes are recorded as events against the order rather than edits to it, so the record still matches whatever the customer was told on the phone.
Why the cart is not a shopping cart
A consumer cart belongs to a person and dies when they close the tab. A trade cart belongs to a company, and often to a job. Ours persists against the account, can be picked up by a second person at the same firm, carries a PO number through to the invoice, and validates against account terms at checkout rather than taking a card. That single difference removes most of the phone calls the counter used to field.
Order routing
On submission each line is evaluated against the inventory table. Lines available at a branch are batched into a pick list. Lines that are cheaper or faster from the manufacturer are grouped into a purchase order and transmitted to that supplier, and the supplier's shipment confirmation flows back onto the same order. The buyer sees one order with one status; the fact that it left three different buildings is our problem, not theirs.
What we would build next
- Quote-to-order for large jobs — a contractor bidding a building wants a priced take-off they can convert once they win.
- Punch-out into the larger customers' procurement systems.
- Returns and core charges, which are still handled at the counter.
Selling to trade accounts through a phone line?
If your orders arrive as voicemails and get retyped into an accounting package, there is a version of this built for your catalog.