Projets de documentation

Étude de cas · Ingénierie documentaire

Système de design pour la documentation de Recurly

J’ai conçu des pages d’accueil, des composants de guide réutilisables et des flux de rédaction pour cinq portails documentaires Recurly sur ReadMe. Les styles et scripts partagés ont donné aux rédacteurs une structure cohérente, tout en maintenant la révision humaine dans le processus de publication.

Auteur
Christian Arango
Rôle
Rédacteur technique et ingénieur documentaire
Site en ligne
docs.recurly.com
Capture
Site public, 13 octobre 2026
Le système de design des guides en contexte, sur la page Create a pop-up de Recurly Engage.Voir la page source

Le problème

Une couche documentaire partagée pour cinq produits

Recurly exploite des portails ReadMe distincts pour Subscriptions, Commerce, Engage, RevRec et Recover. Il leur fallait des modèles d’interface et de rédaction communs, construits dans une plateforme hébergée.

  • 57 classes de composants rp-*

  • 586 blocs de règles CSS, dont 43 pour l’interface ReadMe

  • 141/146 pages de guide Engage sur le système

  • 20/21 pages de guide Recover sur le système

Le système

Des composants réutilisables pour une structure cohérente

Les rédacteurs utilisent des composants rp-* en MDX et les styles partagés en contrôlent l’apparence : un changement de design se fait une seule fois, dans le thème.

Adoption dans Recurly Engage

Pages de guide utilisant chaque composant, sur 146

En-tête de pagerp-page
141
Liens de sectionrp-toc
133
Bénéfices clésrp-benefits
127
Définitionrp-definition
125
Listes de prérequisrp-list
104
Étapes numérotéesrp-steps
94
Calloutsrp-callout
50
Tableaux aux couleurs de la marquetable
49
Cartes de navigationrp-nav-grid
20
Cartes de contenurp-card
12

Le même système dans les autres portails : 20 pages Recover sur 21 et 163 pages Subscriptions sur les 165 échantillonnées. Comptage effectué dans le MDX publié.

Voir les sept parties de chaque page de guide
  1. Aperçu rp-overview

    Deux à quatre phrases sur le contenu de la page.

  2. Forfait rp-plan

    Qui peut utiliser la fonctionnalité, avec un libellé fixe par forfait afin d’exprimer la disponibilité de façon uniforme.

  3. Callout rp-callout

    Quatre variantes — note, conseil, important et avertissement — avec leur propre icône et leur propre couleur.

  4. Liens de section rp-toc

    Des liens numérotés vers chaque section de premier niveau, générés à partir des titres.

  5. Liste de prérequis rp-list

    Sous un titre Prerequisites ou Limitations.

  6. Définition rp-definition

    Une explication simple de ce dont il s’agit et de sa raison d’être, distincte de l’aperçu.

  7. Bénéfices clés rp-benefits

    Trois ou cinq éléments s’ajustent automatiquement ; exactement quatre passent dans une grille 2 × 2.

Le lecteur retrouve le même rythme sur chaque page : de quoi il s’agit, qui peut l’utiliser, où accéder directement, puis les détails. Les rédacteurs disposent de modèles réutilisables pour chaque partie du guide. Les mêmes tokens restylent aussi la navigation, les onglets de code et l’API playground de ReadMe.

Voir comment les pages d’accueil orientent les lecteurs

Le portail global dirige les lecteurs vers la documentation de chaque produit à partir d’un seul bloc HTML et d’une feuille de style limitée à celui-ci. Chaque accueil produit emploie le même vocabulaire visuel, adapté aux parcours de ses lecteurs.

  • Carte de lancement à la une

    Un espace pleine largeur pour le produit le plus récent : colonne de contenu, panneau du logo et badge « New » dont le battement s’arrête lorsque prefers-reduced-motion est activé.

  • Grille de produits 2 × 2

    Des cartes uniformes avec bandeau visuel, étiquette, titre, description et rangée d’appel à l’action. Au survol, la carte monte, la bordure se teinte et la flèche avance.

  • Adaptatif dès la conception

    Breakpoints à 768, 480 et 375 px. La carte mise en avant s’empile, la grille passe à une colonne et la taille des caractères diminue par étapes.

  • Robuste face à la plateforme hôte

    Protection contre les débordements, min-width: 0 sur les enfants flex et resets explicites pour éviter que le thème ReadMe injecte ses soulignements ou ses largeurs.

  • Recherche native derrière une interface sur mesure

    La barre de recherche du hero ouvre la recherche native de ReadMe. Ce point d’entrée aux couleurs de la marque conserve le comportement existant de la plateforme.

  • Un vocabulaire par accueil produit

    Chaque accueil réutilise le même bloc de surtitre, titre et description, avec une navigation rapide et des cartes adaptées aux tâches des lecteurs de ce produit.

Voir les scripts qui résistent aux changements de page de ReadMe

ReadMe effectue le rendu avec React et remplace les pages côté client : un script exécuté une seule fois au chargement cesse donc de fonctionner au clic suivant. Les modules se rattachent après chaque changement de page et évitent de créer des handlers en double lorsqu’ils se réinitialisent.

changelog-nav.jsjs
// Capture phase: runs before ReadMe's
// own React click handlers
window.addEventListener("click", handleClick, true);

// Child-list changes only, so this script's
// own class/href writes can't loop back
state.observer = new MutationObserver(handleRouteCheck);
state.observer.observe(document.body, {
  childList: true, subtree: true,
});

// ReadMe updates URL, article, and active
// classes in separate render passes
[50, 150, 400, 900].forEach((ms) =>
  setTimeout(queueApply, ms));
Extrait de la couche comportementale publiée.
  • Redirection de la navigation Changelog

    Fait pointer l’onglet Changelog natif de chaque portail vers une page personnalisée et maintient l’onglet actif sur toutes les routes : navigation SPA, rechargements, précédent/suivant et menu mobile.

  • Pastille « Link copied » sur les titres

    Un clic sur un titre copie son lien profond. Une pastille monte puis disparaît — avec un double requestAnimationFrame pour garantir la transition — et se rattache après chaque changement de page.

  • Carrousel en boucle

    Utilise deux clones de chaque côté, un état actif, les touches fléchées, un positionnement adapté au redimensionnement et une réinitialisation après navigation.

  • Recherche du hero et zoom d’image

    La barre du hero ouvre la recherche native de ReadMe avec des sondages bornés jusqu’à ce que la cible existe. Un zoom léger suit le curseur sur les grandes captures.

  • Uniquement des hooks stables

    Cible les classes rm- et les libellés ARIA de ReadMe, jamais les noms hachés de modules CSS qui changent à chaque déploiement.

  • Idempotent par construction

    Une clé globale munie de destroy() démonte l’instance précédente si le script est chargé deux fois.

  • Respect de l’intention du lecteur

    Les clics avec Cmd/Ctrl/Shift et le bouton central gardent leur comportement natif, l’URL corrigée étant déjà en place.

Rédaction assistée par IA

Transformer les brouillons en MDX avec une révision humaine

J’ai encodé le système de design, les standards éditoriaux et les contraintes connues du renderer dans un skill Claude. Connecté à ReadMe, il a aussi reconstruit des pages existantes par lots.

  1. Étape 0

    Détecter le type de document

    General, Exports, Payment Gateways, Commerce, Engage ou API Guide.

  2. Étape 1

    Une seule série de questions

    Les manques, comme le forfait ou une URL, en une fois.

  3. Étape 2

    Générer

    Voix, terminologie et modèles de composants appliqués.

  4. Sortie

    Réviser et publier

    Je vérifie le rendu de la page avant publication.

  • 135/146 pages Engage mises à jour pour la dernière fois entre septembre et octobre 2026, quand le portail est passé au système

    ReadMe updatedAt, relevé sur chaque page publiée

Voir comment fonctionnait la boucle de migration

J’ai connecté Claude à ReadMe pour lire, restructurer et mettre à jour les pages existantes par lots. La boucle a conservé le slug et la position de chaque page dans la barre latérale ; j’ai vérifié le rendu et réintégré les corrections dans le skill.

  1. Lire

    Récupérer la page en ligne

    Claude lit le contenu actuel dans ReadMe par l’intermédiaire du connecteur.

  2. Transformer

    Exécuter le skill

    La page est reconstruite avec le système rp-* ainsi que la voix et la structure éditoriales.

  3. Écrire

    Mettre à jour dans ReadMe

    Le nouveau MDX revient sur la même page, qui conserve son slug et sa place dans la barre latérale.

  4. Réviser

    Contrôle humain

    Je vérifie le rendu, corrige ce que le renderer interprète différemment et réintègre les enseignements dans le skill.

  • Cohérence à grande échelle

    Chaque page reçoit le même bloc d’en-tête, le même ordre de sections et les mêmes composants, une cohérence difficile à maintenir manuellement sur des centaines de pages.

  • Un skill qui progresse à chaque révision

    Chaque erreur de rendu relevée pendant la vérification devient une règle du skill, afin que le lot suivant ne la répète pas.

  • Les rédacteurs gardent la main

    L’automatisation propose ; une personne approuve. Rien n’est publié sans vérification du rendu.

Voir les garde-fous du renderer et un extrait de MDX publié
popular-uses.mdmdx
<div class="rp-page">
  <div class="rp-overview">Recurly Engage supports a variety of
    proven engagement patterns ...</div>
  <div class="rp-plan"><i class="fa-solid fa-key" aria-hidden="true"></i>
    Available to all customers on any Recurly Engage subscription plan</div>
  <div class="rp-toc">
    <a class="rp-toc-pill" href="#definition"><span class="rp-toc-num">1</span>Definition</a>
    <a class="rp-toc-pill" href="#key-benefits"><span class="rp-toc-num">2</span>Key benefits</a>
  </div>
</div>

### Prerequisites

<ul class="rp-list">
  <li>You must have <strong>Company</strong>, <strong>App Administrator</strong>,
  or <strong>App Member</strong> permissions in Recurly Engage.</li>
</ul>
Bloc d’en-tête publié sur une page Recurly Engage, tel que ReadMe le sert.
  • Aucune ligne vide dans un div

    Le parser MDX de ReadMe quitte le contexte HTML lorsqu’il rencontre une ligne vide et affiche la suite comme du code brut.

  • Les placeholders {curly} deviennent ALL_CAPS

    Un seul {site_id} est évalué comme JSX et bloque toute la page.

  • CodeTabs, pas Tabs, pour le code

    Des blocs consécutifs sans ligne vide sont rendus comme un seul bloc multilingue.

  • Ne jamais inventer ni modifier le code

    Le code douteux reçoit un TODO pour révision par les développeurs, plutôt qu’une correction silencieuse.

Ce qui a été publié

Un système de composants, plusieurs tâches de lecture

Recurly Engage

Le portail que j’ai le plus amélioré. Plus de trente pages partenaires partagent un modèle, si bien que configuration, champs et dépannage sont toujours au même endroit.

Recurly Recover

Le dernier lancement auquel j’ai participé, construit sur le système finalisé avec une page d’accueil pensée pour les développeurs.

Résultats professionnels

Résultats de mon rôle élargi chez Recurly

Chiffres issus de l’ensemble de mon travail chez Recurly entre 2023 et 2026, pas du seul système de composants.

  • 45 % de tickets de support en moins, grâce à un audit de l’API confronté aux retours réels du support, à l’automatisation déclenchée par les releases et à des visuels plus clairs

  • 56→92 % de satisfaction déclarée après la consolidation de la documentation de trois produits dans un seul portail ReadMe Enterprise

  • 2025 Technology Impact Award remis par le CTO de Recurly

Vérifié