Case study

Maison Kameur, a custom ecommerce store.

Maison Kameur brings together artisans and the objects they make by hand in small batches. Nualt designed and built the online store, from visual identity to hosting, around a multi-artisan model that off-the-shelf platforms handle poorly, then trained the founders to run it and own it outright.

maisonkameur.fr
Maison Kameur store home page
Duration
Two months
Services
Visual identity, design, development, hosting, training
cheaper than Shopify for hosting
66%

At a glance

  • The store links every object to its artisan and applies business rules specific to its model, including shipping costs calculated per artisan.
  • Twelve integrations were custom-built, including an authentication module since released as open source and listed in the official Medusa plugin directory.
  • A caching policy set data by data keeps the catalog fast while always showing accurate stock.
  • Analytics respect visitor consent and stay separate from sales figures.
  • Hosting costs 66% less than Shopify, the code is 100% owned, and the founders were trained on their store’s architecture.

Leaving Shopify
for a store that fits.

Maison Kameur’s founders already knew online retail, having run a store on Shopify. Their new project set different requirements. Maison Kameur presents several artisans under one banner, each with their own story, objects and parcels, while Shopify thinks of a store as a single seller. Reproducing that model would have meant stacking paid apps around a theme, with a subscription and transaction fees, on a platform the store would never have owned.

So we built a custom store, starting from its model rather than from the constraints of an existing platform.

On Shopify

  • A store designed for a single seller
  • Paid apps stacked around a theme
  • A subscription and transaction fees
  • A platform the store never owns

At Maison Kameur

  • Several artisans under one banner, each with their own objects and parcels
  • Twelve integrations built for its model
  • Hosting 66% cheaper, with no commission on sales
  • 100% proprietary code, in the founders’ name

Every object linked
to its maker.

The site relies on two open source tools, each in its own role. Medusa, an ecommerce engine, handles the catalog, pricing, inventory, carts and orders. Payload, a CMS built into the site, handles the artisan profiles and the journal. Each product references its artisan, without any data being copied from one tool to the other. An object’s page leads to the story of the person who made it, and an artisan’s page always shows up-to-date objects, with no double entry for the founders.

maisonkameur.fr
The page for a glazed stoneware vase, with a link to its artisan’s page
maisonkameur.fr
A cabinetmaker’s artisan page, with their crafts and number of creations

Business rules
cut to fit the model.

We built twelve integrations for this store.

For invoices, we started from an existing open source plugin and adapted it to French law and to the store’s situation. The founders enter their own legal details from the admin, and the invoice changes structure with the company’s legal status. It carries the VAT exemption notice for as long as the store is a micro-enterprise, then breaks out VAT the day the store becomes liable for it, with no technical work involved.

Search runs on Orama, an open source engine, following an approach inspired by Mercur.js, a marketplace platform built on Medusa. Visitors find an object or an artisan just as easily, and the engine stays swappable if the store’s needs change.

Shipping costs calculated per artisan

The most far-reaching integration concerns delivery. Each artisan ships their own parcel, so shipping is calculated per artisan, from the highest rate among their objects in the cart, then added up across artisans.

Admin · Medusa
The sales dashboard in the Medusa admin, with orders and revenue by artisan, category and product

A dashboard built for the business

Built into the admin, it shows revenue, repeat purchase rate, abandoned carts, promo codes, returns, shipping times and stockouts, with a per-artisan breakdown to follow each one’s sales.

Alongside it come promotions that start and stop on their own at the scheduled date, favorites and a log of the actions taken in the admin.

maisonkameur.fr
The sign-in page, with Google, an email link or a password

Modern sign-in, released as open source

Out of the box, Medusa only supports email and password sign-in, yet a tedious sign-up costs sales. So we built a module for Maison Kameur that opens Medusa to modern sign-in methods, such as signing in with Google.

We then released it as open source. It is now listed in the official Medusa plugin directory, and other stores have adopted it.

A fast store
that never sells what it doesn’t have.

An online store has to reconcile two opposing demands. A fast catalog means keeping pages cached, while accurate stock means rereading the data at every moment. We decided data by data. Object names, prices and photos are served from the cache and only refreshed when they change. Availability shown in listings has its own cache, so a sale refreshes only that, without slowing down the rest of the catalog. On an object’s page, stock is reread on every view, then checked twice at payment, and neither the cart nor the customer account ever goes through the cache.

This level of control isn’t available on a platform like Shopify, where caching stays in the vendor’s hands. Background tasks, such as sending emails or updating search, also run in a separate process, so they never slow down customers’ browsing.

Visitor 1

Visitor 2

Visitor 3

Cache

Names, prices and photos

Medusa

Stock, cart and payment

Tell us what you want to build.

cheaper than Shopify
66%
custom integrations
12

We trusted the studio with building our Maison Kameur ecommerce store, and it was the best decision we made.

Camille Dhorme & Leo Van Landuyt // Founders

Maison Kameur

Measuring traffic
without betraying trust.

The founders wanted to understand how visitors move through the store without putting their customers’ trust at risk. Analytics run on PostHog, hosted in Europe, and only become complete with the visitor’s consent. Without consent, they stay anonymous and set no cookies. With consent, they allow journey analysis, but session recording stays off on the checkout, payment and account pages. The founders edit the consent banner text from the admin, and every visitor’s choice is kept as proof.

Sales figures, for their part, are read directly from Medusa and never mix with browsing data, so the sales dashboard stays accurate whatever the consent rate.

Visitors

On the store

Browsing

Consent

Anonymous without it

PostHog

Hosted in Europe

Purchases

Medusa

Every order

Sales

Always accurate

A module released as open source.

Customer sign-in, built for Maison Kameur, is now listed in the official Medusa plugin directory.

  • authentication · better-auth · medusa-plugin

    medusa-plugin-better-auth

    Medusa plugin that brings in Better Auth for modern, flexible authentication.

    npm i @nualt/medusa-plugin-better-auth
  • github/nualt

    All our public repositories, MIT-licensed and free for anyone to use.

    github.com/nualt

Hosting
sized to the store.

The store runs on a dedicated server, protected by Cloudflare, which also serves photos close to visitors and takes that much load off the server. This choice keeps costs in check over time, since hosting comes in 66% cheaper than Shopify, while leaving the headroom needed to grow. All three databases are backed up daily, with thirty copies kept, and a restore has already been tested.

Network

Cloudflare

Protection and photos

Dedicated server

Next.js

Frontend

Medusa

Server

Medusa

Worker

Payload

Content

PostgreSQL

Three databases

Redis

Cache and jobs

Backups

Cloudflare

Storage

All three databases daily, thirty copies kept, a restore already tested.

Medusa’s worker handles background tasks, such as emails and search updates, apart from browsing.

A neo-brutalist
identity.

We also designed the store’s visual identity, in a neo-brutalist direction. The site owns its visible construction, with hard borders, sharp unblurred shadows, bold tight typography and photos shown without artifice, on matte paper backgrounds that recall a printed workshop catalog. This stance suits handmade objects, whose directness it shares. Anything purely decorative was left out, so every element on screen carries real information and the objects stay in the foreground. The system fits in seven colors and runs through the entire journey, down to emails and checkout.

maisonkameur.fr
The store catalog, with hard borders and sharp shadows
maisonkameur.fr
The checkout in the store’s colors, with the cart summary

Trained founders,
self-sufficient owners.

Delivery came with two days of training. The founders can now manage their infrastructure themselves, backed by the documentation handed over with the code. The code belongs entirely to them, as do the hosting accounts, and no ecommerce platform takes a commission on their sales.

  1. Content

    Managing their content in Payload.

  2. Commerce

    Running their store in Medusa.

  3. Architecture

    Understanding how the pieces talk to each other, and why the cache and separate jobs exist.

  4. What’s next

    Knowing what would need to change if traffic grew.

A stack
the founders own.

Next.js, Medusa, Better Auth, Stripe, Payload and PostHog, on accounts in the store’s name.

Storefront

Next.js

The store’s website, with caching tuned data by data.

Commerce

Medusa

Catalog, pricing, inventory, carts and orders.

Authentication

Better Auth

Customer sign-in, including Google, released as open source.

Payments

Stripe

Order payments.

Content

Payload

Artisan profiles and journal.

Analytics

PostHog

Analytics hosted in Europe, with consent.

Tell us what you want to build.