Page Astro : index.astro
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
Section titled â1. Description et pĂ©rimĂštreâ1.1. Objectif
Section titled â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
Section titled â1.2. Utilisation principaleâ- Page dâaccueil principale
- Point dâentrĂ©e du site
- Vitrine marketing
1.3. PérimÚtre concerné
Section titled â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
Section titled â2. Contrats dâentrĂ©eâ2.1. Configuration prerender
Section titled â2.1. Configuration prerenderâEntrĂ©e : Configuration de rendu
Structure :
---export const prerender = true;---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 GROQ
Section titled â2.2. Query GROQâ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" => {...}, ... ) }}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
Section titled â3. Contrats de sortieâ3.1. Structure HTML
Section titled â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
Section titled â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
Section titled â4. Side effectsâ4.1. Impact sur le rendu
Section titled â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
Section titled â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
Section titled â5. Erreurs et gestionâ5.1. Erreurs potentielles
Section titled â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
Section titled â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
Section titled â6. ImplĂ©mentation rĂ©alisĂ©eâ6.1. Configuration SSG
Section titled â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 GROQ
Section titled â6.2. Query GROQâQuery utilisĂ©e :
*[_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
Section titled â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
Section titled â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
Section titled â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
Section titled â8. ApprobationâValidation requise : Confirmer que lâimplĂ©mentation de la page dâaccueil est terminĂ©e.
9. Historique des modifications
Section titled â9. Historique des modificationsâ| Date | Version | Description | Auteur |
|---|---|---|---|
| 2026-09-17 | 1.0 | Création initiale | Devin |