Skip to content
10Étude de casSW · 10 sur 10

Quand la plateforme ne parle pas votre métier, vous écrivez les modules qui le font.

Une marque de musique sommeil-et-bien-être vendait des morceaux numériques et des supports physiques depuis un seul catalogue. PrestaShop générique ne savait pas ce qu'était une coupure d'extrait, qui était un auteur, ni à quoi ressemblait une page d'accueil éditable par le marketing. Cinq modules plus tard, il le savait.

ClientConfidentiel
Année2018 — 2019
Durée2 yrs
StackPHP · Symfony · MySQL
Hero image for sleep-music-d2c-storefrontFig 01 · Hero

Un catalogue que PrestaShop ne savait pas modéliser.

Un label de musique sommeil-et-bien-être exploite un catalogue hybride : de l'audio numérique — paysages sonores pour le sommeil, séances de méditation, compositions originales — aux côtés de supports physiques et d'accessoires de marque. L'expérience client se joue sur une interaction : puis-je entendre assez d'un morceau pour décider de l'acheter, puis l'ajouter à un panier aux côtés du pressage vinyle, et passer commande en un seul flux ?

PrestaShop 1.7 prêt à l'emploi ne modélisait rien de tout cela. Il connaissait les produits et les prix. Il ne connaissait pas les pistes audio avec des coupures d'extrait configurables. Il ne connaissait pas les compositeurs et les narrateurs comme entités de contenu à part entière. Il ne savait pas que l'équipe marketing avait besoin de réagencer la page d'accueil un mardi sans ouvrir un éditeur de code.

Le brief était direct : construisez la surface e-commerce qui colle à ce métier, pas le métier qui colle à la plateforme.

Cinq modules qui ont rendu PrestaShop fluide dans le domaine.

Nous avons étendu PrestaShop 1.7.4 — PHP 5.6, Symfony 3.4, Doctrine, MySQL, Smarty — avec cinq modules sur mesure, un thème personnalisé et des modèles de factures PDF aux couleurs de la marque. Aucun des modules n'a été repris du marketplace. Les cinq ont été écrits de zéro pour coller à la forme spécifique du domaine.

Le module de lecteur de musique donnait à chaque produit numérique une identité jouable : métadonnées de piste, durée complète, une coupure d'extrait configurable définie par piste par l'artiste, et un lecteur intégré navigable. L'artiste décide de combien d'audio joue avant le paiement. Cette décision est une règle métier ; elle vit dans le modèle de données, pas dans des bidouilles JavaScript contre le modèle de produit par défaut.

Le module de profil d'auteur faisait des compositeurs et des narrateurs des entités à part entière, avec leurs propres pages de profil, biographies et discographies. Une piste connaît son auteur. Une page d'auteur liste ses pistes. La relation est interrogeable et gérable depuis le panneau d'administration.

Le module de constructeur de page d'accueil donnait à l'équipe marketing une surface structurée — blocs d'en-tête, bannières, CTA — qu'elle pouvait modifier sans toucher au thème. Le module de blocs-produits gérait des vitrines de page d'accueil organisées par catégorie. Le module de conditions donnait au service juridique une surface en libre-service pour la gestion des CGV. Combiné au flux d'une seule page de SuperCheckout et à l'intégration de paiement régional CM-CIC, le paiement captait l'e-mail au point de vente et se réglait chez le prestataire régional du client sans passerelle de paiement sur mesure.

Des modèles de factures PDF sur mesure — 877 lignes, aux couleurs de la marque — géraient les reçus côté serveur. Le client reçoit un reçu qui ressemble à la marque chez laquelle il vient d'acheter.

F · 01Module de lecteur de musique
Métadonnées de piste, durée, coupure d'extrait configurable, et un lecteur intégré navigable. L'artiste fixe combien d'audio joue avant le paiement ; cette règle vit dans le modèle de données.
F · 02Module de profil d'auteur
Compositeurs et narrateurs comme entités d'administration à part entière, avec pages de profil, biographies et discographies. Les pistes renvoient aux auteurs ; les pages d'auteur listent les pistes.
F · 03Module de constructeur de page d'accueil
Blocs d'en-tête, bannières et CTA structurés que l'équipe marketing modifie depuis le panneau d'administration — sans accès au thème, sans ingénieur d'astreinte.
F · 04Module de blocs-produits
Vitrines de produits de page d'accueil organisées par catégorie. L'opérateur décide de ce qui apparaît en page d'accueil sans toucher au modèle.
F · 05Paiement une page + paiement régional
Le flux d'une seule page de SuperCheckout avec le traitement de paiement régional CM-CIC et la capture d'e-mail Mailchimp au point de vente. Numérique et physique dans un seul panier, un seul paiement.
F · 06Factures PDF aux couleurs de la marque
Génération de factures côté serveur — 877 lignes de modèles sur mesure. Des reçus qui ressemblent à la marque chez laquelle le client vient d'acheter.

Étendez la plateforme ; ne la réécrivez pas.

La tentation, sur un projet comme celui-ci, est de conclure que la plateforme a tort et de tout recommencer. PrestaShop ne sait pas ce qu'est une coupure d'extrait — alors basculez vers une application Symfony sur mesure, lorgnez vers une stack headless, plaidez pour une plateforme entièrement différente.

Rien de tout cela n'était justifié. Le système de modules de PrestaShop existe précisément pour ça. La plateforme gère la gestion du catalogue, le traitement des commandes, l'inventaire, la TVA, le multidevise et une décennie de cas limites de l'e-commerce qu'il n'est pas intéressant de réécrire. Le manque, c'était la modélisation du domaine — métadonnées audio, entités auteur, une page d'accueil éditable — et ce manque était exactement de la bonne taille pour cinq modules.

N'étendez une plateforme que là où son vocabulaire est faux. Partout où il est juste, laissez-la faire le travail.

Quatre mois, de novembre 2018 à mars 2019, 356 commits. La portée des extensions a été calibrée face à ce que la plateforme gérait déjà bien. Les modules sont isolés et bien délimités. Le reste, c'est PrestaShop. Cette contrainte est une discipline autant qu'une décision : si vous n'étendez que là où l'ajustement est réellement mauvais, le système dont hérite l'ingénieur suivant reste lisible.

Une plateforme qui parlait la langue de la marque.

La vitrine a été livrée avec un catalogue que l'opérateur pouvait gérer, un paiement qui traitait le numérique et le physique en un seul flux, et une page d'accueil que l'équipe marketing pouvait modifier sans ticket de support.

La plateforme savait ce qu'était une piste audio. Elle savait ce qu'était un auteur. Elle savait qu'un extrait jouait pendant une fenêtre configurable puis demandait une décision d'achat. Ce ne sont pas des fonctionnalités boulonnées sur le côté d'une vitrine générique — c'est le modèle du domaine, exprimé en code et exposé dans le panneau d'administration.

356 commits, 4 mois, 5 modules sur mesure. L'opérateur a lancé dans les temps et a géré le catalogue dès le premier jour sans support d'ingénierie.

Citation / 04
On a enfin eu l'impression que c'était notre boutique, pas une boutique PrestaShop avec notre logo dessus.
FondateurMarque bien-être D2C
Outcome
Custom modules shipped
5
Time to launch
4 months
Commits
356
Invoice template (lines)
877
NEXTÉtude de cas 11SW · 11 sur 10
Wellness tourism2018 — 2025

Sept ans sur la même base de code : une plateforme e-commerce sur mesure pour un opérateur de retraites bien-être.