ADR: Choix de la stack pour la couche Contenu (Vitrine, Blog, Portfolio et Documentation)
- Statut : Accepté
- Date : 2026-09-01
- Auteur : AMN
1. Contexte et Problématique
Section titled â1. Contexte et ProblĂ©matiqueâLâarchitecture globale de notre site web est structurĂ©e en trois couches distinctes :
- Couche 01 : Contenu (Gestion et stockage des données)
- Couche 02 : Présentation (Front-end et rendu utilisateur)
- Couche 03 : Backend (Logique métier et services tiers)
Pour la Couche 01 (Contenu), nous devons sélectionner les technologies adaptées pour stocker, structurer et distribuer le contenu de quatre sections aux besoins éditoriaux trÚs différents :
- Vitrine : Pages marketing nécessitant une structure de mise en page flexible.
- Blog : Articles chronologiques nécessitant une édition de texte riche et une gestion des médias.
- Portfolio : Projets et réalisations nécessitant des schémas de données structurés et liés.
- Documentation : Pages techniques volumineuses, nécessitant un versionnage rigoureux et une structure hiérarchique stricte.
Lâobjectif est de maximiser lâautonomie des contributeurs pour le marketing tout en conservant une approche performante et robuste pour la documentation technique.
2. Décision Architecturale
Section titled â2. DĂ©cision ArchitecturaleâNous dĂ©cidons de sĂ©parer la couche contenu en deux outils spĂ©cialisĂ©s selon la nature des donnĂ©es :
- Sanity.io (CMS Headless SaaS) pour la gestion du contenu dynamique et marketing : Vitrine, Blog, et Portfolio.
- Astro Starlight (Fichiers locaux Markdown/MDX) pour la gestion du contenu technique : Documentation.
3. Justification du choix
Section titled â3. Justification du choixâ3.1. Pourquoi Sanity.io (Vitrine, Blog, Portfolio) ?
Section titled â3.1. Pourquoi Sanity.io (Vitrine, Blog, Portfolio) ?â- FlexibilitĂ© des SchĂ©mas (Content Lake) : Sanity stocke le contenu sous forme de documents JSON non structurĂ©s. Cela permet de modĂ©liser facilement les relations complexes du Portfolio et les structures modulaires nĂ©cessaires aux pages de la Vitrine.
- Interface de saisie sur mesure (Sanity Studio) : Le studio est entiĂšrement configurable en code (TypeScript/JavaScript), ce qui permet de crĂ©er une interface dâĂ©dition Ă©purĂ©e et adaptĂ©e aux Ă©quipes non techniques.
- Intégration Astro native : Sanity propose une intégration officielle avec Astro (
@sanity/astro), facilitant la rĂ©cupĂ©ration des donnĂ©es via lâAPI GROQ ou GraphQL lors de la phase de gĂ©nĂ©ration statique (SSG). - ZĂ©ro maintenance infrastructure : En tant que solution SaaS, Sanity Ă©limine le besoin de gĂ©rer une base de donnĂ©es ou un serveur dâadministration pour le contenu marketing.
3.2. Pourquoi Astro Starlight (Documentation) ?
Section titled â3.2. Pourquoi Astro Starlight (Documentation) ?â- Approche âDocs-as-Codeâ : La documentation est stockĂ©e localement au format Markdown/MDX. Elle suit le mĂȘme cycle de vie que le code source de lâapplication (commits, pull requests, revues de code, et versionnage via Git).
- Performance et fonctionnalitĂ©s natives : Starlight fournit nativement la recherche globale, la navigation hiĂ©rarchique, la gestion multilingue et les composants UI spĂ©cifiques aux documentations techniques sans aucun coĂ»t de requĂȘte dâAPI externe au build.
- Isolation des responsabilitĂ©s : Les modifications de la documentation technique ne dĂ©pendent pas de la disponibilitĂ© dâun CMS tiers.
4. Conséquences de la décision
Section titled â4. ConsĂ©quences de la dĂ©cisionâEffets Positifs (Avantages)
Section titled âEffets Positifs (Avantages)â- Performance maximale au build : Le contenu de la documentation est lu localement. Le contenu de Sanity est requĂȘtĂ© une seule fois lors de la phase de gĂ©nĂ©ration du site par Astro.
- ExpĂ©rience Ă©ditoriale optimisĂ©e : Les Ă©quipes marketing utilisent une interface graphique moderne (Sanity), tandis que lâĂ©quipe technique rĂ©dige la documentation directement dans son IDE (Markdown).
- Ăconomie de coĂ»ts : Lâutilisation de Starlight rĂ©duit le volume de donnĂ©es stockĂ© sur Sanity, permettant de rester durablement dans le forfait gratuit (Generous Free Tier) de Sanity.
Effets Négatifs (Inconvénients & Risques)
Section titled âEffets NĂ©gatifs (InconvĂ©nients & Risques)â- DualitĂ© des sources de vĂ©ritĂ© : Le contenu du site est scindĂ© en deux emplacements (lâAPI de Sanity et le dĂ©pĂŽt Git local). LâĂ©quipe technique devra sâassurer de la cohĂ©rence visuelle globale lors de la phase de prĂ©sentation (Couche 02).
- Processus de publication asynchrone :
- Pour la documentation, une publication nécessite un commit et un déploiement Git.
- Pour le CMS, un dĂ©clenchement de webhook de build (ex: Netlify, Vercel) est requis lors de la publication dâun article pour rafraĂźchir le site.
- Externalisation des mĂ©dias : Les fichiers mĂ©dias (images, vidĂ©os, documents) ne sont plus stockĂ©s dans Sanity. Ils sont hĂ©bergĂ©s sur Cloudflare R2 (et Cloudflare Stream pour les vidĂ©os). Sanity ne conserve que les mĂ©tadonnĂ©es et les URLs. Cette dĂ©cision renforce le contrĂŽle des coĂ»ts et lâalignement avec lâĂ©cosystĂšme Cloudflare (Couche 03), mais implique une gestion dâupload et de nettoyage dĂ©diĂ©e.
5. Alternatives Exclues
Section titled â5. Alternatives Excluesâ- Tout sur Sanity (y compris la documentation) : Exclu car la gestion dâune arborescence de documentation complexe et technique est moins intuitive dans un CMS traditionnel que dans un outil dĂ©diĂ© comme Starlight. De plus, cela aurait augmentĂ© inutilement la consommation des quotas dâAPI de Sanity.
- Tout en fichiers locaux Markdown (y compris Blog/Vitrine) : Exclu car cela aurait bloquĂ© lâautonomie des Ă©quipes non techniques pour la modification de la vitrine et du blog (obligation de passer par des fichiers de code et Git).