* init: copy PI files * feat: add subscribers, refactor strategies folder * wip: strategies integration tests package * fix: rename * wip: use redis * wip: use redis deps, redis setup in local tests * fix: naming collision, medusa config * fix: typing, update apply changes for new event ordering and reimplement interface * feat: make redis container run in integration tests * fix: missing yarn lock * feat: redis setup v2 * fix: setup server imports * fix: a lot of integration issues * fix: a lot of integration issues v2, transform tags, fix `ops` object parsing * wip: parsing product options * feat: ✨creating product and variants works, processing product/variant options, update schema * fix: query keys, logic for finding existing variant * fix: types * feat: update product variant's options * feat: parse MA records * feat: creating/updating MA records, region detection, error handling * feat: throw an error when creating an MA for nonexistent region * refactor: remove unused methods * refactor: use provided ids to track records, extract a couple of methods * refactor: remove unused method * refactor/wip: add initial comment for main methods * refactor: replace usage of RedisJSON functionality with basic k/v api * feat: async progress report * types: define more precise types, cleanup * feat: error handling * feat: unit testing preprocessing * feat: integration testing for CI, fix legacy bug where user is unable to create a variant if regional price is also sent as payload, add csv for integration tests * fix: error throw for logs * feat: add product endpoint snap * refactor: remove log * feat: add snaps, rebase * refactor: add comments * feat: snap update * refactor: typo * refactor: change error handler * feat: Redis cleanup after the job is done * testing :fix product unit test, remove integration snap, add inline object matcher * testing: fix obsolete snaps * refactor: update comments * fix: rebase issue * fix: rebase issue v2, remove log form an integration test * fix: try reverting setup server * fix: insert variants test * refactor: don't pass tx manager, refactor methods * refactor: don't use regionRepo, add `retrieveByName` to region repo * refactor: don't use productRepo * refactor: don't use `productVariantRepo` * refactor: remove repo mocks from unit tests * fix: product import unit tests * feat: file cleanup on finalize, kill test logs * wip: use files to persist ops instead of redis, move strategy class into `batch-job` folder * fix: minio delete method, add file cleanup method to import, fix promise coordination * fix: replace redis methods * feat: store import ops as a file instead of Redis * feat: test cleanup * fix: change unit tests after Redis logic removal * feat: use `results` for progress reporting, add `stat_descriptors` info after preprocessing, remove redis mentions * feat: extract to other files, use directory from property, fix strategy loader to allow other files in `strategies` directory * feat: fix instance progress counter * fix: mock services types * fix: update snaps * fix: error handling stream, fix test file service name generation * fix: remove dir with tmp files after testing * fix: new yarn.lock after rebase * fix: remove log, change object shape * fix: add DI types * refactor: remove container as a csv parser dep * fix: remove seeder, change typings * refactor: reimplement `retrieveByName` in the region service * fix: unit tests typings * fix: remove ts-ignore, complete typings for csv parser validators * fix: don't keep track of progress since it is redundant and only keep track of `advancement_count` * fix: return of the batch job seeder * fix: update find region by name method * fix: update types for service typings * fix: update redis type usage * fix: update unit tests file * fix: unit tests * fix: remove redis from integration test * feat: refactor region retrieval by name * feat: refactor product option update * fix: remove repo import * fix: return redis in test * fix: handle stream error * fix: tmp data cleanup Co-authored-by: fPolic <frane@medusajs.com>
Medusa
Documentation | Medusa Admin Demo | Website
An open-source composable commerce engine built for developers.
Getting Started
Deploy in 5 minutes
You can deploy your Medusa server in 5 minutes just by clicking the button below.
Install Locally
You can install Medusa locally or manually on your server by either following our Quickstart guide or the following steps:
-
Install Medusa CLI
npm install -g @medusajs/medusa-cli -
Create a new Medusa project
medusa new my-medusa-store --seed -
Start your Medusa engine
medusa develop
Requirements
- Node v14.0 or higher.
- SQLite or PostgreSQL (SQLite is only for getting started; PostgreSQL is recommended)
- Redis
You can check out this documentation for more details about setting up your environment.
What is Medusa?
Medusa is an open source composable commerce engine built with Node.js. Medusa enables developers to build scalable and sophisticated commerce setups with low effort and great developer experience.
You can learn more about Medusa’s architecture in our documentation.
Features
- Orders, Exchanges, and Returns APIs: Aside from the standard order management that comes with ecommerce platforms, Medusa also provides an easy and automated way to manage swaps, returns, and claims.
- Products and Collections APIs: Add products with extensive customization settings and sort them into collections.
- Region API: Configure and manage multiple regions and currencies all from one platform.
- Plugin API: Easily integrate fulfillment providers, payment providers, notification services, and many other custom tools and third-party services.
- PriceList and Promotions APIs: Advanced pricing for products with conditions based on its amount in the cart or promotions and discounts.
- Tax API: Advanced tax configurations specific to multiple regions, with capability of specifying taxes for specific products.
See more of the ecommerce features on our documentation.
Roadmap
Write-ups for all features will be made available in Github discussions prior to starting the implementation process.
2022
- Admin revamp
- Tax API
- Tax Calculation Strategy
- Cart Calculation Strategy
- Customer Groups API
- Promotions API
- Price Lists API
- Price Selection Strategy
- Import / Export API
- Sales Channel API
- Extended Product API (custom fields, publishing control, and more)
- Extended Order API (managing placed orders, improved inventory control, and more)
- Multi-warehouse support
- GraphQL API
Plugins
As a headless and extendible solution, Medusa allows you to integrate third-party services or add custom features into Medusa by installing Plugins.
Check out our available plugins that you can install and use instantly on your Medusa server.
Contributions
Medusa is all about the community. Therefore, we would love for you to help us build the most robust and powerful commerce engine on the market.
Whether it is fixing bugs, improving our documentation or simply spreading the word, please feel free to join in. Please check our contribution guide for further details about how to contribute.
Community & Support
Use these channels to be part of the community, ask for help while using Medusa, or just learn more about Medusa:
- Discord: This is the main channel to join the community. You can ask for help, showcase your work with Medusa, and stay up to date with everything Medusa.
- GitHub Issues: for sending in any issues you face or bugs you find while using Medusa.
- GitHub Discussions: for joining discussions and submitting your ideas.
- Medusa Blog: find diverse tutorials and company news.
Upgrade Guides
Follow our upgrade guides on the documentation to keep your Medusa project up-to-date.
License
Licensed under the MIT License