Skip to content

Type de ressource : Schéma Sanity (Document)
Fichier source : apps/studio/schemaTypes/author.ts
Statut : Actif
Slice : 2 (Blog)
Version : 1.0


SchĂ©ma pour les profils d’auteurs d’articles de blog. Contient le nom, le slug, l’image de profil et une biographie en Portable Text simplifiĂ©.

  • ModĂ©liser les profils d’auteurs avec leurs informations de base
  • Permettre l’association d’auteurs aux articles de blog
  • Supporter une biographie simple pour prĂ©senter les auteurs
  • Faciliter l’affichage des informations d’auteur sur les articles
  • CrĂ©ation de profils d’auteurs
  • Association aux articles de blog via le champ author du schĂ©ma post
  • Affichage des informations de l’auteur sur les pages d’articles
  • Gestion des biographies d’auteurs
Relation Schéma Type Description
Utilisé par post Référence Les articles référencent les auteurs via le champ author
Dépend de Aucun - Schéma indépendant

Nom du champ Type Obligatoire Description Validation
name string ✅ Nom complet de l’auteur Aucune
slug slug ✅ Slug URL gĂ©nĂ©rĂ© depuis le nom source: 'name', maxLength: 96
image image ❌ Photo de profil de l’auteur Hotspot activĂ©
bio array ❌ Biographie de l’auteur Portable Text simplifiĂ©

Aucun champ SEO spĂ©cifique n’est implĂ©mentĂ© dans ce schĂ©ma.

Nom du champ Type Description
bio array Biographie en Portable Text simplifié (style normal uniquement, pas de listes)

Champ Type Validation Description
name string Aucune Nom complet de l’auteur
slug slug source: 'name', maxLength: 96 Généré automatiquement depuis le nom
image image Aucune Photo de profil (optionnel)
bio array Aucune Biographie en Portable Text simplifié (optionnel)
Champ Type Description
_id string ID unique du document
_type string Type du document (author)
_createdAt string Date de création (généré par Sanity)
_updatedAt string Date de derniÚre modification (généré par Sanity)
name string Nom complet de l’auteur
slug { _type: 'slug'; current: string } Slug URL
image ImageAsset Photo de profil (optionnel)
bio PortableTextBlock[] Biographie (optionnel)

Non implĂ©mentĂ© - ce schĂ©ma n’a pas de champ status. Les documents sont toujours considĂ©rĂ©s comme publiĂ©s.


apps/studio/schemaTypes/author.ts
import {defineField, defineType} from 'sanity'
export default defineType({
name: 'author',
title: 'Author',
type: 'document',
fields: [
defineField({
name: 'name',
title: 'Name',
type: 'string',
}),
defineField({
name: 'slug',
title: 'Slug',
type: 'slug',
options: {
source: 'name',
maxLength: 96,
},
}),
defineField({
name: 'image',
title: 'Image',
type: 'image',
options: {
hotspot: true,
},
}),
defineField({
name: 'bio',
title: 'Bio',
type: 'array',
of: [
{
title: 'Block',
type: 'block',
styles: [{title: 'Normal', value: 'normal'}],
lists: [],
},
],
}),
],
preview: {
select: {
title: 'name',
media: 'image',
},
},
})
*[_type == "author"] {
_id,
name,
slug,
image
} | order(name asc)
*[_type == "author" && slug.current == $slug][0] {
_id,
name,
slug,
image,
bio
}

Non implĂ©mentĂ© - sanity-typegen n’est pas configurĂ© dans le projet actuel.

// Types à implémenter manuellement si nécessaire
export type Author = {
_id: string;
_type: 'author';
name: string;
slug: { _type: 'slug'; current: string };
image?: ImageAsset;
bio?: PortableTextBlock[];
};

Scénario Description Résultat attendu
Validation du nom Créer un document sans nom Erreur de validation
Génération du slug Créer un document avec nom Slug généré automatiquement depuis le nom
Limite du slug Créer un nom de plus de 96 caractÚres Slug tronqué à 96 caractÚres
Bio simplifiée Créer une bio avec listes Les listes ne sont pas disponibles (style normal uniquement)
Scénario Dépendances Description Résultat attendu
Consommation Astro Route Astro + Sanity API Récupération des données via GROQ Données récupérées et typées correctement
Référence depuis post Schéma post + author Créer un article avec cet auteur Référence fonctionnelle
Affichage dans article Route blog/[
slug].astro Afficher les infos de l’auteur Nom et image affichĂ©s correctement
Scénario Parcours utilisateur Description Résultat attendu
CrĂ©ation → Association Sanity Studio → Article CrĂ©er un auteur et l’associer Ă  un article Auteur visible sur l’article
Modification → Propagation Studio → Build → Site Modifier la bio de l’auteur Modification visible sur tous les articles

Composant Type RĂŽle MĂ©thode d’intĂ©gration
SchĂ©ma post L1 RĂ©fĂ©rence vers l’auteur Champ author de type reference
Route Astro (blog/[
slug].astro) L2 Affichage de l’auteur RequĂȘte GROQ avec jointure vers author
Layout (BlogPost.astro) L2 Rendu des infos auteur Props passées depuis la route
  • Le champ bio utilise un Portable Text simplifiĂ© (style normal uniquement, pas de listes)
  • Ce schĂ©ma n’a pas de slug dans l’URL actuelle (utilise l’_id pour les rĂ©fĂ©rences)
  • L’image est optionnelle mais recommandĂ©e pour l’affichage dans les articles
  • Les auteurs peuvent ĂȘtre associĂ©s Ă  plusieurs articles
  • Le schĂ©ma ne casse aucun schĂ©ma existant
  • Les requĂȘtes GROQ retournent les donnĂ©es attendues
  • Les types TypeScript sont gĂ©nĂ©rĂ©s correctement (Ă  implĂ©menter)
  • Les rĂ©fĂ©rences depuis post fonctionnent correctement

  • ✅ Les images sont stockĂ©es dans Sanity Asset API avec accĂšs contrĂŽlĂ©
  • ✅ Les permissions Sanity sont configurĂ©es par rĂŽle
  • ✅ Les rĂ©fĂ©rences depuis post sont validĂ©es par Sanity
  • ✅ Le champ name est obligatoire
  • ✅ Les slugs sont uniques et valides
  • ✅ Les rĂ©fĂ©rences depuis post pointent vers des documents existants

Limite Valeur StratĂ©gie d’optimisation
Taille du document 16 MB Éviter les champs bio trop volumineux
Profondeur des références 10 niveaux Limiter les références imbriquées
  • ✅ Utilisation de projections GROQ pour rĂ©duire la taille des rĂ©ponses
  • ✅ Mise en cache CDN pour les requĂȘtes en production
  • ✅ Portable Text simplifiĂ© pour rĂ©duire la complexitĂ©

SymptĂŽme Cause probable Solution
Schéma non visible dans Studio Cache du navigateur Vider le cache et rafraßchir
Types TypeScript incorrects Schéma modifié sans régénération Exécuter sanity typegen generate (à implémenter)
Auteur non affichĂ© dans article RĂ©fĂ©rence cassĂ©e VĂ©rifier que l’auteur existe et n’est pas supprimĂ©
Bio avec listes ne fonctionne pas Limitation du schéma simplifié Utiliser uniquement le style normal
Terminal window
# Extraire le schéma depuis Sanity
npx sanity schema extract
# Générer les types TypeScript (à implémenter)
npx sanity typegen generate

  • ✅ Toujours utiliser des types gĂ©nĂ©rĂ©s par sanity-typegen (Ă  implĂ©menter)
  • ✅ Centraliser les requĂȘtes GROQ dans src/lib/queries.ts (Ă  implĂ©menter)
  • ✅ Documenter les champs et leurs validations
  • ✅ Utiliser defineField pour chaque champ
  • ✅ Configurer le preview pour une meilleure UX dans Studio
  • ✅ Utiliser des validations appropriĂ©es
  • ✅ Mettre Ă  jour ce fichier lors de toute modification du schĂ©ma
  • ✅ RĂ©gĂ©nĂ©rer les types aprĂšs modification (Ă  implĂ©menter)
  • ✅ Tester les requĂȘtes GROQ aprĂšs modification

  • ImplĂ©mentation de sanity-typegen pour la gĂ©nĂ©ration de types
  • Ajout de champs SEO pour les profils d’auteurs
  • Support de la bio avec Portable Text complet (listes, styles)
  • Centralisation des requĂȘtes GROQ dans un fichier dĂ©diĂ©
  • ❌ Pas de support pour les drafts (pas de champ status)
  • ❌ Pas de champs SEO spĂ©cifiques
  • ❌ Types TypeScript non gĂ©nĂ©rĂ©s automatiquement
  • ❌ Bio simplifiĂ©e (pas de listes ni styles avancĂ©s)

  • Documentation Sanity : Schema Types
  • DAT L1 : §4 - ModĂ©lisation et SchĂ©mas des DonnĂ©es
  • SchĂ©mas dĂ©pendants : Aucun (schĂ©ma indĂ©pendant)
  • SchĂ©mas rĂ©fĂ©rençant : post
  • Pages Astro consommatrices : apps/web/src/pages/blog/[...slug].astro
  • Composants d’affichage : apps/web/src/layouts/BlogPost.astro

Date Version Description Auteur
2026-09-15 1.0 Création initiale Devin
Edit page

Last updated: