Tigmi · Artisanat et décoration d'intérieur — vente en ligne

Tigmi — a trilingual online shop for one-of-a-kind pieces

An online shop for craft and interior décor: catalogue, cart, payment, stock, promotions, zone-based shipping, reviews, a blog and an admin area. Three languages, Arabic right-to-left included, with translated rather than merely prefixed URLs.

Page d'accueil de Tigmi : « Ce qui est fait à la main se voit », artisanat et décoration d'intérieur

The problem

Selling craft online raises a problem mass-produced goods do not have: each piece is unique, or nearly so. A knotted rug exists in a single copy, its dimensions do not come in sizes, and running out of stock is not a restock but a disappearance. Add a clientele that does not read the same language — French, English, Arabic — and Arabic takes more than translation: it flips the entire layout.\n\nThen there is what you cannot see: the price. In a shop it is computed from the product, a possible promotion, shipping that depends on the zone, a free-delivery threshold and a VAT regime. Each rule is simple; their combination is what produces billing errors.

What we built

**The charged price is always recomputed server-side.** The request carries only choices — address, carrier, payment method — while price, discount, shipping and tax come from a single service. A test verifies that an amount injected into the form is simply ignored. It is the least visible guarantee in a shop, and the only one that stops people helping themselves.\n\n**URLs are translated, not prefixed.** Slugs live in a table with a unique index on locale and slug: a URL resolves in one indexed query, which a JSON column cannot do. Old slugs keep resolving and return a 301 to the current one, preserving rankings when a product is renamed. Arabic slugs keep their characters rather than being transliterated.\n\n**Ten entities share two admin screens.** Categories, workshops, articles, pages, FAQ, carousel, testimonials, carriers and zones go through a generic CRUD where one declaration describes columns and fields; multilingual validation and slugs follow. Less code to maintain, and identical behaviour everywhere.\n\n**Payment callbacks are verified then logged under a uniqueness constraint**: a webhook replayed by the provider produces neither a double charge nor a double event. And under the French VAT exemption regime, no tax line appears — prices are shown net, as the law requires.

The outcome

A complete shop in three languages, from catalogue to order tracking, with an admin area covering ten entities through two screens. Search optimisation is in place from the first release: translated URLs, permanent redirects on old slugs, structured data and declared language equivalences.
Accueil : « Ce qui est fait à la main se voit », navigation par matière, recherche, favoris et panier
Catégorie « Poterie & céramique » : filtres par disponibilité, prix, atelier et matière, et tri des résultats
Fiche produit : atelier, référence, avis, état du stock, ajout au panier et mention de la pièce faite main
Tableau de bord du commerçant : chiffre d'affaires sur trente jours, panier moyen, commandes à traiter et stock faible
Liste des commandes en administration : recherche, filtres par statut et par date, statut de paiement et export CSV

Other projects

Your project deserves better than a generic quote

Tell us what you want to achieve. We reply with an analysis, a range, and the questions nobody else asked you.

Reply within 4 business hours · No commitment · Your data stays with us