Page Astro : index.astro
Page Astro : index.astro
Documentation technique
Objet : Page Astro
Type : Page
Slice : Slice 1 (Page d’accueil)
Cycle : DOC → SPEC → CODE → TEST → INTÉG
Statut : INTÉG
1. Description et périmètre
1.1. Objectif
La page index.astro est la page d’accueil du site. Elle utilise le rendu PageBuilder depuis Sanity pour afficher un contenu marketing flexible avec le mode SSG.
1.2. Utilisation principale
- Page d’accueil principale
- Point d’entrée du site
- Vitrine marketing
1.3. Périmètre concerné
- Type : Page Astro
- Rendu : SSG via
export const prerender = true - Source des données : Sanity (via GROQ query)
- Layout : MainLayout.astro
- Composants : PageBuilder blocks
2. Contrats d’entrée
2.1. Configuration prerender1/2
Entrée : Configuration de rendu
Structure :
---export const prerender = true;---2.1. Configuration prerender2/2
Règles :
- Force le SSG pour cette page
- Conforme à l’ADR-SSR-Pur.md
- Page générée en HTML statique au build
2.2. Query GROQ1/2
Entrée : Query pour récupérer les données Sanity
Structure :
*[_type == "page" && slug.current == "/"][0]{ title, description, pageBuilder[]{ _type, _key, ...select( _type == "hero" => {...}, _type == "features" => {...}, ... ) }}2.2. Query GROQ2/2
Règles :
- Récupère le document page avec slug “/”
- Utilise
...select()pour les conditionnels - Inclut tous les champs nécessaires au rendu
3. Contrats de sortie
3.1. Structure HTML
Sortie : Structure HTML complète
Comportement :
- Utilisation de MainLayout.astro
- Props SEO passées au layout
- Rendu conditionnel des blocs PageBuilder
- Structure sémantique HTML5
3.2. Métadonnées SEO
Sortie : Métadonnées SEO injectées
Comportement :
- Title depuis Sanity ou fallback
- Description depuis Sanity ou fallback
- OG tags via MainLayout
- URL canonique
4. Side effects
4.1. Impact sur le rendu
Effet : La page d’accueil influence le rendu global
Impact :
- Première page visitée par les utilisateurs
- Impact sur le SEO global du site
- Performance critique (first contentful paint)
4.2. Impact sur le cache
Effet : Mode SSG influence le cache
Impact :
- Page générée statiquement au build
- Cache Edge pour les assets statiques
- Rebuild nécessaire pour mise à jour du contenu
5. Erreurs et gestion
5.1. Erreurs potentielles
| Erreur | Cause probable | Solution |
|---|---|---|
| Page Sanity introuvable | Aucun document avec slug “/” | Afficher page par défaut ou erreur 404 |
| Query GROQ invalide | Syntaxe incorrecte | Corriger la syntaxe GROQ |
| Composant manquant | Bloc inconnu dans pageBuilder | Ignorer ou afficher erreur |
5.2. Fallbacks
Gestion des données manquantes :
- Si
pageest null : afficher contenu par défaut - Si
pageBuilderest vide : afficher message - Si bloc inconnu : ignorer silencieusement
6. Implémentation réalisée
6.1. Configuration SSG
Fichier : apps/web/src/pages/index.astro
Code :
---export const prerender = true;---Conformité : Conforme à l’ADR-SSR-Pur.md
6.2. Query GROQ1/2
Query utilisée :
6.2. Query GROQ2/2
*[_type == "page" && slug.current == "/"][0]{ title, description, pageBuilder[]{ _type, _key, ...select( _type == "hero" => { heading, subheading, ctaText, ctaLink, image }, _type == "features" => { heading, features[]{ title, description, icon } }, _type == "testimonials" => { heading, testimonials[]{ name, role, quote, avatar } }, _type == "cta" => { heading, description, buttonText, buttonLink }, _type == "richText" => { content }, _type == "imageGallery" => { heading, images[]{ asset, alt, caption } } ) }}6.3. Rendu des blocs
Logique de rendu :
{page?.pageBuilder?.map((block) => { switch (block._type) { case 'hero': return <Hero {...block} />; case 'features': return <Features {...block} />; case 'testimonials': return <Testimonials {...block} />; case 'cta': return <CTA {...block} />; case 'richText': return <RichText {...block} />; case 'imageGallery': return <ImageGallery {...block} />; default: return null; }})}6.4. Intégration mode preview
Utilisation de getSanityClient() :
- Client Sanity configuré pour détecter le cookie preview
- Basculement automatique vers
previewDraftssi cookie présent - Aucune modification nécessaire dans index.astro
7. Checklist de validation
Avant de considérer l’implémentation comme terminée :
- Configuration prerender conforme à l’ADR
- Query GROQ valide et fonctionnelle
- Composants PageBuilder intégrés
- Layout MainLayout utilisé
- SEO et métadonnées configurés
- Mode preview fonctionnel
- Build Astro réussi
- Page accessible en local
8. Approbation
Validation requise : Confirmer que l’implémentation de la page d’accueil est terminée.
9. Historique des modifications
| Date | Version | Description | Auteur |
|---|---|---|---|
| 2026-09-17 | 1.0 | Création initiale | Devin |