La boutique en ligne kohler.ch repose entiĂšrement sur une architecture headless. À savoir que le storefront (la couche de prĂ©sentation) est sĂ©parĂ© du backend (la couche de donnĂ©es), afin que ces applications puissent ĂȘtre dĂ©veloppĂ©es et gĂ©rĂ©es sĂ©parĂ©ment.

Venture au centre de l'Ă©cosystĂšme e-commerce

Le coeur e-commerce de la boutique en ligne de HANS KOHLER SA est conçu avec Vendure, une plateforme d’e-commerce headless open source dĂ©veloppĂ©e sur le framework NestJS. Vendure fournit tout ce qu’il faut pour archiver et gĂ©rer une base de produits et de client·e·s, pour dĂ©finir un processus de paiement, pour la gestion et le traitement des commandes, et bien plus encore.

Vendure est conçu en vue de dĂ©finir uniquement les concepts de base d’une boutique en ligne, comme la mise Ă  disposition de modĂšles pour les produits et les collections, la gestion des paniers et des prix, ainsi que la dĂ©finition du processus de commande par dĂ©faut. Tout peut ĂȘtre Ă©tendu ou personnalisĂ© en fonction des besoins du projet concernĂ©. Cette approche permet essentiellement aux dĂ©veloppeur·euse·s de ne pas s’arracher les cheveux avec le framework quand ils ont Ă  mettre en Ɠuvre les exigences commerciales spĂ©cifiques d’une boutique en ligne.

Vendure fournit d’emblĂ©e la plupart des fonctionnalitĂ©s nĂ©cessaires pour concevoir une boutique en ligne Ă©lĂ©mentaire. Mais comme chacun sait, les entreprises ont toujours dans leurs processus commerciaux au moins une spĂ©cificitĂ© qui diffĂšre complĂštement des autres boutiques. Par exemple, une Ă©tape supplĂ©mentaire de vĂ©rification du·de la client·e, une mĂ©thode de calcul de prix ou une logique de promotion. Ce qu’il y a de bien avec Vendure, c’est que si la fonctionnalitĂ© n’est pas prĂ©vue dans le cƓur ou dans l’un des nombreux plugins, on a toujours la possibilitĂ© d’implĂ©menter une fonctionnalitĂ© entiĂšrement personnalisĂ©e sur le framework trĂšs solide et avancĂ© NestJS, et de l'intĂ©grer dans la boutique.

Ce que nous avons conçu

Pour te donner une idée de ce que Vendure permet de concevoir, voici quelques-unes des nombreuses personnalisations que nous avons réalisées pour la boutique en ligne de HANS KOHLER SA:

  • PossibilitĂ© de demander un devis pour un panier donnĂ© avec un processus de paiement simplifiĂ©
  • Logique de tarification personnalisĂ©e avec des rĂ©ductions pour volume, sachant que le volume est calculĂ© en fonction de diffĂ©rentes unitĂ©s selon le produit. Cette logique permet par ailleurs d’appliquer des tarifs spĂ©cifiques pour certain·e·s client·e·s ou certains groupes de client·e·s.
  • Logique de promotion complexe avec des remises pour volume spĂ©cifiques au·à la client·e sur des groupes de produits du mĂȘme type et avec des promotions qui doivent ĂȘtre appliquĂ©es sur la base d’autres promotions.
  • PossibilitĂ© d’ajouter au panier des produits disponibles Ă  la dĂ©coupe (comme des tubes) via un configurateur spĂ©cialisĂ© dans le frontend, avec un systĂšme de prix spĂ©cifique pour les dĂ©coupes.
  • Synchronisation automatique de produits, prix, client·e·s et commandes avec le systĂšme ERP basĂ© sur Microsoft Dynamics 365 utilisĂ© par HANS KOHLER SA.
  • IntĂ©gration de Payrexx pour le paiement Ă©lectronique.
  • Frais de livraison spĂ©cifiques Ă  chaque commande selon l’adresse et le mode de livraison sĂ©lectionnĂ©s.
  • Flux de paiement personnalisĂ© qui permet aux client·e·s d’ajouter des souhaits particuliers de livraison pour la commande pendant le paiement (p. ex. recevoir une notification par tĂ©lĂ©phone dĂšs que la livraison arrive)

Le CMS

Encore une fois, Vendure propose uniquement les fonctionnalitĂ©s basiques utilisĂ©es dans un projet d’e-commerce. Il n’y a donc pas de fonctionnalitĂ©s de CMS incluses. Pour rĂ©pondre Ă  cette exigence, nous utilisons DatoCMS afin de crĂ©er et d’éditer le contenu nĂ©cessaire pour la boutique en ligne, par exemple les pages ou les articles de blog.

DatoCMS est un headless CMS qui fonctionne en tant que solution SaaS. Tout le contenu crĂ©Ă© dans le backend est accessible via une API GraphQL. Comme nous voulions mĂ©langer des donnĂ©es du CMS dans Vendure et vice-versa (p ex. sĂ©lectionner une personne de contact dĂ©finie dans DatoCMS pour un produit dĂ©fini dans Vendure), nous avons proxifiĂ© tous les endpoints API nĂ©cessaires de DatoCMS vers des endpoints GraphQL personnalisĂ©s du cĂŽtĂ© de Vendure. Ce mĂ©canisme nous a permis de rĂ©soudre directement le contenu requis de DatoCMS dans la rĂ©ponse de Vendure. Le frontend n’a donc besoin d’effectuer qu’une seule requĂȘte pour obtenir toutes les donnĂ©es nĂ©cessaires afin de restituer la page actuelle. RĂ©sultat : les client·e·s profitent de dĂ©lais de rĂ©ponse plus courts.

Comme la boutique en ligne est multilingue, il Ă©tait impĂ©ratif que le contenu puisse ĂȘtre traduit facilement. Pour y parvenir, nous utilisons un plugin qui crĂ©e automatiquement une version traduite d’une page ou d’un article de blog donnĂ©(e) sur la base de Deepl Translate. L’éditeur·rice dispose ainsi d’une premiĂšre mouture pour procĂ©der Ă  la traduction.

The frontend

Nous avons conçu le frontend avec Svelte and SvelteKit pour le rendu cĂŽtĂ© serveur (https://svelte.dev). La boutique en ligne HANS KOHLER SA est de loin l’application la plus avancĂ©e que nous ayons dĂ©veloppĂ©e jusqu’à prĂ©sent avec cette stack. Et autant dire que nous n’avons pas regrettĂ© notre choix. Jamais durant le projet, nous n’avons Ă©tĂ© confronté·e·s au problĂšme de ne pas pouvoir rĂ©pondre Ă  une exigence spĂ©cifique en raison d’une limitation du framework. Avec les autres frameworks comme Vue ou React, cela nous arrive toujours Ă  un moment ou Ă  un autre.

Pour ce qui est du design visuel, nous utilisons Tailwind CSS. Et pour les requĂȘtes Ă  l’API GraphQL, nous nous servons de Houdini qui, comme son nom l’indique, rĂ©alise de vrais tours de magie avec les API GraphQL. Pour toutes les requĂȘtes et mutations dĂ©finies, il gĂ©nĂšre des magasins Svelte dont l’état est actualisĂ© chaque fois qu’un changement intervient dans les donnĂ©es qu’ils contiennent. Et ce, mĂȘme si le changement survient dans une autre mutation. Tout ce que l’on effectue avec l’API GraphQL fait l’objet d’une vĂ©rification de type par rapport au schĂ©ma de l’endpoint. Cela signifie, par exemple, qu’il est impossible d’utiliser un champ particulier dans le modĂšle s’il doit encore ĂȘtre sĂ©lectionnĂ© dans la requĂȘte, ou de l’utiliser avec le mauvais type. Avec Houdini et SvelteKit, notre application est entiĂšrement sĂ©curisĂ©e. Il est ainsi peu probable, voire improbable, qu’une dĂ©faillance survienne pendant l’exĂ©cution.


Dans l’ensemble, nous sommes vraiment trĂšs satisfait·e·s du choix de notre architecture. Vendure a constituĂ© une base solide et fiable pour rĂ©pondre aux spĂ©cificitĂ©s de cette boutique. Avec DatoCMS, nous avons pu crĂ©er rapidement et facilement un systĂšme qui permet aux Ă©diteur·rice·s de publier toutes les informations relatives aux produits de HANS KOHLER AG. Enfin, grĂące Ă  Svelte et SvelteKit, nous avons pu dĂ©velopper une application frontend avancĂ©e qui reste simple Ă  gĂ©rer et qui permet de concevoir facilement de nouvelles fonctionnalitĂ©s.