[Nom du Schéma]
Type de ressource : Schéma Sanity (Document / Object / Block)
Fichier source :sanity-studio/schemas/[filename].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 du rôle de ce schéma dans l’architecture du site]
1.2. Cas d’usage
Section titled “1.2. Cas d’usage”- [Cas d’usage principal]
- [Cas d’usage secondaire si applicable]
1.3. Relations avec d’autres schémas
Section titled “1.3. Relations avec d’autres schémas”- Référence depuis : [Liste des schémas qui référencent celui-ci]
- Référence vers : [Liste des schémas référencés par celui-ci]
2. Structure des champs
Section titled “2. Structure des champs”2.1. Champs principaux
Section titled “2.1. Champs principaux”| Nom du champ | Type | Obligatoire | Description | Validation |
|---|---|---|---|---|
fieldName |
string |
✅ | [Description] | [Règles de validation] |
slug |
slug |
✅ | [Description] | source: 'title' |
status |
string |
✅ | [Description] | Options: draft, published, archived |
2.2. Champs SEO (si applicable)
Section titled “2.2. Champs SEO (si applicable)”| Nom du champ | Type | Obligatoire | Description |
|---|---|---|---|
seo.metaTitle |
string |
❌ | Meta title pour SEO (fallback: title) |
seo.metaDescription |
text |
❌ | Meta description (fallback: excerpt) |
seo.ogImage |
image |
❌ | Image Open Graph (fallback: mainImage) |
2.3. Champs de contenu riche (si applicable)
Section titled “2.3. Champs de contenu riche (si applicable)”| Nom du champ | Type | Description |
|---|---|---|
body |
array |
Contenu Portable Text (blocs + spans) |
pageBuilder |
array |
Liste de blocs PageBuilder (hero, features, etc.) |
3. Code d’implémentation
Section titled “3. Code d’implémentation”import { defineField, defineType } from 'sanity';
export default defineType({ name: '[schemaName]', title: '[Titre lisible]', type: 'document', // ou 'object', 'block' fields: [ // ... définition des champs ], preview: { select: { title: 'title', subtitle: 'publishedAt', media: 'mainImage', }, },});4. Requêtes GROQ associées
Section titled “4. Requêtes GROQ associées”4.1. Requête principale (listing)
Section titled “4.1. Requête principale (listing)”*[_type == "[schemaName]" && status == "published"] { _id, title, slug, publishedAt, mainImage, excerpt} | order(publishedAt desc)4.2. Requête détaillée (page unitaire)
Section titled “4.2. Requête détaillée (page unitaire)”*[_type == "[schemaName]" && slug.current == $slug][0] { ..., author->{name, image}, categories[]->{title, slug}}
5. Typage TypeScript (génération automatique)
Section titled “5. Typage TypeScript (génération automatique)”// src/types/sanity.d.ts (généré via sanity-typegen)export type [SchemaName] = { _id: string; _type: '[schemaName]'; title: string; slug: { _type: 'slug'; current: string }; publishedAt: string; status: 'draft' | 'published' | 'archived'; mainImage?: ImageAsset; excerpt?: string; seo?: SeoObject;};6. Consommation dans Astro
Section titled “6. Consommation dans Astro”6.1. Fichier concerné
Section titled “6.1. Fichier concerné”src/pages/[route]/[slug].astro
6.2. Exemple d’utilisation
Section titled “6.2. Exemple d’utilisation”---import { getSanityClient } from '../../lib/sanity';import type { [SchemaName] } from '../../types/sanity';
const client = getSanityClient(Astro);const data = await client.fetch<[SchemaName]>(/* GROQ query */);---
<!-- Rendu du contenu -->7. Règles et bonnes pratiques
Section titled “7. Règles et bonnes pratiques”7.1. Règles de validation
Section titled “7.1. Règles de validation”- [Règle 1 : ex.
titleest toujours obligatoire] - [Règle 2 : ex.
slugdoit être unique] - [Règle 3 : ex.
statusa une valeur par défautdraft]
7.2. Bonnes pratiques éditoriales
Section titled “7.2. Bonnes pratiques éditoriales”- [Conseil 1 pour les contributeurs]
- [Conseil 2 pour les contributeurs]
7.3. Considérations techniques
Section titled “7.3. Considérations techniques”- [Point technique important : ex. performance, cache, etc.]
- [Point technique important : ex. gestion des médias]
8. Historique des modifications
Section titled “8. Historique des modifications”| Date | Version | Description | Auteur |
|---|---|---|---|
| YYYY-MM-DD | 1.0 | Création initiale | [Nom] |
| YYYY-MM-DD | 1.1 | [Modification] | [Nom] |
9. Ressources liées
Section titled “9. Ressources liées”- Documentation Sanity : [Lien vers docs officielles si pertinent]
- Schémas dépendants : [Liste des schémas liés]
- Pages Astro consommatrices : [Liste des fichiers .astro]
- Composants d’affichage : [Liste des composants utilisés]