Index
Index
Documentation technique
Type de ressource : Route Astro (Page SSR)
Fichier source :src/pages/index.astro
Statut : Actif
1. Vue d’ensemble
1.1. Description
Page d’accueil du site. Affiche un message de bienvenue avec un test d’intégration AMN (Message du schéma Sanity). Contient du contenu template Astro avec des liens vers les sections du site.
1.2. Objectif
- Afficher la page d’accueil du site
- Tester l’intégration Sanity via le message AMN
- Fournir une navigation vers les autres sections du site
- Servir de point d’entrée principal
1.3. Caractéristiques
| Propriété | Valeur |
|---|---|
| URL publique | / |
| Mode de rendu | SSR (par défaut) |
| Type | Page HTML |
| Méthode HTTP | GET |
| Authentification requise | Non |
| Cache | Voir §6 |
2. Architecture et flux
[Requête utilisateur] │ ▼[Cloudflare Pages / Edge] │ • Routage vers Astro ▼[Astro Route (index.astro)] │ • Récupération du message AMN via getAmn() │ • Rendu du composant ▼[Réponse HTML]2.2. Composants impliqués
| Composant | Rôle | Couche |
|---|---|---|
index.astro |
Définition de la route | L2 (Astro) |
getAmn() |
Récupération du message AMN | L2 (Astro) |
BaseHead |
Métadonnées SEO globales | L2 (Astro) |
Header |
Navigation globale | L2 (Astro) |
Footer |
Pied de page global | L2 (Astro) |
3. Implémentation
3.1. Code de la route1/2
3.1. Code de la route2/2
---import BaseHead from '../components/BaseHead.astro';import Footer from '../components/Footer.astro';import Header from '../components/Header.astro';import { SITE_DESCRIPTION, SITE_TITLE } from '../consts';import { getAmn } from '../lib/sanity';
const amn = await getAmn();---
<!doctype html><html lang="en"> <head> <BaseHead title={SITE_TITLE} description={SITE_DESCRIPTION} /> </head> <body> <Header /> <main> <div style="background: #eef2ff; border: 1px solid #c7d2fe; padding: 1rem; border-radius: 8px; margin-bottom: 2rem;"> <h2>🚀 Welcome, AMN Integration Test</h2> {amn ? ( <div> <p><strong>Message Sanity:</strong> {amn.message}</p> <p><strong>Statut:</strong> {amn.status}</p> </div> ) : ( <p>No active AMN message found in Sanity. <a href="/welcome">Voir la page /welcome</a></p> )} </div> <h1>🧑🚀 Hello, Astronaut!</h1> <p> Welcome to the official <a href="https://astro.build/">Astro</a> blog starter template... </p> <!-- ... --> </main> <Footer /> </body></html>4. Données et requêtes GROQ
4.1. Requête principale
*[_type == "amn" && status == "active"][0]4.2. Requêtes secondaires
Aucune requête secondaire n’est utilisée.
4.3. Types TypeScript associés
// Type AMN (manuel, sanity-typegen non implémenté)export type Amn = { _id: string; _type: 'amn'; message: string; status: 'active' | 'inactive';};5. Paramètres et validation
5.1. Paramètres d’URL
Aucun paramètre d’URL n’est utilisé.
5.2. Query strings
Aucune query string n’est utilisée.
5.3. Gestion des erreurs
| Code HTTP | Condition | Réponse |
|---|---|---|
| 200 | Succès | Page HTML |
| 500 | Erreur Sanity (getAmn) | Page HTML avec message d’erreur |
6. Stratégie de cache
6.1. En-têtes de cache
| Mode | Cache-Control |
CDN-Cache-Control |
Rationale |
|---|---|---|---|
| SSR standard | Non configuré | Non configuré | Par défaut Cloudflare |
6.2. Implémentation dans la route
Non implémenté - pas de headers de cache explicites.
7. SEO et métadonnées
7.1. Balises meta
| Balise | Source | Fallback |
|---|---|---|
<title> |
SITE_TITLE (const) |
- |
<meta name="description"> |
SITE_DESCRIPTION (const) |
- |
| Meta tags globaux | BaseHead |
- |
7.2. Sitemap
- ✅ Cette route est-elle incluse dans le sitemap ? Oui (racine)
- ✅ Fréquence de mise à jour : daily
- ✅ Priorité : 1.0
7.3. Indexation Pagefind
- ✅ Cette route est-elle indexée par Pagefind ? Non (Pagefind non configuré)
- ⚠️ Poids du titre : Non configuré
- ⚠️ Filtres applicables : Non configuré
8. Composants UI utilisés
| Composant | Fichier | Rôle | Hydratation |
|---|---|---|---|
BaseHead |
src/components/BaseHead.astro |
Métadonnées SEO | Aucune |
Header |
src/components/Header.astro |
Navigation globale | Aucune |
Footer |
src/components/Footer.astro |
Pied de page global | Aucune |
9. Sécurité
9.1. Accès et authentification
| Condition | Comportement |
|---|---|
| Accès public | Page accessible sans authentification |
| Mode Preview | Non supporté (pas de logique preview) |
9.2. Validation des entrées
Non applicable (pas de paramètres d’entrée).
9.3. En-têtes de sécurité
Non implémenté dans cette route (à configurer via Middleware Cloudflare).
10. Débogage et troubleshooting
10.1. Problèmes courants
| Symptôme | Cause probable | Solution |
|---|---|---|
| Message AMN non affiché | Aucun document AMN actif | Créer un document AMN avec status “active” |
| Erreur Sanity | Variables d’environnement manquantes | Vérifier SANITY_PROJECT_ID, SANITY_DATASET |
10.2. Logs et monitoring
# Logs de développementnpm run dev
# Vérification des typesnpx astro check10.3. Tests manuels
# Test de la route en localcurl -I http://localhost:4321/11. Bonnes pratiques
11.1. Architecture
- ✅ Utiliser les composants globaux (Header, Footer, BaseHead)
- ✅ Centraliser les constantes (SITE_TITLE, SITE_DESCRIPTION)
- ✅ Gérer les erreurs de manière élégante (message fallback)
11.2. Performance
- ✅ Pas de JavaScript inutile
- ✅ HTML statique par défaut
11.3. Maintenance
- ✅ Mettre à jour le contenu template selon les besoins
- ✅ Tester l’intégration Sanity régulièrement
12. Évolutions et roadmap
12.1. Améliorations planifiées
- Supprimer le contenu template Astro
- Ajouter un vrai contenu d’accueil
- Support du mode preview
- Ajout de structured data (JSON-LD)
12.2. Limitations connues
- ❌ Contenu template Astro (non personnalisé)
- ❌ Pas de support du mode preview
- ❌ Pas de structured data (JSON-LD)
- ❌ Langue hardcodée en ‘en’
13. Ressources liées
- Documentation Astro : Routing
- Fichiers concernés :
src/pages/index.astrosrc/lib/sanity.ts(getAmn)src/consts.ts(SITE_TITLE, SITE_DESCRIPTION)
14. Historique des modifications
| Date | Version | Description | Auteur |
|---|---|---|---|
| 2026-09-15 | 1.0 | Création initiale | Devin |