Hi Oliver, can you introduce yourself to our community?
I'm Oli, co-founder and CTO of Medusa which I built together with Seb (co-founder and CEO) over the past two-three years. Earlier this year, we were joined by Nicklas (co-founder and COO), who leads operations. Together with our amazing team and community, we are making headless commerce accessible to all.
So, you are the CTO and co-founder of Medusa - can you tell us more about it?
My main areas of work are engineering, product and community.
Together with Seb, I run development cycles using a framework by Michael Seibel which is great for shipping product efficiently. And then I engage a lot with the community through Discord and try to help out and support wherever possible.
What does an “open-source headless commerce engine” mean?
Open-source refers to the fact, that our codebase is publicly available and free to download and use. We open-sourced Medusa in early 2020 because we wanted to give our users the ability to take ownership of their roadmap and stack. The open-source approach allows you to build features when you need them and control the direction of said features since you own the codebase in case you wanna diverge from the core product roadmap.
A headless architecture is a decoupling of the presentation layer and data layer. By detaching the frontend in traditional monolithic systems and constructing the data in a modular and reusable way, you are left with a data layer that can be consumed by any client or service. This separation of concern also enhances the integrity of your data as it no longer becomes necessary to modify and hack your data in order for it to be presented in the desired way.
Finally, commerce engine refers to the fact that our engine is built for developers. Our goal is to allow developers to do more through great tooling and a flexible foundation.
How do you compare Medusa to Shopify? What makes Medusa unique?
We are the open-source alternative to Shopify. We provide most of the same standard features that Shopify's backend gives out of the box (e.g. E2E order handling, easy to use admin interface etc.) but with a much better developer experience; giving unlimited customization and extensibility options. In addition, we have aimed to fix some of the regular backend hurdles we know from Shopify like full multi-regional support (local currency, shipment, and payment options) and fully automated exchange + claim handling.
Now, Shopify's strongest value prop is arguably its ease of use. Almost anyone is capable of setting up a shop through their onboarding flow regardless of technical know-how. Medusa does not currently have a hosted solution, so we do not allow for this flow. Though from a developer perspective, deploying Medusa and a storefront can be done with almost no effort similar to creating a shop in Shopify. And this is a testament to how we differentiate. Our engine is built for developers and our goal is to allow them to build amazing full-stack commerce solutions without limitations on features and functionality.
For many years, the headless approach to commerce has been an enterprise exclusivity due to the large number of resources that it required. You would need frontend developers to build your storefront and backend developers to maintain your infrastructure and services.
From the get-go, we've focused on lowering the bar for when you can enter the headless commerce space. We do this by 1) removing the need for a complex infrastructure through a clever plugin architecture. The core engine and all plugins run as part of the same Node.js server which is contrary to how other headless platforms need connectors and translation layers between the commerce engine and third-party services. And 2) we have a very high focus on optimizing the developer experience through strong tooling such as quick-starters, documentation, CLI, reference, etc.
What are the technologies that you are using to build Medusa?
Medusa is written in Node.js with Express. Initially, everything was written in vanilla JavaScript, but we are currently in the process of migrating the entire project to TypeScript to improve the developer experience.
The data layer is built on Postgres with Typeorm as ORM (though for easy onboarding SQLite is also supported). Our event system is powered by Redis.
Medusa uses Awilix for dependency injection, which allows you to use all services across all parts of the system; core, plugins, and your custom project.
Our documentation is a Docusaurus project and API reference is automatically generated from an Open API Specification.
Why did you build this product?
Two years ago, we were an agency building all sorts of applications; ecommerce, integrations, restaurant tech., etc. We had a customer, TEKLA Fabrics, who was running a WooCommerce setup, and they wanted to change to a more scalable platform. The requirements were 1) a custom storefront for them to own their brand identity and the entire user experience, 2) a flexible backend for them to scale with as their business needs grow, and 3) a multi-regional setup allowing them to operate in multiple different markets in multiple different currencies through a single platform.
After researching different solutions in the market it became clear that there was no platform that could cater to the requirements in a way that would be easily maintainable into the future. We evaluated solutions like Shopify, but had often times been in situations where we had to "hack" our way to a feature which made us frustrated and a bit embarrassed about the work we were delivering. In order to overcome this we decided to create a bespoke solution, which we designed to be as flexible as possible so that we would never be in a situation where we couldn't support a customer request in a native way. We shared offices with them for a year giving us the best possibilities for improving and iterating on the product, quickly and efficiently.
How many are you in the team, and how many external contributors do you have?
We are 10 in total, 6 in the engineering team, and we have 51 contributors on our core project.
Are you looking for more external contributors? What kind of contributions are you looking for?
We are indeed open for external contributions. At this point, we are trying to increase awareness of our project and headless commerce in general, which is why all contributions are welcome.
Though, we try to engage with contributors that have an interest in commerce. The goal is to identify why and how they use Medusa such that we can continuously improve the product and developer experience to support their growth and use-cases.
What are your plans for Medusa in the next 12 months?
In regards to product, the focus for us right now is to keep improving the core, tooling and developer experience to attract even more great developers into our community. We want to build a community for developers to share ideas and create relationships with each other.
Next year, we've considered launching a hosted solution, such that we can provide optimized infrastructure and automated deployment flows for Medusa projects.
Do you have any advice for other founders trying to build open-source projects?
Community is part of what makes open-source projects powerful, so make sure to allocate resources to content production for and general engagement in your community. Since day one, we've reached out to almost every single one of our community members to ensure, that they are onboarded properly and don't have any blocking issues. Additionally, this has helped us identify community characteristics and provided us with close feedback loops enabling us to build an even better product.
What is your favorite programming language? Why?
I've been using Javascript for almost all of my professional career and I have come to love it. What started out as a very simple (some might say naive) language is now widely adopted, which is manifested in the ability to build almost everything with it; desktop apps, web apps, backend, mobile, etc.
Are you more PostgreSQL or MongoDB? Why?
Funny story. We were using MongoDB in the first version of Medusa, but migrated to PostgreSQL in early 2021 to get more integrity in our data layer. When we began building Medusa our focus was very clearly on picking tools that would allow us to iterate as quickly as possible because we knew that there would be a lot of changes in requirements in the early days. MongoDB is great for that as you don't have to deal with constraints in the same way that you do in relational databases. After some time, however, it became clear that Mongo introduced too many inconsistencies in our data model. Luckily we were at a point where we had a pretty good idea about how the schema should be structured so it felt like the perfect time to move to PostgreSQL and we haven't looked back since.
What are the top 3 tools you love as a developer?
- VSCode (shortcuts, linting, IntelliSense)
- Git-based automated deployments
- Great CLIs
Do you have any favorite cloud service providers? Why?
We've been using Heroku for the past two years due to it's great developer experience and general ease of use. We recently tried to make the move to AWS, but as you know, their console can be quite hard to navigate. For future project, we'll be using Qovery that leverages the great infrastructure from AWS through an easy-to-use interface.
The toughest question of them all: what does Medusa mean for you? Where does it come from? What is the story behind it?
Prior to open-sourcing Medusa, we did not really have a name. But when decided to do it, Kristoffer from TEKLA suggested Medusa, as she was decapitated which is a subtle reference to our software being headless.
Check out Medusa - a headless commerce platform.
Read our previous interview with Quentin - CEO and co-founder of MeiliSearch.