[Nom de la Collection de Contenu]
Type de ressource : Astro Content Collection (Markdown/MDX)
Fichier source :src/content/[collection-name]/ousrc/content/config.ts
Statut : [Actif / Déprécié / En développement]
1. Vue dâensemble
Section titled â1. Vue dâensembleâ1.1. Description
Section titled â1.1. Descriptionâ[Description concise de cette collection de contenu et son rĂŽle dans lâarchitecture du site]
1.2. Objectif
Section titled â1.2. Objectifâ- [Objectif principal : ex. fournir une documentation technique pour les dĂ©veloppeurs]
- [BĂ©nĂ©fice pour lâutilisateur final]
1.3. PérimÚtre concerné
Section titled â1.3. PĂ©rimĂštre concernĂ©â- Type de contenu : [Documentation technique / Blog / Portfolio / Pages statiques]
- Format : [Markdown (.md) / MDX (.mdx) / Les deux]
- Consommateur : [Starlight / Astro SSG / Les deux]
- Indexation : [Pagefind â /â]
2. Architecture et structure
Section titled â2. Architecture et structureâ2.1. Arborescence des fichiers
Section titled â2.1. Arborescence des fichiersâsrc/content/âââ config.ts # DĂ©finition des schĂ©mas Zodâââ [collection-name]/ âââ index.mdx # Page d'accueil de la collection âââ [section-1]/ â âââ page-1.md â âââ page-2.mdx âââ [section-2]/ âââ page-3.md2.2. Composants impliquĂ©s
Section titled â2.2. Composants impliquĂ©sâ| Composant | RĂŽle | Couche |
|---|---|---|
src/content/config.ts |
Définition des schémas de validation (Zod) | L2 (Astro) |
| Fichiers MD/MDX | Contenu source | L1 (Contenu) |
| Starlight | Rendu de la documentation | L2 (Astro) |
| Pagefind | Indexation pour la recherche | L2 (Astro) |
| Git | Versioning et workflow de publication | Infrastructure |
3. Configuration de la collection
Section titled â3. Configuration de la collectionâ3.1. DĂ©finition dans src/content/config.ts
Section titled â3.1. DĂ©finition dans src/content/config.tsâimport { z, defineCollection } from 'astro:content';
const [collectionName]Collection = defineCollection({ type: 'content', // ou 'data' si JSON/YAML schema: ({ image }) => z.object({ title: z.string(), description: z.string().optional(), publishedAt: z.date().optional(), updated: z.date().optional(), order: z.number().optional(), draft: z.boolean().optional().default(false), // Métadonnées spécifiques à Starlight sidebar: z.object({ label: z.string(), order: z.number().optional(), badge: z.object({ text: z.string(), variant: z.enum(['note', 'tip', 'caution', 'danger']).optional(), }).optional(), }).optional(), // Métadonnées SEO head: z.array(z.object({ tag: z.enum(['title', 'meta', 'link']), attrs: z.record(z.string()).optional(), content: z.string().optional(), })).optional(), // Image de couverture (si applicable) cover: image().optional(), }),});
export const collections = { [collectionName]: [collectionName]Collection,};3.2. Variables dâenvironnement (si applicable)
Section titled â3.2. Variables dâenvironnement (si applicable)â| Variable | Description | Obligatoire | Valeur par dĂ©faut |
|---|---|---|---|
| [Variable] | [Description] | [â /â] | [Valeur] |
4. Structure des fichiers Markdown/MDX
Section titled â4. Structure des fichiers Markdown/MDXâ4.1. Frontmatter requis
Section titled â4.1. Frontmatter requisâ---title: "Titre de la page"description: "Description courte pour SEO et aperçu"publishedAt: 2026-09-03updated: 2026-09-03order: 1draft: falsesidebar: label: "LibellĂ© dans la sidebar" order: 1 badge: text: "Nouveau" variant: "tip"head: - tag: meta attrs: name: "robots" content: "index, follow"---4.2. Structure du contenu
Section titled â4.2. Structure du contenuâ# Titre principal (H1)
Introduction ou résumé de la page.
## Section 1 (H2)
Contenu de la section.
### Sous-section (H3)
Détails ou exemples.
## Section 2 (H2)
Autre contenu.
## Voir aussi
- [Lien vers page connexe 1](./page-1.md)- [Lien vers page connexe 2](./page-2.md)4.3. Composants MDX (si applicable)
Section titled â4.3. Composants MDX (si applicable)â---title: "Page avec composants interactifs"---
import { CodeBlock, Callout, Tabs } from '@astrojs/starlight/components';
# Titre
<Intro>Texte d'introduction stylisé.</Intro>
<Callout type="tip">Ceci est un appel important.</Callout>
<Tabs> <Fragment slot="tab">Option 1</Fragment> <Fragment slot="panel">Contenu de l'option 1</Fragment>
<Fragment slot="tab">Option 2</Fragment> <Fragment slot="panel">Contenu de l'option 2</Fragment></Tabs>
<CodeBlock lang="typescript">const example = "code";</CodeBlock>5. Intégration avec Starlight
Section titled â5. IntĂ©gration avec Starlightâ5.1. Configuration Starlight
Section titled â5.1. Configuration Starlightâimport starlight from '@astrojs/starlight';
export default defineConfig({ integrations: [ starlight({ title: 'Documentation Technique', sidebar: [ { label: 'Guide de Démarrage', autogenerate: { directory: 'guide' }, }, { label: 'Références API', autogenerate: { directory: 'api' }, }, { label: 'Tutoriels', items: [ { label: 'Installation', link: '/tutorials/installation/' }, { label: 'Configuration', link: '/tutorials/configuration/' }, ], }, ], }), ],});5.2. Structure de la sidebar
Section titled â5.2. Structure de la sidebarâ| Section | Dossier | Ordre | Badge |
|---|---|---|---|
| Guide de Démarrage | guide/ |
Auto | - |
| Références API | api/ |
Auto | - |
| Tutoriels | tutorials/ |
Manuel | - |
| [Autre section] | [Dossier] | [Auto/Manuel] | [Badge] |
5.3. Personnalisation du thĂšme Starlight
Section titled â5.3. Personnalisation du thĂšme Starlightâ:root { --sl-color-accent-low: #1e1b4b; --sl-color-accent: #4f46e5; --sl-color-accent-high: #c7d2fe; --sl-color-white: #ffffff; --sl-color-gray-1: #f8fafc; --sl-color-gray-2: #e2e8f0; --sl-color-gray-3: #cbd5e1; --sl-color-gray-4: #94a3b8; --sl-color-gray-5: #64748b; --sl-color-gray-6: #475569; --sl-color-gray-7: #334155; --sl-color-gray-8: #1e293b; --sl-color-gray-9: #0f172a; --sl-color-black: #020617;}6. Indexation Pagefind
Section titled â6. Indexation Pagefindâ6.1. Configuration de lâindexation
Section titled â6.1. Configuration de lâindexationâ// astro.config.mjs (extrait)import pagefind from 'astro-pagefind';
export default defineConfig({ integrations: [ pagefind({ ranking: { pageLength: 0.1, termFrequency: 0.5, termSaturation: 0.5, termSimilarity: 0.9, }, }), ],});6.2. Métadonnées Pagefind
Section titled â6.2. MĂ©tadonnĂ©es Pagefindâ---title: "Titre de la page"# MĂ©tadonnĂ©es Pagefindpagefind: weight: title: 2.0 content: 1.0 meta: type: "documentation" category: "guide" filters: - type: documentation - category: guide exclude: selectors: - "nav" - "footer" - ".no-index"---6.3. RĂšgles dâindexation
Section titled â6.3. RĂšgles dâindexationâ| RĂšgle | Configuration | Rationale |
|---|---|---|
| Inclure toutes les pages publiées | draft: false |
Contenu accessible aux utilisateurs |
| Exclure les brouillons | draft: true |
Contenu non finalisé |
| Exclure les éléments de navigation | exclude_selectors: ["nav", "footer"] |
Ăviter le bruit dans les rĂ©sultats |
| Pondérer les titres | weight.title: 2.0 |
Améliorer la pertinence |
| Filtrer par type | filters: ["documentation"] |
Permettre le filtrage dans lâUI |
7. Workflow Git
Section titled â7. Workflow Gitâ7.1. Cycle de vie dâun document
Section titled â7.1. Cycle de vie dâun documentâ[CrĂ©ation locale] â [Commit] â [Pull Request] â [Revue] â [Merge] â [Build] â [DĂ©ploiement] â â â â â â â ⌠⌠⌠⌠⌠⌠⌠RĂ©dacteur DĂ©veloppeur Ăquipe Tech Reviewer CI/CD Astro Cloudflare7.2. Conventions de commit
Section titled â7.2. Conventions de commitâ# Types de commits recommandĂ©sdocs: ajout de la page d'installationdocs: mise Ă jour de la configuration APIdocs: correction typo dans le guide de dĂ©marragedocs: suppression de la page obsolĂšte7.3. Processus de revue
Section titled â7.3. Processus de revueâ| Ătape | Responsable | Action |
|---|---|---|
| 1. Rédaction | Rédacteur technique | Création du contenu MD/MDX |
| 2. Validation technique | DĂ©veloppeur | VĂ©rification de lâexactitude technique |
| 3. Revue Ă©ditoriale | Ăditeur | VĂ©rification de la clartĂ© et du style |
| 4. Merge | Mainteneur | Intégration dans la branche principale |
| 5. Déploiement | CI/CD | Build Astro + déploiement Cloudflare Pages |
8. Sécurité et validation
Section titled â8. SĂ©curitĂ© et validationâ8.1. Validation des schĂ©mas
Section titled â8.1. Validation des schĂ©masâ- â
Tous les fichiers MD/MDX doivent respecter le schéma Zod défini dans
config.ts - â Le build Astro Ă©choue si un fichier ne valide pas le schĂ©ma
- â
Les champs obligatoires sont :
title - â Les dates doivent ĂȘtre au format ISO 8601
8.2. RÚgles de sécurité
Section titled â8.2. RĂšgles de sĂ©curitĂ©â- â Aucun secret ou information sensible ne doit ĂȘtre inclus dans les fichiers MD/MDX
- â Les liens externes doivent ĂȘtre vĂ©rifiĂ©s (pas de broken links)
- â Les images doivent ĂȘtre optimisĂ©es et stockĂ©es dans R2 (pas dans Git)
- â Le contenu doit ĂȘtre relu avant publication
8.3. Protection des branches
Section titled â8.3. Protection des branchesâ- â
La branche
mainest protĂ©gĂ©e (merge via PR uniquement) - â Au moins une approbation requise avant merge
- â Les checks CI doivent passer (lint, build, tests)
9. Performance et optimisation
Section titled â9. Performance et optimisationâ9.1. Optimisation des images
Section titled â9.1. Optimisation des imagesâ- â Utiliser des images WebP/AVIF (conversion automatique via Cloudflare)
- â Dimensions maximales : 1920x1080 pour les images de contenu
- â Poids maximal : 500 KB par image
- â
Toujours fournir
altdescriptif
9.2. Optimisation du contenu
Section titled â9.2. Optimisation du contenuâ- â Limiter la taille des fichiers MD/MDX Ă 50 KB
- â DĂ©couper les contenus longs en plusieurs pages
- â Utiliser des ancres pour la navigation intra-page
- â Ăviter les composants MDX trop lourds
9.3. Performance de build
Section titled â9.3. Performance de buildâ- â ïž Le build Astro peut ĂȘtre lent avec beaucoup de fichiers MDX (> 100)
- â ïž Les composants MDX complexes augmentent le temps de build
- â
Utiliser
getCollection()pour prĂ©charger les donnĂ©es - â Mettre en cache les rĂ©sultats de build si possible
10. Débogage et troubleshooting
Section titled â10. DĂ©bogage et troubleshootingâ10.1. ProblĂšmes courants
Section titled â10.1. ProblĂšmes courantsâ| SymptĂŽme | Cause probable | Solution |
|---|---|---|
| âSchema validation failedâ | Frontmatter incorrect | VĂ©rifier le schĂ©ma Zod dans config.ts |
| Page non visible dans Starlight | draft: true ou mauvais dossier |
VĂ©rifier le frontmatter et lâemplacement |
| Sidebar mal ordonnée | order manquant ou incorrect |
Ajouter/corriger le champ order |
| Liens cassés | Chemin relatif incorrect | Vérifier les liens (utiliser ./ pour relatif) |
| Build échoue | Syntaxe MDX invalide | Vérifier la syntaxe des composants MDX |
| Pagefind nâindexe pas | draft: true ou exclusion |
Vérifier le frontmatter et la config Pagefind |
10.2. Logs et monitoring
Section titled â10.2. Logs et monitoringâ# Logs de build Astronpm run build -- --verbose
# Vérification des schémasnpx astro check
# Test de l'indexation Pagefindnpx pagefind --source dist10.3. Tests manuels
Section titled â10.3. Tests manuelsâ# Test localnpm run dev
# Vérification des liensnpx broken-link-checker http://localhost:4321
# Validation de l'accessibiliténpx axe http://localhost:4321/docs/11. Bonnes pratiques
Section titled â11. Bonnes pratiquesâ11.1. RĂ©daction
Section titled â11.1. RĂ©dactionâ- â Utiliser un langage clair et concis
- â Structurer avec des titres hiĂ©rarchiques (H1, H2, H3)
- â Inclure des exemples de code quand pertinent
- â Ajouter des captures dâĂ©cran pour les interfaces
- â Fournir des liens vers des ressources connexes
11.2. Organisation
Section titled â11.2. Organisationâ- â Regrouper les pages par thĂšme dans des dossiers
- â Utiliser des noms de fichiers descriptifs (kebab-case)
- â
Maintenir une page dâindex (
index.md) par dossier - â
Documenter la structure dans un fichier
README.md
11.3. Maintenance
Section titled â11.3. Maintenanceâ- â
Mettre Ă jour les dates (
updated) lors des modifications - â Archiver les contenus obsolĂštes plutĂŽt que les supprimer
- â VĂ©rifier rĂ©guliĂšrement les liens cassĂ©s
- â Revoir le contenu tous les 6 mois
11.4. Accessibilité
Section titled â11.4. AccessibilitĂ©â- â Utiliser des textes alternatifs descriptifs pour les images
- â Assurer un contraste suffisant (WCAG AA minimum)
- â Structurer le contenu avec des titres hiĂ©rarchiques
- â Fournir des transcripts pour les vidĂ©os
12. Ăvolutions et roadmap
Section titled â12. Ăvolutions et roadmapâ12.1. AmĂ©liorations planifiĂ©es
Section titled â12.1. AmĂ©liorations planifiĂ©esâ- [Ăvolution 1 : ex. Ajout de la recherche full-text avec Pagefind]
- [Ăvolution 2 : ex. Support du multi-langue (i18n)]
- [Ăvolution 3 : ex. IntĂ©gration de composants interactifs avancĂ©s]
12.2. Limitations connues
Section titled â12.2. Limitations connuesâ- â Les fichiers MDX ne peuvent pas ĂȘtre Ă©ditĂ©s dans Sanity (Git uniquement)
- â Le build peut ĂȘtre lent avec beaucoup de composants MDX
- â Les images doivent ĂȘtre optimisĂ©es manuellement avant commit
13. Ressources liées
Section titled â13. Ressources liĂ©esâ- Documentation Astro : Content Collections
- Documentation Starlight : Getting Started
- Documentation Pagefind : Getting Started
- DAT L1 : §3.2 - Composant Fichiers Locaux : Astro Starlight
- DAT L2 : §5.2 - Isolation de la Documentation (Starlight)
- DAT L2 : §8 - Stratégie de Recherche Unifiée (Pagefind)
- Fichiers concernés :
src/content/config.tssrc/content/[collection-name]/**/*.mdsrc/content/[collection-name]/**/*.mdxastro.config.mjs
14. Historique des modifications
Section titled â14. Historique des modificationsâ| Date | Version | Description | Auteur |
|---|---|---|---|
| YYYY-MM-DD | 1.0 | Création initiale | [Nom] |
| YYYY-MM-DD | 1.1 | [Modification] | [Nom] |
---
**Points clés de ce template :**- Documente la structure des content collections Astro (MD/MDX)- Inclut la configuration Starlight et l'indexation Pagefind- Détaille le workflow Git (critique pour ce type de contenu)- Fournit des bonnes pratiques de rédaction et d'organisation- Sépare clairement la configuration, le contenu, et l'indexation- Inclut un guide de débogage complet