Étude de cas · Site vitrine

Une péniche à Paris, un site qui ne se contredit plus.

Un lieu événementiel sur la Seine annonçait deux capacités, deux surfaces, et sa page contact renvoyait une erreur. Refonte complète, pensée pour une seule chose : la demande de devis.

Livré en préproduction, octobre 2026
accueil
Accueil du nouveau site : photo de la péniche à quai au coucher du soleil, titre « Une péniche privatisable à Paris, avec piscine et toit-terrasse » et bouton de devis
L'accueil sur mobile, bouton de devis toujours visible dans l'en-tête
Captures anonymisées
22pages généréesaccueil, offres, tarifs, blog…
36anciennes adresses redirigéesaucun lien Google perdu
5ambiances de couleurscontraste AA vérifié au build
0dépendance à installerPython et sa bibliothèque standard
Le contexte

Un bon lieu, un site qui le desservait.

La péniche se privatise pour des mariages, des soirées d'entreprise et des fêtes privées. Son ancien site, construit sur un éditeur en ligne, donnait 200 personnes sur une page et 300 sur une autre, deux surfaces différentes pour le toit-terrasse, et sa page contact renvoyait une erreur serveur. Le lien vers les conditions générales, présent sur toutes les pages, menait à une page introuvable.

Avant d'écrire une ligne, j'ai relevé chaque chiffre contradictoire avec la page où il apparaissait, puis posé la question au client. Rien n'a été comblé par un chiffre « plausible » : une valeur non validée restait signalée comme telle jusqu'à la réponse du client.

Ce qui a changé

Un site cohérent, rapide et facile à faire évoluer.

Une capacité différente selon la pageUne seule valeur, validée par le client, écrite une fois
Page contact en erreur, conditions générales introuvablesChaque ancienne adresse redirigée vers la bonne page
Textes mêlés au code de l'éditeurContenu dans des fichiers simples, pages regénérées en une commande
Une seule ambiance, contraste non vérifiéCinq ambiances, contraste contrôlé à chaque génération
Comment ça marche

Du relevé de l'ancien site à la mise en ligne.

  1. 1RelevéL'ancien site est passé au crible : chiffres, pages en erreur, adresses indexées par Google.
  2. 2ContenuChaque page devient un fichier de blocs : espaces, tarifs, déroulé, FAQ, formulaire de devis.
  3. 3GénérationUne commande produit le HTML, les images WebP et le plan du site. Elle s'arrête au moindre défaut.
  4. 4ContrôlesUne centaine de vérifications, puis des tests dans un vrai navigateur, sur sept largeurs d'écran.
  5. 5Mise en ligneLe dossier généré est servi tel quel par le serveur, redirections comprises.
À l'écran

Les espaces, les ambiances, les prix.

nos espaces
Page des espaces : salle cocktail et restaurant, surface, capacité et équipements, avec trois photos
Chaque espace avec sa surface, sa capacité et ses photos.
ambiances
Sélecteur d'ambiances ouvert sur l'accueil : Nuit sur Seine, Guinguette chic, Bord de piscine, Club de nuit, Clair et sobre
Le visiteur choisit son ambiance ; les photos ne changent pas.
tarifs
Grille des formules de privatisation : soirée ou journée, prix et espaces compris
La grille tarifaire, lue depuis un seul fichier de données.
Les choix qui comptent

Mieux vaut un build qui s'arrête qu'un défaut en ligne.

Le build refuse les défauts

Une couleur sous 4,5:1 de contraste, une image manquante, une page de plus de 900 Ko : la génération s'arrête et dit pourquoi. Un défaut connu ne peut pas atteindre le site public.

Le chiffre est écrit une fois

Capacités, surfaces, tarifs et horaires vivent dans un seul fichier, repris par toutes les pages. Le jour où le client change un prix, il n'existe qu'un endroit à modifier.

La vidéo ne pénalise personne

La vidéo d'en-tête n'est chargée ni sur mobile, ni en économie de données, ni si le visiteur limite les animations. La photo s'affiche d'abord, et un bouton pause est toujours présent.

StackPython 3HTML & CSSJavaScript sans frameworkImages WebPJSON-LDNginxCoolifyTests navigateur

Votre site se contredit ? Remettons tout à plat.