Lors de la mise en place de portails de documentation destinés aux développeurs modernes, un nombre croissant d'équipes d'ingénierie et de rédaction technique adoptent Mintlify. Plutôt que de maintenir des configurations complexes de routage frontend ou des feuilles de style CSS surchargées, Mintlify s'inscrit dans la démarche « Docs-as-Code ». L'ensemble de l'identité visuelle et de l'architecture de l'information est centralisé dans un fichier de configuration déclaratif unique situé à la racine du dépôt : docs.json (auparavant mint.json). Les équipes peuvent ainsi définir leur charte graphique, structurer des barres latérales multiniveaux et organiser des groupes d'onglets directement dans un fichier JSON versionné aux côtés de leurs contenus MDX.
Ce guide détaille la manière dont les équipes de documentation technique configurent leur identité visuelle, conçoivent des barres latérales hiérarchisées et mettent en place des onglets supérieurs pour structurer des plateformes documentaires d'envergure.
1. Architecture de configuration centrale : La spécification docs.json
Chaque site Mintlify est administré par le fichier docs.json situé à la racine du projet. La spécification actuelle regroupe les thèmes graphiques, l'arborescence de navigation, la console d'exploration d'API et les intégrations analytiques au sein d'une structure de données unifiée.
Validation de schéma et règles de résolution de fichiers
Pour activer l'autocomplétion, la vérification syntaxique en temps réel et l'aide contextuelle dans les éditeurs de code comme VS Code, il est fortement recommandé de déclarer le schéma officiel au sommet de docs.json :
{
"$schema": "https://mintlify.com/docs.json",
"name": "Portail Développeur Acme",
"theme": "maple"
}
Les conventions structurelles majeures de Mintlify sont les suivantes :
- Chemins de fichiers sans extension : Les chemins déclarés dans les listes de navigation sont relatifs à la racine du dépôt et omettent l'extension
.mdxou.md. Ainsi, la déclaration"pages": ["getting-started/quickstart"]pointe directement vers le fichier physiquegetting-started/quickstart.mdx. - Processus de collaboration Git : Les restructurations de navigation, l'ajout de nouveaux articles et les ajustements de couleurs sont gérés sous forme de code via des branches et des Pull Requests, facilitant la relecture par les pairs et le déploiement d'environnements de prévisualisation.
- Synchronisation avec l'éditeur web : Lorsque des rédacteurs réorganisent des pages par glisser-déposer dans l'éditeur cloud de Mintlify, la plateforme génère automatiquement des commits Git répercutés dans
docs.json.
2. Configuration de l'image de marque et de l'identité visuelle
Mintlify permet d'aligner le portail sur le design system de l'entreprise sans recourir à des surcharges CSS instables. Les paramètres de marque sont configurés au niveau racine de docs.json.
Thèmes de mise en page (Theme)
Mintlify met à disposition plusieurs moteurs de rendu préconçus via la propriété theme :
mint: La mise en page éprouvée, adaptée aux projets open source et aux logiciels généralistes.maple: Une esthétique moderne, épurée et très appréciée des outils d'IA et des plateformes SaaS.palm: Une structure dense et rigoureuse, idéale pour les fintechs et les architectures d'entreprise complexes.willow: Une présentation minimaliste axée sur une lecture fluide sans distraction.- Les autres thèmes disponibles incluent
linden,almond,aspen,sequoiaetluma.
Palette de couleurs et adaptation au mode sombre
L'objet colors définit les teintes principales de l'interface en garantissant un contraste adapté tant en mode clair qu'en mode sombre :
"colors": {
"primary": "#2563EB",
"light": "#60A5FA",
"dark": "#1D4ED8"
}
primary: Couleur centrale de la marque, appliquée aux liens, aux statuts actifs et aux boutons d'action majeurs en mode clair.light: Teinte d'accentuation utilisée en mode sombre pour préserver une excellente lisibilité sur fond noir ou gris foncé.dark: Teinte appliquée aux états de survol (hover) et aux éléments d'interaction secondaires dans les deux modes.
Logos bimodes et Favicon
Pour assurer une netteté irréprochable quel que soit le mode d'affichage, il convient de renseigner des fichiers vectoriels SVG distincts pour les fonds clairs et sombres, ainsi qu'une URL de redirection :
"logo": {
"light": "/images/logo-light.svg",
"dark": "/images/logo-dark.svg",
"href": "https://acme.com"
},
"favicon": "/images/favicon.svg"
Si logo.href n'est pas renseigné, un clic sur le logo redirige par défaut vers la page d'accueil de la documentation.
Typographie, bibliothèques d'icônes et fond de page
- Typographie : La propriété
fontspermet d'indiquer des polices Google Fonts par leur nom de famille (comme"Inter"ou"Fira Code"), qui sont chargées de manière asynchrone. Il est également possible d'intégrer des polices.woff2auto-hébergées et de dissocier les polices de titres (fonts.heading) de celles du corps de texte (fonts.body). - Icônes : Mintlify intègre nativement Font Awesome, Lucide et Tabler. En déclarant
"icons": { "library": "lucide" }, les entrées de navigation peuvent employer directement des noms d'icônes tels que"book-open"ou"terminal", tout en supportant les SVG personnalisés et les emojis. - Décoration d'arrière-plan : L'option
"background": { "decoration": "gradient" }ou"grid"insère des motifs graphiques subtils. - Verrouillage du mode d'affichage : Si la charte graphique impose un affichage exclusivement sombre, il est possible de spécifier
"appearance": { "default": "dark", "strict": true }, masquant ainsi le sélecteur de mode aux visiteurs.
3. Conception de la barre latérale : Groupes, imbrication et pages racines
La barre latérale est l'axe directeur qui guide le lecteur à travers les guides et documentations de référence. Dans Mintlify, sa structure est entièrement décrite dans l'objet navigation.
Groupes élémentaires et icônes
Un groupe réunit plusieurs pages sous un intitulé commun. Chaque groupe exige un nom group et une liste pages :
"navigation": {
"groups": [
{
"group": "Prise en main",
"icon": "rocket",
"pages": [
"quickstart",
"installation",
"authentication"
]
}
]
}
Imbrication hiérarchique et gestion du repli par défaut
À mesure que la documentation s'étoffe, les listes plates deviennent illisibles. Mintlify autorise l'imbrication de sous-groupes directement dans le tableau pages d'un groupe parent.
Pour préserver la clarté de la barre latérale, la propriété booléenne expanded détermine l'état d'ouverture initial :
{
"group": "Architecture centrale",
"icon": "cpu",
"pages": [
"architecture/overview",
{
"group": "Stockage des données",
"icon": "database",
"expanded": false,
"pages": [
"architecture/storage/relational",
"architecture/storage/caching"
]
},
{
"group": "Sécurité et conformité",
"icon": "shield-check",
"tag": "NEW",
"pages": [
"architecture/security/rbac",
"architecture/security/encryption"
]
}
]
}
Remarque : Les groupes de premier niveau restent constamment dépliés dans la barre latérale ; l'attribut expanded s'applique spécifiquement aux sous-groupes imbriqués.
Titres de groupes cliquables et pages racines (root)
Par défaut, cliquer sur le titre d'un groupe se contente d'ouvrir ou de fermer ses sous-éléments. Néanmoins, il est souvent souhaitable que le titre du groupe serve lui-même de page d'introduction générale.
La définition de la propriété root associe le titre du groupe à un document MDX précis :
{
"group": "Référence API",
"root": "api/overview",
"pages": [
"api/users",
"api/billing",
"api/webhooks"
]
}
Lorsqu'un lecteur clique sur « Référence API », le volet principal affiche immédiatement api/overview.mdx tout en dépliant les points de terminaison associés dans la barre latérale.
Sommaires automatiques de répertoires (directory)
Afin d'éviter la maintenance manuelle de listes de liens, Mintlify met à disposition la fonction directory pour les groupes dotés d'une page root. Le système injecte un index structuré sous le corps de la page racine.
Valeurs acceptées pour directory :
"card": Présente les pages sous forme de cartes horizontales cliquables affichant le titre et la description."accordion": Organise les sections dans des volets accordéon dépliables, idéal pour les catalogues d'API denses."none": Désactive l'affichage automatique (comportement par défaut).
Cette propriété se transmet par héritage aux niveaux inférieurs, permettant d'appliquer "directory": "card" globalement et de le désactiver localement via "directory": "none" sur certaines sous-sections techniques.
4. Découpage de portails multiproduits via les groupes d'onglets (Tabs)
Lorsqu'un portail technique réunit des guides conceptuels, une référence complète d'API, des SDK dans plusieurs langages et des notes de version, regrouper l'ensemble dans une seule barre latérale linéaire sature la navigation. Les groupes d'onglets (Tabs) en en-tête apportent un découpage horizontal qui clarifie les grands axes documentaires.
Onglets de navigation au niveau du site
Les onglets délimitent des sections opérationnelles distinctes. Chaque onglet possède son propre espace de routes et une arborescence de barre latérale dédiée.
Configuration dans navigation.tabs :
"navigation": {
"tabs": [
{
"tab": "Guides",
"icon": "book-open",
"groups": [
{
"group": "Fondamentaux",
"pages": ["guides/overview", "guides/quickstart"]
},
{
"group": "Déploiement",
"pages": ["guides/docker", "guides/kubernetes"]
}
]
},
{
"tab": "Référence API",
"icon": "square-terminal",
"groups": [
{
"group": "Endpoints",
"pages": ["api/v1/auth", "api/v1/payments", "api/v1/webhooks"]
}
]
},
{
"tab": "SDKs",
"icon": "code-2",
"groups": [
{
"group": "Clients officiels",
"pages": ["sdks/node", "sdks/python", "sdks/go"]
}
]
},
{
"tab": "Journal des modifications",
"icon": "megaphone",
"href": "https://changelog.acme.com"
}
]
}
Lorsque l'utilisateur navigue entre les onglets « Guides », « Référence API » et « SDKs » :
- La barre latérale commute instantanément pour ne présenter que les groupes et pages affiliés à l'onglet sélectionné.
- L'URL du navigateur intègre le segment de chemin correspondant.
- Les liens externes (renseignés avec
href) s'intègrent visuellement dans l'en-tête tout en ouvrant la ressource ciblée.
Menus déroulants au sein des onglets (menu)
Si un onglet principal englobe plusieurs produits indépendants, il est possible d'insérer une propriété menu pour proposer un menu déroulant dans l'en-tête :
{
"tab": "Produits",
"icon": "layers",
"menu": [
{
"item": "Moteur de Paiement",
"icon": "credit-card",
"description": "Intégration des flux d'encaissement et de règlement.",
"groups": [
{
"group": "Mise en route",
"pages": ["payments/intro", "payments/checkout"]
}
]
},
{
"item": "Gestion des Identités",
"icon": "key-round",
"description": "Normes SSO, SAML et synchronisation d'annuaires.",
"groups": [
{
"group": "Authentification",
"pages": ["identity/overview", "identity/saml"]
}
]
}
]
}
Ancrages globaux (Anchors) vs. Onglets
- Tabs (Onglets) : Utilisés pour segmenter les domaines documentaires majeurs, chaque sélection régénérant la totalité de la barre latérale.
- Global Anchors (Ancrages globaux) : Définis sous
navigation.global.anchors, ce sont des raccourcis utilitaires permanents (ex. « Statut du système », « Dépôt GitHub », « Communauté Discord ») visibles quelle que soit la page ou l'onglet consulté.
Distinction essentielle : Onglets de site vs. composants <Tabs> dans MDX
Il convient de ne pas confondre les onglets globaux avec les composants de contenu :
- Onglets globaux de site (
docs.json) : Pilotent le routage et le basculement structurel de la barre latérale. - Composants
<Tabs>dans les fichiers MDX : Utilisés au sein d'un article pour permuter des blocs d'exemples de code (par exemple basculer entre cURL, Python ou JavaScript). Par défaut, Mintlify synchronise automatiquement l'onglet actif sur tous les blocs de la page partageant les mêmes libellés, à moins de spécifiersync={false}.
5. Exemple complet prêt pour la production
Voici un fichier docs.json complet et directement déployable, intégrant l'identité visuelle, les ancrages globaux, plusieurs onglets, des sous-groupes hiérarchisés et un sommaire sous forme de cartes :
{
"$schema": "https://mintlify.com/docs.json",
"name": "Documentation CloudScale",
"theme": "maple",
"colors": {
"primary": "#059669",
"light": "#34D399",
"dark": "#047857"
},
"logo": {
"light": "/assets/brand/cloudscale-logo-light.svg",
"dark": "/assets/brand/cloudscale-logo-dark.svg",
"href": "https://cloudscale.dev"
},
"favicon": "/assets/brand/favicon.png",
"appearance": {
"default": "system",
"strict": false
},
"fonts": {
"family": "Inter"
},
"icons": {
"library": "lucide"
},
"background": {
"decoration": "gradient"
},
"navigation": {
"global": {
"anchors": [
{
"anchor": "État des services",
"icon": "activity",
"href": "https://status.cloudscale.dev"
},
{
"anchor": "Communauté Slack",
"icon": "messages-square",
"href": "https://cloudscale.dev/slack"
}
]
},
"tabs": [
{
"tab": "Guides Produits",
"icon": "book-open",
"groups": [
{
"group": "Vue d'ensemble et installation",
"root": "guides/index",
"directory": "card",
"pages": [
"guides/quickstart",
"guides/architecture",
"guides/cli-tooling"
]
},
{
"group": "Infrastructure",
"icon": "server",
"pages": [
"guides/compute-clusters",
{
"group": "Réseaux et DNS",
"expanded": false,
"pages": [
"guides/networking/vpc-peering",
"guides/networking/tls-certificates"
]
}
]
}
]
},
{
"tab": "Référence API",
"icon": "square-terminal",
"groups": [
{
"group": "Authentification",
"pages": [
"api/auth/tokens",
"api/auth/service-accounts"
]
},
{
"group": "API Compute",
"root": "api/compute/overview",
"pages": [
"api/compute/instances",
"api/compute/snapshots"
]
}
]
}
]
}
}
6. Bonnes pratiques de maintenance et prévention des erreurs
Pour assurer la stabilité et l'évolutivité de la documentation technique au sein d'une équipe en pleine croissance :
- Validation locale systématique avec la CLI : Avant de pousser vos commits sur le dépôt distant, exécutez
npx mintlify devsur votre machine. Le serveur local détecte instantanément les erreurs de syntaxe JSON, les fautes de frappe dans les chemins de fichiers et les pages manquantes. - Exactitude absolue des chemins de fichiers : Chaque entrée déclarée dans
"pages"doit correspondre scrupuleusement à un fichier existant. Si un document MDX est renommé (par exempleguides/intro.mdxenguides/overview.mdx), mettez impérativement à jourdocs.jsondans le même commit Git. - Vérification du contraste en mode sombre : Lors de la configuration de
colors.primary, ne négligez pas l'ajustement decolors.light. Un contraste insuffisant sur fond sombre nuit à la lisibilité et contrevient aux normes d'accessibilité WCAG AA. - Modération de la profondeur d'imbrication : Limitez la barre latérale à deux niveaux d'imbrication au maximum (groupe principal > sous-groupe > page). Une hiérarchie trop profonde génère des défilements horizontaux gênants sur mobile ; segmentez plutôt les sections volumineuses en onglets supérieurs (Tabs) ou en menus déroulants.