Medusa.js development for teams who will run the commerce engine themselves. One marketplace built end to end, its commerce engine on Medusa — checkout through to the seller panel.
WAYF builds commerce platforms on Medusa.js. We designed and built Kaffy end to end, with Medusa as its commerce engine: a multi-vendor coffee marketplace with iOS and Android from one React Native codebase, a Next.js web store, a seller panel for the roasteries, and the admin that runs orders. Medusa is open source and self-hosted, so the commerce engine and the order data sit in infrastructure you control. Staying secure on it needs a maintenance track that is funded and staffed. That suits teams whose pricing, fulfilment, or vendor logic falls outside what a hosted platform will model. When it doesn't suit you, we say so on the first call.
Built on Medusa: Kaffy Multi-vendor marketplace, designed and built end to end ·33+ roasteries and 400+ coffees on the platform · iOS, Android and web on one API
Marketplace mechanics and the operator tooling behind them. Three things we build on Medusa.
Multi-vendor marketplaces
One cart across many sellers, one payment, and an order that splits per seller behind the checkout. On Kaffy each split carried its own shipping label, and adding a carrier was a code change against an interface that already existed. This is the shape we have built and run in production.
The software the store is operated from
Kaffy shipped with a roastery panel covering products and variants, stock and pricing, the order queue, shipping defaults, and a buyer-message inbox. Alongside it, an admin where customer support sits next to the order it concerns, and a knowledge base inside the product. All of it went out in the same launch as the buyer apps.
Commerce inside a larger product
Medusa is Node.js and TypeScript, and so is Payload, the CMS we work in most; WAYF is an official Payload partner. The Kaffy platform ran a Payload instance alongside the Medusa engine. We build the frontends against the same API: Next.js on the web, React Native for iOS and Android.
Medusa is modular, so the pieces you do not need stay out of the build. Those are the parts we would build on for B2B accounts or multi-region pricing. The marketplace work is what we can currently point at in production.
Most stores should stay on Shopify. Medusa earns its complexity when the business logic is the thing that doesn't fit.
If you sell a catalogue through a standard checkout and the customisation you need is a theme and a few apps, a hosted platform will do that job for less money and less maintenance. We'll tell you so early. Three patterns show up among teams that moved anyway and regretted it.
The first is budgeting the build and leaving the running of it unbudgeted. Self-hosting puts hosting, upgrades, security patching, and payment integrations on your side of the line, and the cost of that lands in the second year.
The second is customising early. Medusa's modularity invites custom everything, and building it before the business model is validated creates debt while there's still no revenue to service it.
The third is treating headless commerce as a frontend project. Order management, inventory sync, and fulfilment logic decide whether the store holds up once orders start arriving.
Fixed scope, fixed price. Agreed in writing before any work starts.
A commerce project starts with a scoping session: the catalogue, the checkout, the money flow, and who operates the store day to day. We write that down and agree a price, and the price holds when the build meets complexity we should have anticipated. Kaffy began with a product workshop before the first ticket, covering customer segments, a value-proposition canvas, and a twelve-month KPI sheet both founders signed off.
You work directly with the engineers who build it. We're not a staffing agency and we don't place individual contractors. An engagement is a project with a defined scope, a delivery schedule, and a handover your team can run from.
Let's talk about your Medusa project.
Twenty-five minutes to scope what you need and decide if we're the right team for it. Fixed price and timeline come after.