YEM’S
A shoe house in Cotonou, with an online shop built around how people actually buy there.
Yem's sells shoes and leather goods in Benin and Côte d'Ivoire. I designed and built the whole site: identity, copy, catalogue, a bespoke configurator, an ordering flow that takes no payment upfront, and an admin screen for the atelier.
Catalogue, product pages with colour galleries, cart and checkout.
Monogram, palette, type and a written voice charter.
Six choices, a live price, recomputed on the server.
Order workflow and catalogue edits without a rebuild.
01Problem
A new brand, no reviews, and no card payments yet.
Yem's is a young house with its own atelier in Cotonou and a curated line of shoes chosen elsewhere. The site had to sell to a man who cares how he looks at work, in a market where most people pay on delivery or by Mobile Money, and before the business had a merchant account.
It also had to earn trust without inventing it: no fake testimonials, no photos of pieces that don't exist yet.
02Approach
Order now, pay later. Price on the server.
- No payment at checkout. The order is saved, the atelier is notified on WhatsApp and calls the customer back. Payment happens on delivery or by Mobile Money. Bespoke pieces need a 50% deposit, because the leather is bought first.
- The cart says what, never how much. Every price is recalculated on the server from the catalogue, so a tampered cart can't change an amount.
- Honesty as positioning. Pieces that can't be photographed yet sit behind an announcement page instead of empty cards. Early fake reviews were replaced by « Personne ne nous a encore recommandés » and three ways to check the atelier yourself.
- Online payment ready, but off. Card and Mobile Money payment through KkiaPay is implemented and verified server-side, and stays switched off until a merchant account exists.
03Build
No framework, one source of truth.
The catalogue lives in a single JSON file. A Python generator writes 23 static pages from it: product pages, categories, sitemap and structured data. A Cloudflare Worker handles orders, the admin API and live catalogue edits, which are applied to the pages at the edge without a rebuild.
- Bespoke configurator: shape, leather, thread, sole, size and initials, with an itemised price that updates live
- Admin for the atelier: order statuses, WhatsApp links, catalogue overrides and data anonymisation
- Responsive images (WebP,
srcset), non-blocking fonts and immutable caching - Accessibility: skip link, visible focus, reduced motion, and a contrast checker that runs through the CSS cascade
- A security pass: content security policy, CSRF and brute-force protection, data minimisation
04Technologies
The stack.
- Front end
- Hand-written HTML, CSS and vanilla JavaScript
- Generator
- Python, standard library only
- Server
- Cloudflare Workers with static assets
- Database
- PostgreSQL through Cloudflare Hyperdrive
- Integrations
- WhatsApp Cloud API, KkiaPay (implemented, switched off)
05Real outcome
What exists today.
The site is live at maisonyems.com: a complete, documented e-commerce site with 23 generated pages, a working configurator, an ordering flow, an admin, legal pages, and a step-by-step deployment guide written for the owner.
What this page doesn't claim. There are no visit, order or revenue figures here: the site deliberately runs no analytics, and online payment is not switched on yet. Product visuals on the shop are AI-generated and labelled as such on the site.
06Visuals
Screens from the actual site.



A similar project?
Let’s talk about it.
An online shop, a redesign or a new e-commerce idea: I'm open to collaborations and new challenges.
Work together