Back to Medusa

{metadata.title}

www/apps/resources/app/infrastructure-modules/page.mdx

2.14.27.1 KB
Original Source

import { CardList } from "docs-ui"

export const metadata = { title: Infrastructure Modules, }

{metadata.title}

Medusa's architectural functionalities, such as emitting and subscribing to events or caching data, are all implemented in Infrastructure Modules. An Infrastructure Module is a package that can be installed and used in any Medusa application. These modules allow you to choose and integrate custom services for architectural purposes.

For example, you can use our Redis Event Module to handle event functionalities, or create a custom module that implements these functionalities with Memcached. Learn more in the Architecture documentation.

This section of the documentation showcases Medusa's Infrastructure Modules, how they work, and how to use them in your Medusa application.

Analytics Module

<Note>

The Analytics Module is available starting Medusa v2.8.3.

</Note>

The Analytics Module exposes functionalities to track and analyze user interactions and system events. For example, tracking cart updates or completed orders. Learn more in the Analytics Module documentation.

<CardList items={[ { title: "Local", href: "/infrastructure-modules/analytics/local", badge: { variant: "neutral", children: "For Development" } }, { title: "PostHog", href: "/infrastructure-modules/analytics/posthog", badge: { variant: "green", children: "For Production" } } ]} />

Caching Module

The Caching Module provides functionality to cache data in your Medusa application, improving performance and reducing latency for frequently accessed data.

The following Caching modules are provided by Medusa. You can also create a custom Caching Module Provider as explained in the Create Caching Module Provider guide.

<Note>

The Caching Module is available starting Medusa v2.11.0. It replaces the deprecated Cache Module.

</Note>

<CardList items={[ { title: "Redis", href: "/infrastructure-modules/caching/providers/redis", badge: { variant: "green", children: "For Production" } }, { title: "Memcached", // TODO add link href: "#", badge: { variant: "blue", children: "Tutorial" } } ]} />


Event Module

An Event Module implements the underlying publish/subscribe system that handles queueing events, emitting them, and executing their subscribers. Learn more in this documentation.

The following Event modules are provided by Medusa. You can also create your own event module as explained in this guide.

<CardList items={[ { title: "Local", href: "/infrastructure-modules/event/local", badge: { variant: "neutral", children: "For Development" } }, { title: "Redis", href: "/infrastructure-modules/event/redis", badge: { variant: "green", children: "For Production" } } ]} />


File Module

The File Module handles file upload and storage of assets, such as product images. Refer to the File Module documentation to learn more about it.

The File Module has module providers that implement the underlying logic of handling uploads and downloads of assets, such as integrating third-party services. The following File Module Providers are provided by Medusa. You can also create a custom provider as explained in the Create File Module Provider guide.

<CardList items={[ { title: "Local", href: "/infrastructure-modules/file/local", badge: { variant: "neutral", children: "For Development" } }, { title: "AWS S3 (and Compatible APIs)", href: "/infrastructure-modules/file/s3", badge: { variant: "green", children: "For Production" } } ]} />


Locking Module

The Locking Module manages access to shared resources by multiple processes or threads. It prevents conflicts between processes and ensures data consistency. Refer to the Locking Module documentation to learn more about it.

The Locking Module uses module providers that implement the underlying logic of the locking mechanism. The following Locking Module Providers are provided by Medusa. You can also create a custom provider as explained in the Create Locking Module Provider guide.

<CardList items={[ { title: "Redis", href: "/infrastructure-modules/locking/redis", badge: { variant: "green", children: "Recommended" } }, { title: "PostgreSQL", href: "/infrastructure-modules/locking/postgres", } ]} />


Notification Module

The Notification Module handles sending notifications to users or customers, such as reset password instructions or newsletters. Refer to the Notification Module documentation to learn more about it.

The Notification Module has module providers that implement the underlying logic of sending notifications, typically through integrating a third-party service. The following modules are provided by Medusa. You can also create a custom provider as explained in the Create Notification Module Provider guide.

<CardList items={[ { title: "Local", href: "/infrastructure-modules/notification/local", badge: { variant: "neutral", children: "For Development" } }, { title: "SendGrid", href: "/infrastructure-modules/notification/sendgrid", badge: { variant: "green", children: "For Production" } } ]} />

Notification Module Provider Guides

<CardList items={[ { title: "Send Notification", href: "/infrastructure-modules/notification/send-notification" }, { title: "Create Notification Provider", href: "/references/notification-provider-module" }, { title: "Resend", href: "/integrations/guides/resend", badge: { variant: "blue", children: "Integration" } } ]} />


Workflow Engine Module

A Workflow Engine Module handles tracking and recording the transactions and statuses of workflows and their steps. Learn more about it in the Workflow Engine Module documentation.

The following Workflow Engine modules are provided by Medusa.

<CardList items={[ { title: "In-Memory", href: "/infrastructure-modules/workflow-engine/in-memory", badge: { variant: "neutral", children: "For Development" } }, { title: "Redis", href: "/infrastructure-modules/workflow-engine/redis", badge: { variant: "green", children: "For Production" } } ]} />