Open Source Storefront for Multi-vendor Marketplace. Customizable and designed for B2C. Check demo for Fashion industry 👇 https://b2c.mercurjs.com
Find a file
Mikołaj Borowski 09d57f1be4
Release/1.5.4 (#315)
* Add `data-testid` attributes to multiple components for improved testability and consistency.

* Add `data-testid` attributes to multiple components for improved testability

* Add `data-testid` attributes across components for improved testing support

* Add `data-testid` attributes across components for improved testing support

* Add `data-testid` attributes across components for improved testing support

* Add `data-testid` attributes across components for improved testing support

* fix deployment issue

* fix deployment issue

* Add `PromoCode` component to `CartReview` section (#288)

- Introduced `PromoCode` component for handling promotional codes in the cart.
- Updated `CartReview` to include the new component.
- Improved formatting and ensured consistent use of single quotes across codebase.

* Remove `CartPromotionCode` component and related logic, cleanup `Cart` section formatting, and ensure consistent use of single quotes. (#289)

* remove orders without order_set key (#293)

* Cart items amount chaning removed from checkout page (#292)

* Bump medusa deps

* Fix typing

* Revert "Fix typing"

This reverts commit 5934831e91.

* Feat(MM2-2088 + MM2-2390): Change local algolia products searching to… (#286)

* Feat(MM2-2088 + MM2-2390): Change local algolia products searching to /store/products/search endpoint.

* Fix(MM2-2088 + MM2-2390): Add missing type file.

* Fix: PR typing issues.

* Fix: PR typing issues.

* Fix: PR typing issues.

* Fix: PR typing issues.

* fix conflict merge

* add missing data test id

* chore: rerun deployment

* Add ignoreBuildErrors to next.config.ts

* Remove package manager from package.json

* corepack enable

* fix(MM2-2510): Missing "x" icon on "Reset password link" modal (#295)

* fix(MM2-2233): Add "Forgot password" functionality (#267)

* fix(MM2-2507): Update copy for success toast (#298)

* fix(MM2-2510): Missing "x" icon on "Reset password link" modal

* fix(MM2-2507): Missing validation for case when I used a not existing email on "Forgot your password" view

* Revert "fix(MM2-2510): Missing "x" icon on "Reset password link" modal"

This reverts commit cc62416a43.

* Release 1.5.2 (#301)

- Merge PR #297: MM2-2480 storefront bump medusajs-js-sdk to 2.12.5
- fix(MM2-2507): Update copy for success toast
- fix(MM2-2233): Add "Forgot password" functionality
- fix(MM2-2510): Missing "x" icon on "Reset password link" modal
- Merge PR #296: MM2-2209 User Account Authentication
- Merge PR #274: MM2-2208 Cart Checkout
- Merge PR #276: MM2-2210 Dynamic Asynchronous Components
- Merge PR #275: MM2-2209 User Account Authentication
- Merge PR #273: MM2-2207 Detail Pages
- Merge PR #272: MM2-2206 List Pages
- Merge PR #271: MM2-2205 Storefront Layout and Navigation
- feat(MM2-2088 + MM2-2390): Change local algolia products searching
- Cart items amount changing removed from checkout page
- Remove orders without order_set key
- Remove CartPromotionCode component and related logic
- Add PromoCode component to CartReview section
- Add data-testid attributes across components for testing
- Various bug fixes and improvements

* fix: remove npm references

* Fix the bug (#307)

* test: empty commit

* fix/MM2-2640 (#306)

* fix/MM2-1640 (#305)

* fix/MM2-1640

* remove unneccessary mapping

* Fix the look of set new password modals (#308)

* fix/MM2-2473 (#313)

* wip

* fix/MM2-2473

* Update version to 1.5.4

---------

Co-authored-by: Kamil Kiliasiński <kamilkiliasinski@gmail.com>
Co-authored-by: Paweł Fulara <39165521+pfulara@users.noreply.github.com>
Co-authored-by: kacpergumieniuk <kacpergumieniuk@gmail.com>
Co-authored-by: Hubert Bogdański <hubert.bogdanski@rigbyjs.com>
Co-authored-by: WojciechPlodzien <wojciech.plodzien@rigbyjs.com>
Co-authored-by: Kacper Tokarski <104381556+kactok@users.noreply.github.com>
Co-authored-by: Kacper Gumieniuk <48014664+kacpergumieniuk@users.noreply.github.com>
Co-authored-by: slusarczykmichal <slusarczyk.michal@outlook.com>
Co-authored-by: rigbyms <85502538+rigbyms@users.noreply.github.com>
2026-03-03 11:37:54 +01:00
.storybook Fix/cart (#95) 2025-06-02 14:31:01 +02:00
public Fix/mm2 1159 cart empty state (#188) 2025-10-06 10:09:38 +02:00
src Release/1.5.4 (#315) 2026-03-03 11:37:54 +01:00
.dockerignore Feat/docker setup (#246) 2026-01-13 14:14:35 +01:00
.env.template Feat/docker setup (#246) 2026-01-13 14:14:35 +01:00
.eslintrc.js refactor/eslint-prettier-config (#3) 2025-02-04 14:08:52 +01:00
.gitignore fix/checkout-fix (#42) 2025-04-17 11:50:17 +02:00
.prettierrc.js Add plugins and new config 2025-11-20 10:30:18 +01:00
algolia-config.json Fix/mm2 891 algolia search (#156) 2025-07-23 09:14:13 +02:00
Dockerfile Feat/docker setup (#246) 2026-01-13 14:14:35 +01:00
next.config.ts Add ignoreBuildErrors to next.config.ts 2026-02-17 16:35:26 +01:00
package.json Release/1.5.4 (#315) 2026-03-03 11:37:54 +01:00
postcss.config.mjs Initial commit from Create Next App 2025-02-04 11:34:40 +01:00
README.md fix: remove npm references 2026-02-17 16:35:49 +01:00
tailwind.config.ts Merge branch 'test' into fix/mm2-1642/session-expired-behavior 2025-12-09 14:42:27 +01:00
tsconfig.json Refactor data library: ensure consistent formatting, standardize single quotes, improve readability, and cleanup unused code. (#262) 2025-12-09 14:13:49 +01:00
yarn.lock Fix the bug (#307) 2026-02-17 16:35:49 +01:00

B2C Storefront Cover

B2C Storefront
for Mercur - Open Source Marketplace Platform

License PRs Welcome Support

🛍️ B2C Marketplace Storefront Demo · Mercur Website · 📃 Explore the docs

B2C Storefront for Marketplace

Customizable storefront designed for B2C with all elements including browsing and buying products across multiple vendors at once.

Ready to go:

Part of Mercur

Mercur is an open source marketplace platform that allows you to create high-quality experiences for shoppers and vendors while having the most popular Open Source commerce platform MedusaJS as a foundation.

Mercur is a platform to start, customize, manage, and scale your marketplace for every business model with a modern technology stack.

Mercur

Quickstart

Installation

Clone the repository

git clone https://github.com/mercurjs/b2c-marketplace-storefront.git

 

Go to directory

cd b2c-marketplace-storefront

 

Install dependencies

yarn install

 

Make a .env.local file and copy the code below

# API URL
MEDUSA_BACKEND_URL=http://localhost:9000
# Your publishable key generated in mercur admin panel
NEXT_PUBLIC_MEDUSA_PUBLISHABLE_KEY=
# Your public url
NEXT_PUBLIC_BASE_URL=http://localhost:3000
# Default region
NEXT_PUBLIC_DEFAULT_REGION=pl
# Stripe payment key. It can be random string, don't leave it empty.
NEXT_PUBLIC_STRIPE_KEY=supersecret
# Backend cookie secret
REVALIDATE_SECRET=supersecret
# Your site name in metadata
NEXT_PUBLIC_SITE_NAME="Fleek Marketplace"
# Your site description in metadata
NEXT_PUBLIC_SITE_DESCRIPTION="Fleek Markeplace"
# Algolia Application ID
NEXT_PUBLIC_ALGOLIA_ID=supersecret
# Algolia Search API Key
NEXT_PUBLIC_ALGOLIA_SEARCH_KEY=supersecret
#TalkJS APP ID
NEXT_PUBLIC_TALKJS_APP_ID=<your talkjs app id>

 

Start storefront

yarn dev

 

Guides

How to get Aloglia Keys

How to get TalkJs App ID

Configure Algolia index

To work Algolia correctly you need to configure facets and searchable attributes. You can use import function to upload algolia-config.json file  

In Algolia dashboard chose your index and select Import configuration from Manage index dropdown menu  

Algolia import

 

algolia-config.json

{
  "settings": {
    "minWordSizefor1Typo": 4,
    "minWordSizefor2Typos": 8,
    "hitsPerPage": 20,
    "maxValuesPerFacet": 100,
    "searchableAttributes": [
      "title",
      "subtitle",
      "brand.name",
      "tags.value",
      "type.value",
      "categories.name",
      "collection.title",
      "variants.title"
    ],
    "numericAttributesToIndex": null,
    "attributesToRetrieve": null,
    "unretrievableAttributes": null,
    "optionalWords": null,
    "attributesForFaceting": [
      "average_rating",
      "filterOnly(categories.id)",
      "categories.name",
      "seller.handle",
      "seller.store_status",
      "filterOnly(supported_countries)",
      "searchable(title)",
      "variants.color",
      "variants.condition",
      "variants.prices.currency_code",
      "variants.size"
    ],
    "attributesToSnippet": null,
    "attributesToHighlight": null,
    "paginationLimitedTo": 1000,
    "attributeForDistinct": null,
    "exactOnSingleWordQuery": "attribute",
    "ranking": [
      "typo",
      "geo",
      "words",
      "filters",
      "proximity",
      "attribute",
      "exact",
      "custom"
    ],
    "customRanking": null,
    "separatorsToIndex": "",
    "removeWordsIfNoResults": "none",
    "queryType": "prefixLast",
    "highlightPreTag": "<em>",
    "highlightPostTag": "</em>",
    "alternativesAsExact": ["ignorePlurals", "singleWordSynonym"],
    "renderingContent": {
      "facetOrdering": {
        "facets": {
          "order": ["variants.color", "variants.size", "variants.condition"]
        },
        "values": {
          "variants.color": {
            "sortRemainingBy": "count"
          },
          "variants.condition": {
            "sortRemainingBy": "count"
          },
          "variants.size": {
            "sortRemainingBy": "count"
          }
        }
      }
    }
  },
  "rules": [],
  "synonyms": []
}