Skip to content

Objet : Page Astro
Type : Page
Slice : Slice 1 (Page d’accueil)
Cycle : DOC → SPEC → CODE → TEST → INTÉG
Statut : INTÉG


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.

  • Page d’accueil principale
  • Point d’entrĂ©e du site
  • Vitrine marketing
  • Type : Page Astro
  • Rendu : SSG via export const prerender = true
  • Source des donnĂ©es : Sanity (via GROQ query)
  • Layout : MainLayout.astro
  • Composants : PageBuilder blocks

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

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

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

Sortie : Métadonnées SEO injectées

Comportement :

  • Title depuis Sanity ou fallback
  • Description depuis Sanity ou fallback
  • OG tags via MainLayout
  • URL canonique

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)

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

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

Gestion des données manquantes :

  • Si page est null : afficher contenu par dĂ©faut
  • Si pageBuilder est vide : afficher message
  • Si bloc inconnu : ignorer silencieusement

Fichier : apps/web/src/pages/index.astro

Code :

---
export const prerender = true;
---

ConformitĂ© : Conforme Ă  l’ADR-SSR-Pur.md

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
}
}
)
}
}

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;
}
})}

Utilisation de getSanityClient() :

  • Client Sanity configurĂ© pour dĂ©tecter le cookie preview
  • Basculement automatique vers previewDrafts si cookie prĂ©sent
  • Aucune modification nĂ©cessaire dans index.astro

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

Validation requise : Confirmer que l’implĂ©mentation de la page d’accueil est terminĂ©e.


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

Last updated: