Skip to content

[Nom de la Collection de Contenu]

Type de ressource : Astro Content Collection (Markdown/MDX)
Fichier source : src/content/[collection-name]/ ou src/content/config.ts
Statut : [Actif / Déprécié / En développement]
Slice : [Numéro de la tranche verticale]
Version : 1.0


[Description concise de cette collection de contenu et son rîle dans l’architecture du site]

  • [Objectif principal : ex. fournir une documentation technique pour les dĂ©veloppeurs]
  • [BĂ©nĂ©fice pour l’utilisateur final]
Type de contenu Statut
Documentation technique [✅/❌]
Blog [✅/❌]
Portfolio [✅/❌]
Pages statiques [✅/❌]
Format Statut
Markdown (.md) [✅/❌]
MDX (.mdx) [✅/❌]
Les deux [✅/❌]
Consommateur Statut
Starlight [✅/❌]
Astro SSG [✅/❌]
Les deux [✅/❌]
Indexation Statut
Pagefind [✅/❌]

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.md
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

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,
};
Variable Description Obligatoire Valeur par défaut
[Variable] [Description] [✅/❌] [Valeur]

---
title: "Titre de la page"
description: "Description de la page"
publishedAt: 2026-09-04
draft: false
sidebar:
label: "Label dans la sidebar"
order: 1
---
---
title: "Introduction"
description: "Introduction Ă  la documentation"
sidebar:
label: "Introduction"
order: 1
---
# Introduction
Contenu de la documentation...
---
title: "Composants Interactifs"
description: "Utilisation des composants MDX"
sidebar:
label: "Composants"
order: 2
---
import { Counter } from '../components/Counter';
# Composants Interactifs
<Counter />
Contenu de la documentation...

Champ Type Obligatoire Validation
title string ✅ Non vide
description string ❌ Valeur par dĂ©faut
publishedAt date ❌ Date valide
draft boolean ❌ Valeur par dĂ©faut
ÉlĂ©ment Type Description
frontmatter object Métadonnées validées
body string Contenu Markdown/MDX

Scénario Description Résultat attendu
Validation Zod Frontmatter valide Validation réussie
Validation Zod Frontmatter invalide Erreur de validation
Scénario Dépendances Description Résultat attendu
Build complet Starlight + Astro Build de la documentation Build réussi
Scénario Parcours utilisateur Description Résultat attendu
Navigation Utilisateur → Documentation Navigation dans la docs Pages affichĂ©es correctement

Composant Type RĂŽle MĂ©thode d’intĂ©gration
Starlight Rendu Rendu de la documentation Configuration dans astro.config.mjs
Pagefind Indexation Indexation du contenu Build script
Git Versioning Workflow de publication Git workflow
  • Les schĂ©mas Zod doivent ĂȘtre valides
  • Le frontmatter doit respecter le schĂ©ma
  • Les fichiers doivent ĂȘtre organisĂ©s correctement
  • Les schĂ©mas Zod sont valides
  • Le build rĂ©ussit
  • La documentation est indexĂ©e par Pagefind
  • Les tests E2E passent

  • ✅ Validation Zod des frontmatter
  • ✅ Pas d’exĂ©cution de code non sĂ©curisĂ©
  • ✅ Git workflow sĂ©curisĂ©
  • ✅ Ne jamais inclure de donnĂ©es sensibles dans les fichiers
  • ✅ Valider tous les inputs utilisateur
  • ✅ Utiliser les permissions Git appropriĂ©es

Optimisation Description
SSG Génération statique au build
Lazy loading Chargement différé des composants
Image Optimization Optimisation des images
  • ❌ Les fichiers MDX augmentent le build time
  • ❌ Les composants MDX nĂ©cessitent une hydratation

SymptĂŽme Cause probable Solution
Validation échoue Frontmatter invalide Vérifier le schéma Zod
Build échoue Erreur MDX Vérifier la syntaxe MDX
Indexation échoue Pagefind configuration Vérifier la configuration Pagefind
Terminal window
# Build local
npm run build
# Preview du build
npm run preview

  • ✅ SchĂ©mas Zod typĂ©s
  • ✅ Organisation hiĂ©rarchique des fichiers
  • ✅ Frontmatter documentĂ©
  • ✅ Utiliser des composants MDX rĂ©utilisables
  • ✅ Optimiser les images
  • ✅ Documenter les changements
  • ✅ Mettre Ă  jour les schĂ©mas rĂ©guliĂšrement
  • ✅ Documenter les changements dans ce fichier

  • [Évolution 1]
  • [Évolution 2]
  • ❌ [Limitation 1]
  • ❌ [Limitation 2]


Date Version Description Auteur
YYYY-MM-DD 1.0 Création initiale [Nom]
Edit page

Last updated: