moto-verdict
Un guide d’achat de motos pour les motards francophones. Aujourd’hui, c’est un site éditorial statique, un CMS adossé à git et un pipeline de contenu qui rédige des brouillons d’articles à partir de flux d’actualités et vérifie chaque chiffre avant qu’un humain ne les lise. Le parcours guidé autour duquel le produit est pensé n’est pas encore écrit.
Dépôt privé
01Ce que c’est
L’objectif est d’aider un motard à trouver la moto qui lui convient, en croisant catégorie de permis, morphologie, usage réel et goûts, puis de rendre une courte liste classée avec les raisons de ce classement. Les articles amènent les lecteurs. Le parcours guidé et son API de recommandation sont spécifiés mais pas construits. Ce qui existe, c’est la partie éditoriale, et c’est celle sur laquelle j’ai commencé.
02Ce que j’ai construit
Un site public et un panneau d’administration, tous deux en React et Vite sur Cloudflare Pages, qui partagent un même système de design dont j’ai extrait les tokens du fichier Figma. Un pipeline de contenu en TypeScript qui lit des flux, écarte les doublons, classe les éléments, assemble un brief, rédige l’article section par section et ouvre une pull request pour un relecteur. Decap CMS s’appuie sur cette pull request : le relecteur peut relire, demander une réécriture ou approuver. L’infrastructure est déclarée dans le dépôt : workflows, unités systemd, DNS et scripts d’installation de l’hôte.
03Comment ça tourne
Rien n’arrive sur le site sans une fusion humaine, et cette fusion est le seul déclencheur d’un déploiement. Le site est construit à partir des articles du dépôt : le lecteur reçoit des pages statiques, et une panne du VPS ne l’interrompt pas. Le pipeline tourne sur un VPS, sous des timers systemd, avec son état dans PostgreSQL. Le modèle est appelé via la CLI Codex, dans un sous-processus verrouillé : bac à sable en lecture seule, aucune configuration utilisateur, pas de recherche web pendant la rédaction. Les changements suivent un flux feature, dev, main qu’un job de CI fait respecter.
04Ce que j’ai appris
Le modèle ne choisit jamais une moto et ne fournit jamais un chiffre. Les chiffres sont extraits par du code vers une liste blanche avant la rédaction, et un contrôle déterministe qui comprend le format numérique français rejette tout chiffre hors de cette liste. J’ai aussi mesuré que la similarité des titres ne sépare pas un doublon d’un autre sujet sur la même moto : j’ai donc fixé le seuil de doublon haut, en acceptant que quelques doublons arrivent jusqu’au relecteur. Un doublon manqué coûte un clic. Une fusion à tort fait disparaître un sujet sans bruit.
Comment c’est construit
- Un lecteur ouvre le site
- Un article approuvé est mis en ligne
- Un élément de flux devient une pull request brouillon
- État du pipeline en base
- Appels de classification et de rédaction
Personnes
Qui l’utilise
Cloudflare
Hébergement statique
GitHub
Source de vérité
VPS
Pipeline de contenu
Entrées externes
Flux et modèle
Sélectionnez un élément du schéma pour voir son rôle. Chaque couleur est un flux à travers le système.