YEM’S
A shoe house in Cotonou, and an online shop made for how people 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 workshop.
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.
And it had to earn people's trust without faking anything: no made-up reviews, no photos of shoes that hadn't been made 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.
- Being upfront. 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
Built by hand, from one catalogue file.
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 I can't show you. I don't have visit or sales figures to share: the site runs no analytics, on purpose, and online payment isn't switched on yet. The product photos on the shop are AI-generated, and the site says so.
06Visuals
Screens from the actual site.



Thinking about an online shop?
Let’s talk.
Whether you're starting from nothing or redoing a site you already have, I'm happy to look at it with you.
Work together