Seven ways to sell a diamond, on one platform.
Habbal Jewellery does not run one business. It runs seven, and each has its own buyers, its own pricing logic and its own idea of what an order is. We built all of them on a single Medusa.js backbone across six months.
A jewellery business that a storefront cannot describe.
Most jewellery retailers sell finished pieces to consumers. Habbal does that, and then keeps going: brokering sales between third parties, running B2B auctions, selling loose diamonds, taking bespoke commissions, and wholesaling to trade buyers.
Each of those is a different transaction. A consumer buying a ring and a trade buyer bidding in an auction share almost nothing: not the pricing rules, not the checkout, not the definition of stock, not who is allowed to see what. Off-the-shelf commerce platforms model the first one well and the other six badly or not at all.
The requirement was one platform, one catalogue and one admin, with seven ways of transacting on top of it. That is a Commerce Lab problem and a Dev Lab problem at the same time, which is why the sprint team drew from both.
Seven modules, one backbone
Medusa.js handles catalogue, orders and inventory. Everything that makes each module different from the others was built around it.
The configurator had to be built by the client, not by us.
Configurable Jewellery Request was the module that set the architecture for everything else. A ring, a bracelet and a pendant do not share a set of options, and there is no fixed list of options to hard-code. Every item needs its own configuration flow, and Habbal needed to create those flows themselves, from the admin, without a developer.
Why Medusa rather than a hosted platform
A hosted platform gives you a checkout and takes the data model in exchange. That trade is worth making for a single D2C store. It is the wrong trade when four of your seven modules are transactions the platform has no concept of.
Medusa gave us the parts that are the same everywhere — catalogue, inventory, orders, payments — as code we could extend rather than configuration we had to work around. Auctions, brokered sales and configurable requests were built as modules against that core instead of as workarounds on top of a checkout designed for something else.
The cost is that we owned more of the stack, which is real and worth stating. It is the reason this was twelve sprints rather than four.
What Habbal can do now that they could not before
Not a conversion figure. For a build like this the honest outcome is capability: things that were impossible or manual before, and are neither now.
“We do not sell the way an ordinary shop sells. Auctions, wholesale, brokered sales and bespoke commissions all had to work, and everyone we spoke to before wanted to build us four separate systems. What I did not expect is that I can set up a new configurable piece myself, in a morning, without asking anyone.”
