DEV Community

Govind Diwakar
Govind Diwakar

Posted on

Review: Saleor vs Medusa Two Opensource Headless Ecommerce Platforms

Medusa Vs Saleor

Ecommerce customers interact with platforms across a variety of media, from handheld mobiles to workplace laptops, and tablets. As developers, we aim for the best user experience that engineering can provide. This is where headless commerce fits.

Medusa and Saleor are two open-source commerce stacks that are powering grocery to gadget ecommerce stores. Here is a short guide to help you choose the right stack for your ecommerce store.

Medusa

Medusa, based on Node.js positions itself as an Open Source Shopify alternative. Medusa prides itself on simplicity and developer friendliness being easy to set up and scale from. Medusa provides a range of features, those who are familiar with Shopify will know, are missing from Shopify base versions, such as multiregional support, integrating a better typo tolerant search. The team at Medusa actively maintains this stack and often responds immediately to support requests on their Discord.

A the time of writing this article, the latest version of Medusa is 1.2.1

Saleor

Saleor, based on Python and Django, brings the power of python to the open-source ecommerce world. Saleor is positioned as an alternative to Magento 2, With Adobe sunsetting Magento 1, and store owners facing the expensive prospective of moving to Magento 2, Saleor claims to be equally good if not better, and relatively inexpensive. Saleor,is another popular open-source headless commerce stack that promises to keep developers in focus, by open-sourcing everything using standard frameworks like GraphQl, Next.js etc. . Mirumee software maintains the Saleor stack and is available on Gitter for support and questions. On the second of March 2022, they released version 3.1.2.

Here is a top-level comparison of the numbers between the two projects from libhunt

Saleor Vs Medusa

Property Saleor Medusa
Project Untitled
Mentions 48 93
Stars on Git Hub 15.3K 9.3K
Month on Month Growth in Stars 2.1% 33.4%
Activity 9.8 9.8
Latest Commit about 18 hours ago 4 days ago,
Language Python JavaScript
License GNU General Public License v3.0 or later MIT License
API GraphQL REST API

Headless architecture

Medusa chooses simplicity above anything else. True to this philosophy uses Rest APIs for the storefront and admin page to interact with the Node. js-based Medusa Server.

The front end can be written in the framework of your choice, from React and React-native to flutter, while the robust NodeJS backend can be continuously improved and enhanced.

Saleor uses GraphQL to interact with Django Python Core. Focusing on flexibility.

As viewed on Saleor.io

Both come with a Next.js-based front end for you to start your development work. More on frontends later

The customizability of the core

As a developer, you may want to implement new use cases. For example, add a bidding system to allow prospective buyers to submit sealed bids. There are several such business-specific requirements and use cases, which may require that you extend the core.

Medusa was built with abstraction in mind. Instead of assembling all big features and systems into one, Medusa provides an abstraction layer that allows developers to integrate any third-party service easily and without hacky solution.

This abstraction also gives you more freedom of choice in terms of what services you use for different functionalities.

Adding a plugin in Medusa is as simple as yarn add <package>, yarn install. This pretty much integrates your plugin with the core. Both the plugin and the core run within the same process space.

Saleor takes a dual approach, where you can either integrate it with the core as a plugin or as an app, where it runs outside the core and integrates to the core via webhooks. While the former allows you to directly access the database, and the same permissions as the core, the latter accesses data only by webhooks. This architecture allows admin-users to easily block and stop nefarious activities as soon as it is detected.

Notable Features where each stands out

Core features

Both platforms have all the major features that you associate with modern ecommerce stacks, such as search, payment gateways, content management, but with some subtle differences.

Search

Search is critical to expose your catalogue to the outside world. It helps customers find what they need directly without having to go through your entire store.

Medusa allows you to integrate any search engine of your choice into the platform. It already integrates with search systems like Meilisearch or Algolia to provide an intuitive search experience for the customers.

With Saleor you can perform basic search queries on titles and descriptions using their GraphQL endpoints. However, it currently doesn’t have ready-made plugins for search engines like Meilisearch. The Algolia search at the time of writing this article is set to be coming soon.

Payment Gateways

Medusa currently supports Stripe, Paypal, Klarna and Adyen. You can also easily integrate other payment gateways, as the entire logic is abstracted with third-party payment providers in mind.

Saleor, in addition to Stripe, Authorize.net, and Adyen, provides additional support for regional payment Gateways like RazorPay via plugins.

CMS integrations

A good CMS ensures that the content is organized well and is available to the readers and search engines alike. This is critical for e-commerce stores as it helps boost organic visits and, in turn, sales.

Both Medusa and Saleor provide basic CMS support. This includes product images and description fields.

In addition, Medusa has well-documented integration guides for headless open-source CMS like Strapi and Contentful. In fact, Medusa comes with a storefront that has Contentful CMS preinstalled, where all content is synced between the Medusa server and Contentful

At the moment Saleor has documented (blog) support for Strapi, and a plugin for Contentful.

Additional Features

Bot Integration

The bot is a major part of your user experience. They can help move customers down the conversion funnel quickly.

Medusa already has a ready-to-use slack integration plugin. Using this plugin, you can receive order notifications every time a customer receives an order in your Slack workspace.

In Saleor, one would currently need to use service such as Zapier to link to 3rd party bot

Migration from Shopify

If you are running on Shopify and are looking to cut down on costs, while owning the whole stack or need custom features that Shopify doesn’t allow you to create such as custom checkout flows, Medusa is a good option. Medusa has a plugin that you can use to seamless migrate products and collections from your Shopify store to Medusa.

With Saleor standard migrations from Shopify methods such as plugins or Add-ons do not currently exist. You can however write your python Add-on and leverage the GraphQL queries to create a bulk importer.

Containerized and Microservice Ready

Medusa supports docker containers for production deployments. You can check it out here. So it is pretty much a plug, play and deploy. It allows you to deploy your Medusa backend which contains all the logic, the storefront, and the admin panel all at once.

If you are architecting a large microservice-based solution, Saleor's out of the box containerized approach helps. Saleor comes containerized with Docker, so you can easily deploy it into cloud-based container services such as Amazon Elastic Container Service (ECS). You can download the Saleor platform from GitHub and start experimenting at once with merely a docker setup.

Marketplace Integration

Specialized digital marketplaces are booming

Medusa at present supports multitenancy, which can help you create a marketplace. You can read more about it here

Saleor already has an integration with Jetti, which will help convert your single store into a multivendor marketplace.

Admin

In the case of both Saleor and Medusa, the admin ships as the 3rd component. At the time of writing this article, there are many common features such as order management, product management, discounts, gift cards etc. as you can see at the links below

Medusjas Demo Admin

Saleor Demoadmin

Product Management

Medusa supports multi-currency, so you can quite easily add different prices for products that are being sold in different currencies and regions from a single interface and may be attached to regions.

Medusa organizes its products in two tiers: product and collections, which is a group of products. For further organizing products, you can use product tags. At the time of writing the article, Medusa doesn’t support additional product metadata via the admin interface. However, you can add metadata via APIs.

Saleor provides similar functionality. Saleor also supports multiple channels. Saleor organizes its products into three tiers, product, category and collection.

The category is akin to a group of products belonging to a product type. A collection is comparable to the collections in Medusa.

Saleor at the moment doesn’t support product tags via the admin interface. You can however add metadata, also you can specify new product attributes while creating product categories.

Order Management

Both platforms provide basic order management services such as placing orders, tracking, payment and fulfilment status.

In Medusa’s case, you can also manage swaps, returns, and order history from the admin.

RMA support out-of-the-box

Medusa’s return management automation makes it much easier for store owners to track and process returns. From accepting returns to providing alternatives and refunds, the automated workflow makes it much easier for the management as well as users.

Saleor has a semi-automated workflow, where the refund issues have to be processed manually.

Development and Extending

Medusa’s admin console is written in Typescript and built around the Gatsby framework. Gatsby is a fast and well-established framework built around React. Its large component library can be very easily added to the admin console

Saleor’s admin panel has also been developed with React and Javascript. They also provide a macaw-UIkit to quickly enhance the components of the admin

Further, The saleor admin panel allows you to create private app keys, which can be used in your custom Add-ons to enhance the Saleor store.

Discounts and Giftcards (Vouchers)

Both platforms support these features with minor differences. Medusa allows you to create product level discounts. Saleor facilitates you in creating category level discounts. This is useful especially when you want to apply discounts to a group of products as opposed

Other Notable Differences

Documentation

Medusa has very crisp and easy-to-follow documentation. Though the documentation is still being developed, its succinct yet practical approach is easy for developers to follow, particularly on integrating third-party features from search onwards.

Saleor’s documentation though detailed, expects readers to have significant programming experience. This might be difficult for starters and if you are interested in quickly building your prototypes.

Plugins

Both Medusa and Saleor have their complement of plugins with which they can integrate.

Medusa has a collection of plugins that you can easily integrate. The list of supported plugins is available in medusa’s documentation. These plugins are managed by the Medusa team. You can also reach out to the team and the community on discord for any related help that you may you need.

Saleor has an app marketplace. It also comes preloaded with plugins and add-ons as listed here. You can learn about integrating them over here and additional integrations are available here

Storefronts

Production-ready storefronts help you to quickly get up and running. Production-ready storefronts have the complete user flow built-in: From searching for products to order and checkout.

Medusa already has a production-ready Gatbsy starter storefront. This storefront interacts with the backend server via REST APIs. What makes the starter quite impressive is unlike other bare-bone boilerplate starters is that it contains almost everything you’d normally associate with a theme, such as headers, footers, collection categories. Moreover, it supports user authentication and other advanced features like returns. All this has been integrated with the medusa backend

Disclaimer
Both these are rapidly evolving platforms. The information presented above based on developments at the end of march 2022.

Medusa Demo Store Front

Medusa also provides a host of other storefronts based on frameworks such as Vue.js, Next.js, Svelte, and more. You can choose any of these or others to build your storefronts. Medusa is fairly easy to integrate with any storefront framework.

Similarly, Saleor provides a starter storefront based on react called React Storefront. The react storefront is based on Next.js framework.

Saleor demo storefront

Community

The Medusa community is growing fast with over 9000 stars at the time of writing this. This community is growing on Discord as well. The active community is a two-way street, providing both assistance to developers and flagging bugs early on. With Senior members of the Medusa team live on this channel, you can quickly escalate blocking issues, and provide feedback to the right stakeholders.

On the other hand, Saleor’s Developer Community is at this point larger, and discussion happens over Gitter and GitHub. Developers have forked Saleor on GitHub over four thousand with over 15000 stars on GitHub.

Pricing

The short answer is “Free.” Both platforms come in a community flavour, that is FOSS and self-managed.

At the point of writing this article, Saleor had already launched its managed platform which starts at USD 695 per month. You can get the latest on their pricing model here.

Medusa is yet to launch this. You can load both these on IASS like AWS and PaSS services like Heroku, Google app engine, and the charges of those platforms could add to your cost.

A significant difference is the fixed cost of maintenance. With Saleor you will need a development team that is well versed in both  Python and React. While with Medusa you could get by with developers who are proficient in JavaScript and React or any other front-end framework like Vue, Svelte etc.

In Conclusion

Both Medusa and Saleor are great frameworks to kickstart your ecommerce store. Depending on the stage your ecommerce business is in you can consider either commerce stacks.

Medusa

  • For early-stage companies, and businesses looking to set up their first-time digital presence, this works well, given that it keeps the costs low and is easy to set up.

  • Companies looking to migrate away from Shopify

  • Small companies and agencies which have few developers.

Saleor

  • For large enterprises and growth-stage companies, Saleor is given the inherent security and flexibility that it brings.

  • Companies looking at alternatives to enterprise Magento

  • Where a large team with a variety of skill sets exist, or you have a competent agency to help you

Top comments (3)

Collapse
 
bastianhilton profile image
Sebastian hilton

the main problem is that Saleor has no real marketplace functionality and using a third party service with no apparent price tag is too risky and might be quite expensive to be honest.

Medusajs looks promising and so does Vendure (if only it had an easier way to manage extensions and digital products)

Collapse
 
arrrrny profile image
Arrrrny

@bastianhilton Bro, you just saved my day! I spent whole night yesterday trying to decide between Medusa and Saleor. What I really needed was an open-source ecommerce framework, built on typescript,(ideally NestJS) and have extensibility on SALES CHANNELS. Both Saleor and Medusa got $8-9 Million investments and both team has no idea how Sales channels are the main drivers of the e-commerce now. What is really needed is a platform with high extensiblity on sales channels. Like I want to have the "listing_url" link on the product variant but I cant on both Saleor or Medusa. Or listings can have different titles across different marketplaces. Then I saw your comment and check the docs of VENDURE. Oh man! On a split second, I said YES, this is it.

-Built on NestJS (#1 NodeJS backend framework, high code quality, stable)
-Focus on Sales Channels
-High Extensibility
@Column(type => CustomProductVariantFields)
customFields: CustomProductVariantFields;
This is how it should be. This simplistic approach solves many problems.

Collapse
 
lavotp profile image
Topollo

Thank you, thank you thank you

This article was so well written I couldn't stop reading.
It helped me decide which path to take as a small business owner.

Thanks a lot.