Overview
Discover what makes Medusa powerful
Medusa is a **fully self‑hosted e‑commerce engine** that exposes a clean, REST/GraphQL API and a modular plugin system. At its core it implements the entire checkout flow, inventory management, and order fulfillment logic while keeping business rules isolated in *commerce modules*. This separation allows developers to swap or extend individual capabilities—such as adding a new payment gateway, customizing tax calculations, or building a B2B procurement workflow—without touching the underlying core.
Framework Layer
Commerce Modules
Admin UI
Database
Overview
Medusa is a fully self‑hosted e‑commerce engine that exposes a clean, REST/GraphQL API and a modular plugin system. At its core it implements the entire checkout flow, inventory management, and order fulfillment logic while keeping business rules isolated in commerce modules. This separation allows developers to swap or extend individual capabilities—such as adding a new payment gateway, customizing tax calculations, or building a B2B procurement workflow—without touching the underlying core.
The platform is written in TypeScript and runs on Node.js (v18+), leveraging the modern ES module syntax. Data persistence is handled through a TypeORM‑based abstraction that supports PostgreSQL, MySQL/MariaDB, and SQLite. The architecture follows a service‑oriented pattern: each module (products, customers, orders, shipping) is a self‑contained service that registers its own routes, database entities, and event handlers. Modules communicate via an internal event bus (EventEmitter) and expose a well‑defined plugin API that allows developers to inject custom logic or replace default implementations.
Architecture
- Framework Layer: A lightweight Express‑derived server that hosts the API and a pluggable middleware stack. The framework provides utilities for authentication, caching (Redis optional), and request validation.
- Commerce Modules: A set of npm packages (
@medusajs/product,@medusajs/order, etc.) that implement domain logic. Each module ships with its own database schema, service classes, and GraphQL resolvers. - Admin UI: A React/Next.js application that consumes the API. It is also modular, enabling developers to add custom pages or widgets via a plugin system.
- Database: Relational databases (PostgreSQL/MySQL) are the default; SQLite is supported for lightweight deployments. The schema is generated from TypeORM entities, and migrations are managed via
typeormCLI. - Containerization: Docker Compose files are provided for quick spin‑up, and the platform is compatible with Kubernetes via Helm charts.
Core Capabilities
- REST & GraphQL APIs: Full CRUD for products, customers, orders, and more. Custom resolvers can be added through module extensions.
- Event System: Publish/subscribe model for order events, payment status changes, and inventory updates. Webhooks can be configured to notify external services.
- Extensible Pricing: Discount, tax, and shipping modules expose hooks (
beforeCalculate,afterCalculate) for custom pricing logic. - Payment & Shipping Integrations: Pre‑built adapters for Stripe, PayPal, and major shipping carriers. New providers can be added by implementing the provider interface.
- Internationalization: Locale-aware product catalogs, multi‑currency support, and region‑specific tax rules.
Deployment & Infrastructure
Medusa is designed for self‑hosting with minimal operational overhead. A single Docker Compose file deploys the API, admin UI, and PostgreSQL database; scaling is achieved by adding replicas of the API container behind a load balancer. For high‑traffic scenarios, the platform can be deployed on Kubernetes with stateful sets for PostgreSQL and horizontally scaled stateless API pods. Optional Redis caching improves performance for session management and rate limiting.
Integration & Extensibility
The plugin system is the cornerstone of Medusa’s flexibility. Developers can:
- Create custom modules that register new entities and services.
- Override existing module logic by providing a higher‑priority provider implementation.
- Hook into lifecycle events (
beforeCreateOrder,afterPayment) to inject business rules. - Expose new API endpoints via the framework’s router extension mechanism.
All extensions are packaged as npm modules, allowing versioning and reuse across projects. The open‑source nature of every module means that upstream contributions are straightforward, fostering a vibrant ecosystem.
Developer Experience
- TypeScript first: Strong typing across the codebase and documentation reduces runtime errors.
- Comprehensive docs: The official site hosts API references, module guides, and migration tutorials.
- Community support: Active Discord channel, GitHub Discussions, and a sizable contributor base ensure rapid issue resolution.
- CLI tooling: Commands for generating modules, running migrations, and seeding data streamline development workflows.
Use Cases
- B2C storefronts: Rapidly launch a new brand with pre‑built product catalogs and checkout flows.
- B2B marketplaces: Extend the order module to support bulk pricing, purchase orders, and multi‑warehouse inventory.
- Enterprise PoS systems: Integrate the API with in‑store hardware, leveraging Medusa’s inventory sync and sales analytics.
- Custom service platforms: Build a subscription or booking system on top of Medusa’s flexible pricing and scheduling modules.
Advantages
- Performance: Lightweight Node.js runtime with asynchronous event handling delivers sub‑200 ms API responses under moderate load.
- Flexibility: Modular architecture lets developers pick and choose only the features they need, keeping the codebase lean.
- Licensing: MIT license allows unrestricted commercial use and modification without attribution fees.
- Ecosystem: A growing library of integrations (payment, shipping, analytics) reduces the need for bespoke adapters.
Medusa’s blend of a robust core, modular extensibility, and self‑hosting capabilities makes it an
Open SourceReady to get started?
Join the community and start self-hosting Medusa today
Related Apps in other
Immich
Self‑hosted photo and video manager
Syncthing
Peer‑to‑peer file sync, no central server
Strapi
Open-source headless CMS for modern developers
reveal.js
Create stunning web‑based presentations with HTML, CSS and JavaScript
Stirling-PDF
Local web PDF editor with split, merge, convert and more
MinIO
Fast, S3-compatible object storage for AI and analytics
Weekly Views
Repository Health
Information
Explore More Apps
TileServer GL
Serve vector and raster tiles with MapLibre rendering
CyTube
Synchronized video watching with chat for shared playlists
Bigcapital
Smart, open‑source accounting for SMBs
Baby Buddy
Track baby milestones, sleep, feedings, and more to predict needs
Fess
Enterprise Search Server with Built‑in Crawler
Kapowarr
Automated comic library management for the arr ecosystem
