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.