← Our stack

Medusa when commerce needs to be code.

An open-source commerce engine built on Node.js and TypeScript. When the business model is too custom for a SaaS platform, we build the commerce layer itself and own every part of it.

medusajs.com ↗
How we use Medusa

Medusa is our commerce engine for stores that outgrow what a hosted platform allows. It is an open-source framework in the same TypeScript and Node.js stack as the rest of our work, so products, carts, pricing, inventory, and orders are modules we can extend in code rather than settings we work around. We customize the commerce logic through its module and workflow system, run the storefront on Next.js against its store APIs, and give the operations team the Medusa admin dashboard for day-to-day catalog and order management. Payments run through Stripe, data lives in Postgres, and the whole backend deploys as a persistent service on Railway.

When the business model does not fit a template, the commerce platform should be code you own.

Why Medusa

Medusa turns commerce into application code we own. When a client needs subscriptions, custom bundles, B2B pricing, or a checkout flow that no template supports, a hosted platform starts fighting back; Medusa lets us build exactly that logic in TypeScript, at the framework level, with no app-store workarounds and no platform transaction fees. Because it runs on the stack we already use everywhere (Node, TypeScript, Postgres, Next.js), the commerce backend is maintained like any other codebase instead of as a separate vendor silo. We still recommend Shopify when a managed platform fits; we reach for Medusa when the business model is the product.

Medusa.js development for custom commerce platforms

Teams come to us for Medusa development when their business model stops fitting the platforms built for standard retail: a subscription with rules no app supports, B2B pricing that changes per account, a marketplace, or a checkout that has to do something hosted checkouts refuse to. Medusa is built for exactly that work. It is an open-source commerce framework on Node.js and TypeScript, structured as modules (products, carts, pricing, inventory, orders, fulfillment, promotions) that we extend or replace in code, with a workflow engine for the custom order logic that makes each business different. The operations team gets a real admin dashboard for catalog and order management, so owning the platform does not mean living in a terminal. Because it is the same language and tooling as the rest of our stack, the commerce backend is reviewed, typed, tested, and handed off like any other application we build, not a black box a single vendor understands.

When we choose Medusa over Shopify

We build on both, and the honest dividing line is how custom the commerce logic needs to be. Shopify is the right call for standard retail: the managed admin, hosted checkout, and app ecosystem cover most stores better than custom code would, and we say so. Medusa earns its place when the model itself is nonstandard. Custom pricing engines, subscriptions with real business rules, B2B account structures, and checkout flows that need to be owned end to end are application problems, and Medusa lets us solve them in TypeScript at the framework level instead of bending a SaaS platform past what it wants to do. The trade is operational: with Medusa you own the hosting, the database, and the upgrades, which is why we deploy it as a managed, monitored service rather than handing a client raw infrastructure. Same discipline as the rest of our stack: the platform is chosen by the project, not by loyalty.

How we do it

How we build on Medusa

  1. Model the commerce domain

    We map products, pricing, customers, and order flow to how the business actually sells, and identify exactly where the model departs from standard retail. Those departures are the reason Medusa is on the table, so they get designed first, not patched in later.

  2. Extend the framework

    We implement the custom logic as Medusa modules and workflows in TypeScript: pricing rules, subscription behavior, fulfillment routing, and the order steps unique to the business. The customization lives at the framework level, typed and tested, rather than scattered through the storefront.

  3. Build the storefront

    We build the customer-facing store on Next.js against the Medusa store APIs, owning the whole experience through checkout. Stripe handles the payment itself, so card data stays inside the payment provider while every other step of the flow is ours to design.

  4. Deploy and operate

    The backend deploys as a persistent service on Railway with managed Postgres, and we monitor it after launch: logs, error rates, and order flow. Owning the platform only pays off if it runs boringly well, so we treat operations as part of the build.

Medusa vs Shopify: which we build on when

We build on both, and the choice comes down to how custom the commerce logic is. Shopify wins when a managed platform covers the model. Medusa wins when the model is the product and the logic has to be code.

MedusaShopify
Best fitCustom models: subscriptions, B2B pricing, marketplaces, nonstandard checkoutStandard retail where the managed admin and app ecosystem cover the workflow
Where the logic livesTypeScript modules and workflows you own, extended at the framework levelPlatform configuration and apps, customized through the Storefront API
CheckoutFully custom and owned end to end, with Stripe handling the paymentShopify's hosted checkout, with payments and PCI scope inside Shopify
Cost and operationsOpen source with no platform transaction fees; you own hosting and upgradesMonthly plan plus transaction economics, with hosting and upgrades managed
Where we use it

Custom Commerce Backends

Product, cart, pricing, and order logic extended as TypeScript modules for business models a hosted platform cannot express.

Bespoke Checkout Flows

Checkout owned end to end in the storefront, with custom steps and validation, while Stripe handles the payment itself.

Commerce Beyond the Storefront

B2B price lists, multi-channel selling, and custom fulfillment logic served through the same APIs as the main store.

Questions

Medusa FAQs

Get started

Let's talk about
your next build.