Setting up a Next.js storefront for your Medusa project

Short tutorial helping you use our Next.js starter to quickly set up a Medusa storefrontPost thumbnail image

Medusa storefront Medusa is a headless open source commerce platform giving engineers the foundation for building unique and scaleable digital commerce projects through our API-first engine.

Being headless, our starters serve as a good foundation for you to get coupled with a frontend in a matter of minutes.

This article assumes you already have the Medusa project created and ready to be linked to your Next.js starter.

Getting started

In order to get started let's open the terminal and use the following command to create an instance of your storefront:

npx create-next-app -e https://github.com/medusajs/nextjs-starter-medusa my-medusa-storefront

Now we have a storefront codebase that is ready to be used with our Medusa server.

Next, we have to complete two steps to make our new shiny storefront to speak with our server: link storefront to a server and update the STORE_CORS variable.

Let's jump to these two.

For this part, we should navigate to a client.js file which you can find in the utils folder.

We don't need to do much in here, but to make sure that our storefront is pointing to the port, where the server is running

import Medusa from '@medusajs/medusa-js';

const BACKEND_URL = process.env.GATSBY_STORE_URL || 'http://localhost:9000'; // <--- That is the line we are looking for

export const createClient = () => new Medusa({ baseUrl: BACKEND_URL });

By default the Medusa server is running at port 9000, so if you didn't change that we are good to go to our next step.

Update the STORE_CORS variable

Here let's navigate to your Medusa server and open medusa-config.js

Let's locate the STORE_CORS variable and make sure it's the right port (which is 3000 by default for Next.js projects)

 * CORS to avoid issues when consuming Medusa from a client.
 * Should be pointing to the port where the storefront is running.
const STORE_CORS = process.env.STORE_CORS || 'http://localhost:3000';

Now we have a storefront that interacts with our Medusa server and with that we have a sweet and complete e-commerce setup with a Next.js storefront.

Learn more

If you want to discover the endless possibilities of Medusa's ecosystem you can find a lot more useful resources on our docs page which can help you to build your awesome commerce project!

If you need help or have questions about how to use Medusa feel free to join our Discord to get direct access to our engineering team.

Person photo
Vadim SmirnovSep. 6, 20211 min.

Want to know more about Medusa

Find related blog posts below


How to Create Custom Endpoints in Medusa

In this tutorial, you’ll learn how to create custom endpoints on your Medusa server for both the storefront and admin.


How to Create a Comic Book Online Store with Medusa, Gatsby, PayPal, and MeiliSearch

In this tutorial, you’ll learn how to create a comic book store with Medusa and add important ecommerce features.


Medusa Open Source Marketplace Part 2: Make Orders Vendor Specific

In this part, you’ll learn how to link orders to their respective stores in a marketplace.


Receive the most important updates around Medusa and our ecosystem