Hugo Colicchia Designer UI · Intégrateur Web

Recherche stage - janvier et février 2027

Univers des Massages

Le site d'une praticienne en massage bien-être, à reproduire sous WordPress avec le constructeur Divi et la boutique WooCommerce : quinze pages, un en-tête et un pied de page communs, seize massages détaillés en fiches, une offre à destination des entreprises, une boutique de cartes cadeaux et une réservation confiée à un service extérieur. C'est le projet le plus complet de ce portfolio - le seul qui soit un site entier plutôt qu'une page, et le seul où je devais restituer un site existant, en ligne, que je pouvais ouvrir à côté du mien pour comparer.

Le site reproduit ici appartient à Maria Margola et existe en production à l'adresse universdesmassages.fr. La maquette, les textes, les photographies et la marque sont les siens : mon travail est le montage sous WordPress, rien d'autre. Ma reproduction est hébergée sur mon propre domaine et porte une balise noindex : elle reste consultable, mais elle n'entre pas en concurrence avec le site de la praticienne dans les moteurs de recherche.

Rôle
Montage intégral du site sous WordPress, thème Divi et boutique WooCommerce
Livrable
15 pages, 3 gabarits Divi Theme Builder, 16 fiches de massage, 4 produits WooCommerce
Outils
WordPress, Divi 5.13.1, thème enfant, WooCommerce 11.1.1
Contexte
Projet de formation - Objectif 3W, septembre 2026
La page d'accueil du site Univers des Massages telle qu'elle s'ouvre : la barre de contact et le menu en haut, puis le titre en serif blanche posé sur une photographie de plein air et les deux boutons d'action.

Le brief

Reproduire un site existant, en ligne, sous WordPress avec Divi. Pas une maquette figée à interpréter : un site réel, que je pouvais ouvrir dans un onglet voisin, parcourir, redimensionner et inspecter à volonté. C'est une contrainte bien plus serrée qu'un fichier Figma, parce qu'il n'y a plus de zone grise - tout ce que le modèle fait, il le fait devant moi, et l'écart se voit.

Le site est celui de Maria Margola, praticienne en massage bien-être à Mauguio. Quinze pages à monter : l'accueil, une page de présentation, une page qui expose le déroulement d'une séance et distribue vers sept pages de massages, ces sept pages elles-mêmes, une offre à destination des entreprises, une page de contact, une boutique, et les deux pages légales. Trois blocs communs à tout le site - la barre de contact, l'en-tête et le pied de page - et une boutique à faire fonctionner.

C'est mon deuxième projet sous WordPress après Omnifood, et le premier qui soit un site plutôt qu'une page. Le saut n'est pas dans la difficulté d'un bloc isolé : il est dans le fait qu'à quinze pages, tout ce qui n'est pas mutualisé est à refaire neuf fois, et qu'une incohérence ne se voit plus sur un écran mais entre deux pages qu'on ne regarde jamais en même temps.

La question que je me suis posée : jusqu'où va la fidélité ? Reproduire un site, est-ce aussi reproduire ses défauts ?

Le modèle, et ce qui m'appartient

Autant l'écrire tout de suite et sans détour. Le design de ce site n'est pas de moi. La mise en page, les couleurs, la typographie, les textes, les photographies et le logo appartiennent à Maria Margola et à son site en production. Je n'ai rien conçu ici : j'ai reconstruit.

Ce qui m'appartient est le montage, et c'est tout ce que cette étude de cas commente. Le découpage en sections, lignes et colonnes ; les trois gabarits du Divi Theme Builder qui portent l'en-tête, le pied de page et le corps ; les réglages responsive de chaque module ; la configuration de WooCommerce et de ses quatre produits ; l'arborescence du menu et ses sous-entrées ; le thème enfant. Rien de visible, tout de structurel - c'est exactement le métier de l'intégrateur.

Cette distinction n'est pas une précaution de forme. Elle décide de ce qu'on peut me reprocher, et elle ne joue pas toujours en ma faveur. Les contrastes relevés plus bas viennent du modèle, et s'en écarter aurait été sortir de l'exercice. Les textes de remplacement des images, les niveaux de titre, l'ordre de lecture réel : eux ne relèvent que de moi. Rien dans le modèle ne les impose, et rien à l'écran ne les trahit - ce sont exactement les points qu'un montage au constructeur laisse passer, parce que le rendu paraît juste dans tous les cas.

Le site d'origine
universdesmassages.fr, en production. WordPress avec Divi 4.24.2, thème enfant dédié, WooCommerce 9.9.7, une extension de cartes cadeaux et une bannière de consentement. Son menu compte une quinzaine d'entrées - déroulement d'une séance, deep tissue, massage pour enfants, duo, quatre mains, offre entreprise - que ma reproduction reprend désormais toutes.
Ma reproduction
Divi 5.13.1, thème enfant, WooCommerce 11.1.1, sans extension tierce. Quinze pages et seize fiches de massage : le périmètre couvre aujourd'hui l'essentiel du site d'origine, offre entreprise comprise. Les versions ne se recouvrent pas pour autant - Divi 5 a réécrit son constructeur, et plusieurs réglages ne se trouvent plus au même endroit que dans les tutoriels écrits pour Divi 4.

Ce que je ne dis pas

Que reproduire vaille concevoir. Ce n'est pas le cas, et un exercice de reproduction ne prouve rien sur ma capacité à trancher une direction artistique - il prouve que je sais lire une page et la remonter à l'identique, ce qui est une autre compétence.

Ce qu'il prouve en revanche, et que je n'obtenais sur aucun des quatre autres projets : que je sais tenir un site entier cohérent. Quinze pages, un en-tête partagé, une boutique branchée dessus, et un menu à deux niveaux - huit entrées sous la seule rubrique Massages - qui doit fonctionner sur toutes les pages y compris celles de WooCommerce que je n'ai pas dessinées. C'est le premier projet du portfolio où le livrable n'est pas une page mais un ensemble.

Cible et contexte d'usage

Le site s'adresse à quelqu'un qui a mal quelque part, ou qui veut offrir un moment à quelqu'un d'autre. Deux intentions très différentes, et le site les traite séparément dès le premier écran : les deux boutons du hero sont « Prendre rendez-vous » et « Offrir un bon cadeau ». C'est la décision la plus nette du modèle, et elle se tient - il n'y a pas de parcours unique à optimiser, il y en a deux.

Le reste de la page d'accueil sert la confiance plutôt que la conversion. Une praticienne qu'on va laisser poser les mains sur soi, ce n'est pas un abonnement qu'on résilie d'un clic : la page consacre son plus long bloc de texte à expliquer ce qu'on va ressentir, et renvoie vers une page « Qui suis-je » entièrement biographique, où Maria Margola raconte son parcours depuis la Pologne. Sur un site de service à la personne, cette page-là est le vrai argument commercial.

La conséquence pour le montage est concrète et je l'ai suivie : la prise de rendez-vous ne passe pas par le site. Le bouton ouvre Resalib, une plateforme de réservation extérieure qui gère l'agenda réel de la praticienne. Le site ne prétend pas savoir quand elle est disponible - il passe la main à l'outil qui le sait. Seules les cartes cadeaux, dont la disponibilité ne dépend de rien, restent en vente sur place.

Je n'ai mené ni entretiens ni tests : le site d'origine était le point de départ imposé. Ce que je décris ici est une lecture argumentée de ses intentions, pas une recherche utilisateur.

Lecture du modèle

Avant de poser la première section, j'ai relevé ce que le modèle répète et ce qu'il traite au cas par cas. Sur quinze pages, ce relevé décide de tout : ce qui se répète devient un gabarit monté une fois, ce qui ne se répète pas est réglé page par page. Se tromper de côté coûte soit neuf fois le même travail, soit un gabarit qu'il faut ensuite contourner partout.

Ce que le modèle fixe

  • Deux familles typographiques aux rôles nettement séparés. Marcellus, une serif à empattements fins, pour tous les titres d'affichage - jusqu'à 96 pixels sur le hero. Lato, une linéale neutre, pour absolument tout le reste. Aucun titre en Lato, aucun paragraphe en Marcellus : la règle ne souffre pas d'exception, ce qui la rend facile à tenir sur quinze pages.
  • Un rose poudré unique pour toutes les actions, décliné en un rose très pâle qui sert de fond à la barre de contact et à une section sur deux. C'est ce rose pâle, et non le blanc, qui donne son unité au site.
  • Un même bloc de bas de page sur presque toutes les pages : le rappel « Prendre rendez-vous » suivi du bouton de contact. Il revient à l'identique sur l'accueil, sur « Qui suis-je » et sur les pages de massages - un gabarit, pas un copier-coller.
  • Une structure de fiche identique pour la plupart des seize massages présentés : le texte d'histoire et trois encadrés - zones ciblées, méthodes utilisées, bienfaits - dans la colonne de gauche, la photographie et le tableau des tarifs dans celle de droite. Le même moule répété, avec seulement le contenu qui change.

Ce qu'il ne dit pas

  • Rien sur les contrastes. Le rose des boutons est joli et parfaitement raccord avec les photographies ; il ne passe aucun seuil d'accessibilité. Le modèle ne pose pas la question, et Divi ne la pose pas non plus.
  • Rien sur les états de focus. Aucun parcours au clavier n'est dessiné nulle part, ni sur les boutons, ni dans le menu déroulant, ni sur le formulaire de contact.
  • Rien sur les textes de remplacement des images. C'est le silence qui m'a coûté le plus cher : un silence ne se voit pas, donc on ne le reproduit pas - on l'oublie.
  • Rien sur le poids des médias. Le modèle sert ses photographies en PNG, et j'ai fait pareil sans me poser la question - c'est en mesurant la page que j'ai vu ce que ça coûtait.

Structure et découpage

Le point structurant du projet n'est pas dans une page, il est dans le Divi Theme Builder. Trois gabarits y sont montés une fois et s'appliquent à tout le site : la barre de contact et l'en-tête dans le gabarit d'en-tête, le bloc de coordonnées et les liens légaux dans le gabarit de pied de page, et un gabarit de corps qui cadre le contenu. Les quinze pages n'ont plus à porter que ce qui leur est propre.

C'est l'équivalent, dans une interface, de ce que la correction d'Omnifood obtenait avec trois classes utilitaires dans un fichier general.css chargé avant le reste : sortir le commun du particulier. La différence est que Divi le range dans une base de données au lieu d'un fichier, ce qui a une conséquence pratique immédiate - aucun Ctrl+F ne permet de savoir où un réglage a été posé. Sur quinze pages, c'est la principale difficulté du projet.

À l'intérieur de ce cadre, la page d'accueil compte 8 sections, 14 lignes et 74 modules, pour 425 nœuds dans le document final. Les sept pages de massages, elles, reposent sur un seul motif répété : le bloc de fiche décrit plus haut, dupliqué autant de fois qu'il y a de massages dans la famille. Une fois le premier réglé, les suivants sont des copies dont je ne change que le texte.

Schéma de l'architecture du site : les trois gabarits du Theme Builder en haut, les quinze pages en dessous regroupées par rubrique, et les liens vers la boutique WooCommerce et le service de réservation extérieur.
L'architecture relevée. Les trois gabarits du Theme Builder sont montés une fois et couvrent les quinze pages ; la boutique apporte ses propres gabarits WooCommerce que je n'ai pas dessinés mais qui héritent de l'en-tête et du pied de page ; la réservation sort du site. Les deux lignes de massages sont séparées à dessein : les quatre premières pages tiennent le moule de fiche, les trois dernières s'en écartent. C'est le premier projet du portfolio où le schéma décrit un site et non une page.

La boutique

C'est la partie du projet que je n'avais jamais faite, et celle qui apprend le plus. WooCommerce n'est pas un module de plus dans Divi : c'est une extension qui ajoute ses propres pages, ses propres gabarits et son propre vocabulaire au site. Installer WooCommerce crée d'un coup une boutique, un panier, une page de commande et un espace client, avant même qu'un seul produit existe.

Quatre produits sont créés - deux durées de carte cadeau, en formule standard et en formule Deep Tissue, de 75 à 120 euros. La boutique les affiche en grille : visuel, libellé, prix, et un lien vers la fiche. Les forfaits fidélité affichés juste en dessous ne sont volontairement pas des produits : ils renvoient vers le formulaire de contact, parce qu'un forfait de cinq séances se négocie de vive voix et n'a pas à passer par un panier.

Ce dernier point est la décision de montage dont je suis le plus satisfait, et c'est celle du modèle que j'ai comprise en la reproduisant. Deux blocs voisins, graphiquement jumeaux, dont l'un mène à un paiement et l'autre à une conversation. Rien dans l'apparence ne les distingue ; c'est le libellé du bouton qui porte toute la différence, et il est écrit en clair : « Me contacter ».

La page Boutique : les quatre cartes cadeaux affichées en grille avec leur prix, et en dessous les forfaits fidélité dont les boutons portent la mention « Me contacter ».
La boutique et ses deux registres. En haut, quatre produits WooCommerce avec leur prix. En bas, quatre forfaits qui leur ressemblent trait pour trait mais n'en sont pas : leur bouton ouvre le formulaire de contact. Rien dans l'apparence ne les sépare - c'est le libellé du bouton qui porte toute la différence.

Direction artistique

La direction est intégralement celle du site d'origine ; je ne l'ai pas choisie, je l'ai relevée. Les valeurs ci-dessous sont mesurées dans le rendu de ma reproduction, où elles vivent dans les réglages du thème Divi plutôt que dans un fichier CSS qu'on pourrait ouvrir.

Palette

  • Rose poudré

    #F59B90

    Boutons principaux et titres de section

  • Rose pâle

    #FEF2F0

    Barre de contact et fond de section

  • Taupe

    #A87E72

    Bouton secondaire, bon cadeau

  • Anthracite

    #43484E

    Titres courants

  • Gris

    #696D71

    Texte courant

Typographie

Titres
Marcellus, une serif à empattements fins et à fort contraste de graisse. 96 pixels sur le titre du hero, 48 sur les titres de section. Une seule graisse : la famille n'en propose qu'une, ce qui interdit de hiérarchiser autrement que par la taille et la couleur.
Texte courant
Lato, corps de 14 pixels. Le contraste du gris #696D71 sur blanc est de 5,22:1, au-dessus du seuil AA - c'est la seule couleur de texte du site qui passe.

Le résultat

Les captures ci-dessous sont celles de ma reproduction.

Section « Les Massages » : trois cartes côte à côte, une par famille de massage, chacune avec son pictogramme, son titre, sa description et son bouton « En savoir + ».
Les trois familles de massages. C'est le seul bloc de l'accueil qui distribue vers d'autres pages - et il n'en distribue que trois, alors que le menu en propose huit depuis que j'ai complété le site. L'accueil est resté en arrière du reste : les cartes sont réglées une fois puis dupliquées, encore fallait-il penser à en ajouter.
La fiche du massage californien : à gauche le texte de présentation et trois encadrés intitulés zones ciblées, méthodes utilisées et bienfaits ; à droite une photographie de massage et le tableau des tarifs à deux durées, surmontant le bouton de prise de rendez-vous.
Une fiche de massage - le moule de la rubrique Massages, tenu sur onze des seize fiches. Le tarif et le bouton de rendez-vous tombent toujours au même endroit, en haut à droite : quelle que soit la longueur du texte, on sait où regarder pour trouver le prix. Une fois la première fiche réglée, les suivantes sont des copies dont seul le contenu change - ce qui rend l'écart d'autant plus visible quand une page s'en affranchit.
Le site en largeur mobile, côte à côte : à gauche le hero avec le menu fermé et son icône à trois barres, à droite le menu déroulé, avec les huit entrées de la rubrique Massages indentées sous leur entrée mère.
Les deux états du menu en petit écran. À droite, les huit entrées de la rubrique Massages apparaissent en retrait sous leur entrée mère : c'est le seul endroit du site où le menu descend d'un niveau, et il doit tenir sur les quinze pages, y compris celles que WooCommerce a créées. C'est aussi là que se mesure l'écart avec l'accueil, qui n'en annonce toujours que trois. Ce menu n'est pas de moi - c'est celui de Divi, et il fonctionne en JavaScript. Le comparer à la case à cocher masquée que j'écris moi-même sur Japan. et Symbolicons est ce qui m'a fait mesurer le vrai prix d'un constructeur : vingt-deux fichiers JavaScript sur l'accueil, contre zéro sur les pages que je code.

Quatre décisions de montage

Contrairement à l'étude de cas Omnifood, où je commentais les décisions d'un autre, celles-ci sont les miennes - non pas des décisions de design, que le modèle imposait, mais des décisions de montage, qui ne se voient pas à l'écran et qui décident pourtant de ce que devient le site après moi.

Trois gabarits plutôt que quinze en-têtes

L'en-tête, le pied de page et le cadre du corps sont montés dans le Theme Builder, pas dans les pages. Le coût est réel : on ne voit plus ces blocs en éditant une page, et il faut se souvenir qu'ils existent ailleurs. Le gain l'est aussi - changer le numéro de téléphone de la praticienne se fait à un seul endroit pour les quinze pages, y compris celles que WooCommerce a créées toutes seules et que je n'ai jamais ouvertes.

Un thème enfant dès le départ

Divi se met à jour, et une mise à jour écrase le thème. Tout ce qui est surcharge vit donc dans un thème enfant, y compris quand l'interface aurait permis de faire autrement. C'est la seule protection contre le scénario qui rend un site invendable : une mise à jour appliquée un mardi matin qui efface six semaines de réglages.

La réservation laissée dehors

Le bouton le plus important du site sort du site : il ouvre Resalib, qui tient l'agenda réel. J'aurais pu monter un formulaire de demande de rendez-vous et paraître plus complet. Ç'aurait été un faux service - il aurait accepté des créneaux déjà pris, et créé du travail au lieu d'en enlever. Un site n'a pas à absorber ce qu'un outil spécialisé fait mieux que lui.

Les forfaits ne sont pas des produits

Les cartes cadeaux sont des produits WooCommerce, payables en ligne. Les forfaits fidélité, qui leur ressemblent trait pour trait, sont de simples blocs dont le bouton mène au formulaire de contact. La frontière entre les deux ne passe pas par l'apparence mais par la nature de la transaction, et c'est le libellé du bouton - et lui seul - qui la dit au visiteur.

Bilan

Ce que j'ai appris

  • Un site n'est pas une page multipliée. Ce qui change à quinze pages, ce n'est pas la quantité de travail, c'est la nature du problème : il faut décider très tôt de ce qui est commun, parce que ce qui n'est pas mutualisé au départ ne le sera jamais.
  • Déplacer le site de l'hébergement de la formation vers le mien m'a appris ce qu'un WordPress traîne avec lui : la base contient l'adresse absolue de chaque image, de chaque lien interne et de chaque réglage. Changer de domaine revient à réécrire des milliers de chaînes sans casser les données sérialisées - et les quelques liens tapés à la main dans une page échappent encore au remplacement automatique.
  • Le site a grossi après coup - il est passé de dix à quinze pages, et de dix à seize massages. C'est ce qui a validé les gabarits : les cinq pages ajoutées ont hérité de l'en-tête, du pied de page et du menu sans que j'y touche. C'est aussi ce qui a révélé ce que les gabarits ne tiennent pas, et qui figure juste à côté.
  • Le Theme Builder est le vrai outil de Divi, et le reste n'est qu'un éditeur de page. C'est la notion que je n'avais pas saisie sur Omnifood, où une page unique ne donnait aucune raison de s'en servir.
  • Monter une boutique, c'est accepter des pages qu'on n'a pas dessinées. Panier, commande, compte client : WooCommerce les crée et les tient, et mon travail consiste à ce qu'elles héritent correctement de l'en-tête et du pied de page plutôt qu'à les redessiner.
  • Reproduire un site oblige à un genre d'attention qu'une maquette ne demande pas : le modèle est consultable en permanence, donc chaque approximation est vérifiable. C'est inconfortable, et c'est formateur.
  • Reproduire fidèlement, ce n'est pas reproduire aveuglément. J'ai gardé les contrastes du modèle parce que l'exercice était de le restituer ; j'aurais dû relever l'écart dès le montage au lieu de le découvrir en mesurant pour écrire cette page.

Axes d'amélioration

  • Le contraste du bouton principal est très insuffisant : du blanc sur le rose #F59B90 donne 2,11:1, là où le niveau AA en demande 4,5. Le bouton secondaire est à 3,56:1, et les titres de section en rose sur blanc au même 2,11:1 - un échec jusqu'au seuil assoupli des grands textes. Ces valeurs sont celles du modèle, pas les miennes : le rose est la couleur de la marque, et l'exercice demandait de restituer le site, pas de le redessiner. C'est en revanche le premier point que je porterais à la praticienne s'il s'agissait d'un vrai chantier - assombrir le rose des boutons suffirait à passer le seuil sans toucher à l'identité.
  • Deux photographies sont encore servies en PNG, 558 et 450 Ko, là où le JPEG diviserait leur poids. L'accueil pèse 4,1 Mo, et les images en sont l'essentiel.
  • Le moule des fiches n'est pas tenu sur les pages ajoutées en dernier : Deep Tissue présente trois massages mais un seul encadré « zones ciblées », Duo et quatre mains n'en ont aucun. Le gabarit existait pourtant. Rien dans l'interface ne signale qu'on vient de s'en écarter - c'est au montage de s'en souvenir, et je ne m'en suis pas souvenu.
  • L'accueil charge 22 fichiers JavaScript et 9 feuilles de style, pour 36 requêtes au total. C'est le prix du constructeur, et il est à comparer aux zéro fichier JavaScript des trois projets que j'intègre à la main.
  • Le corps de texte est réglé à 14 pixels, en dessous des 16 pixels qui sont la taille de lecture par défaut des navigateurs. Sur les longs textes du site - et la page « Qui suis-je » en est un - c'est le réglage qui fatigue le plus vite.

Si je reprenais ce projet en conception

Deux choses m'ont gêné en montant le site. La première : les seize fiches de massage présentent le même tableau - zones ciblées, méthodes, bienfaits - sans qu'on puisse jamais les comparer entre elles. Quelqu'un qui a mal au dos doit ouvrir sept pages et retenir ce qu'il a lu. Le même contenu rangé une fois en comparatif répondrait à la question réelle du visiteur, qui n'est pas « qu'est-ce que le massage suédois » mais « lequel est fait pour moi ».

La seconde : la page d'accueil annonce toujours « 3 groupes de massages » et n'affiche que trois cartes, alors que le menu en propose huit depuis que j'ai complété le site. La contradiction est interne à ma propre reproduction, et elle est de mon fait : un visiteur qui entre par l'accueil ne voit pas les deux tiers de ce qui est proposé. Au-delà du décompte, l'entrée par famille technique demande de toute façon au visiteur de traduire une douleur en catégorie professionnelle avant de pouvoir avancer. J'entrerais par le besoin - soulager une douleur, se détendre, récupérer après le sport - et je laisserais les noms de massages en second rideau.