Type de ressource : Route Astro (Page SSR avec Preview)
Fichier source :src/pages/welcome.astro
Statut : Actif
1. Vue dâensemble
Section titled â1. Vue dâensembleâ1.1. Description
Section titled â1.1. DescriptionâPage welcome affichant le message AMN depuis Sanity. Supporte le mode preview pour visualiser les drafts. Affiche une banniĂšre de preview si le mode est activĂ©.
1.2. Objectif
Section titled â1.2. Objectifâ- Afficher le message AMN depuis Sanity
- Supporter le mode preview pour les drafts
- Tester lâintĂ©gration preview Sanity
- Fournir une interface simple pour tester la preview
1.3. Caractéristiques
Section titled â1.3. CaractĂ©ristiquesâ| PropriĂ©tĂ© | Valeur |
|---|---|
| URL publique | /welcome |
| Mode de rendu | SSR |
| Type | Page HTML |
| Méthode HTTP | GET |
| Authentification requise | Preview uniquement (cookie) |
| Cache | No-store en mode preview |
2. Architecture et flux
Section titled â2. Architecture et fluxâ[RequĂȘte utilisateur] â âŒ[Cloudflare Pages / Edge] â âą Middleware (cookie sanity-preview) âŒ[Astro Route (welcome.astro)] â âą DĂ©tection du mode preview (cookie) â âą RĂ©cupĂ©ration du message AMN via getAmn(isPreview) â âą Rendu du composant âŒ[RĂ©ponse HTML]2.2. Composants impliquĂ©s
Section titled â2.2. Composants impliquĂ©sâ| Composant | RĂŽle | Couche |
|---|---|---|
welcome.astro |
Définition de la route | L2 (Astro) |
getAmn() |
Récupération du message AMN | L2 (Astro) |
| Preview cookie | Détection du mode preview | L2 (Astro) |
3. Implémentation
Section titled â3. ImplĂ©mentationâ3.1. Code de la route
Section titled â3.1. Code de la routeâ---import { getAmn } from '../lib/sanity'
export const prerender = false
const isPreview = Astro.cookies.get('sanity-preview')?.value === 'true'const amn = await getAmn(isPreview)---
<html lang="fr"> <head> <meta charset="utf-8" /> <meta name="viewport" content="width=device-width" /> <title>Welcome, AMN</title> </head> <body> {isPreview && ( <div class="preview-banner"> â ïž <strong>Mode Preview ActivĂ©</strong> â Visualisation des brouillons Sanity non publiĂ©s (Drafts). <a href="/api/exit-preview" class="exit-link">Quitter la preview</a> </div> )}
<main> <h1>Welcome, AMN</h1> {amn ? ( <div class="card"> <p><strong>Message from Sanity:</strong> {amn.message}</p> <p><strong>Status:</strong> <span class="status-tag">{amn.status}</span></p> {isPreview && ( <p class="draft-indicator">đ Ce contenu est rendu via la perspective Drafts Sanity.</p> )} </div> ) : ( <p>No active AMN message found in Sanity</p> )} </main> </body></html>4. DonnĂ©es et requĂȘtes GROQ
Section titled â4. DonnĂ©es et requĂȘtes GROQâ4.1. RequĂȘte principale
Section titled â4.1. RequĂȘte principaleâ*[_type == "amn" && status == "active"][0]4.2. RequĂȘtes secondaires
Section titled â4.2. RequĂȘtes secondairesâAucune requĂȘte secondaire nâest utilisĂ©e.
4.3. Types TypeScript associés
Section titled â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
Section titled â5. ParamĂštres et validationâ5.1. ParamĂštres dâURL
Section titled â5.1. ParamĂštres dâURLâAucun paramĂštre dâURL nâest utilisĂ©.
5.2. Query strings
Section titled â5.2. Query stringsâAucune query string nâest utilisĂ©e.
5.3. Gestion des erreurs
Section titled â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
Section titled â6. StratĂ©gie de cacheâ6.1. En-tĂȘtes de cache
Section titled â6.1. En-tĂȘtes de cacheâ| Mode | Cache-Control |
CDN-Cache-Control |
Rationale |
|---|---|---|---|
| SSR Preview | Non configuré | Non configuré | à configurer (no-store recommandé) |
| SSR standard | Non configuré | Non configuré | Par défaut Cloudflare |
6.2. Implémentation dans la route
Section titled â6.2. ImplĂ©mentation dans la routeâNon implĂ©mentĂ© - pas de headers de cache explicites.
7. SEO et métadonnées
Section titled â7. SEO et mĂ©tadonnĂ©esâ7.1. Balises meta
Section titled â7.1. Balises metaâ| Balise | Source | Fallback |
|---|---|---|
<title> |
HardcodĂ© âWelcome, AMNâ | - |
<meta name="viewport"> |
Hardcodé | - |
7.2. Sitemap
Section titled â7.2. Sitemapâ- â Cette route est-elle incluse dans le sitemap ? Non (page de test)
- â FrĂ©quence de mise Ă jour : N/A
- â PrioritĂ© : N/A
7.3. Indexation Pagefind
Section titled â7.3. Indexation Pagefindâ- â Cette route est-elle indexĂ©e par Pagefind ? Non (Pagefind non configurĂ©)
8. Composants UI utilisés
Section titled â8. Composants UI utilisĂ©sâAucun composant UI nâest utilisĂ© (page simple sans composants).
9. Sécurité
Section titled â9. SĂ©curitĂ©â9.1. AccĂšs et authentification
Section titled â9.1. AccĂšs et authentificationâ| Condition | Comportement |
|---|---|
| AccĂšs public | Page accessible sans authentification |
| Mode Preview | Cookie sanity-preview requis pour voir les drafts |
9.2. Validation des entrées
Section titled â9.2. Validation des entrĂ©esâNon applicable (pas de paramĂštres dâentrĂ©e).
9.3. En-tĂȘtes de sĂ©curitĂ©
Section titled â9.3. En-tĂȘtes de sĂ©curitĂ©âNon implĂ©mentĂ© dans cette route (Ă configurer via Middleware Cloudflare).
10. Débogage et troubleshooting
Section titled â10. DĂ©bogage et troubleshootingâ10.1. ProblĂšmes courants
Section titled â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â |
| Preview non fonctionnel | Cookie manquant | Vérifier le cookie sanity-preview |
| Erreur Sanity | Variables dâenvironnement manquantes | VĂ©rifier SANITY_PROJECT_ID, SANITY_DATASET |
10.2. Logs et monitoring
Section titled â10.2. Logs et monitoringâ# Logs de dĂ©veloppementnpm run dev
# Vérification des typesnpx astro check10.3. Tests manuels
Section titled â10.3. Tests manuelsâ# Test de la route en localcurl -I http://localhost:4321/welcome
# Test du mode previewcurl -I -b "sanity-preview=true" http://localhost:4321/welcome11. Bonnes pratiques
Section titled â11. Bonnes pratiquesâ11.1. Architecture
Section titled â11.1. Architectureâ- â DĂ©tection automatique du mode preview via cookie
- â Affichage conditionnel de la banniĂšre preview
- â Lien pour quitter la preview
11.2. Performance
Section titled â11.2. Performanceâ- â Pas de JavaScript inutile
- â HTML statique par dĂ©faut
11.3. Maintenance
Section titled â11.3. Maintenanceâ- â Tester le mode preview rĂ©guliĂšrement
- â VĂ©rifier lâintĂ©gration Sanity
12. Ăvolutions et roadmap
Section titled â12. Ăvolutions et roadmapâ12.1. AmĂ©liorations planifiĂ©es
Section titled â12.1. AmĂ©liorations planifiĂ©esâ- Configuration des headers de cache (no-store en preview)
- Ajout de structured data (JSON-LD)
- Personnalisation du design
12.2. Limitations connues
Section titled â12.2. Limitations connuesâ- â Pas de structured data (JSON-LD)
- â Headers de cache non configurĂ©s
- â Langue hardcodĂ©e en âfrâ
13. Ressources liées
Section titled â13. Ressources liĂ©esâ- Documentation Astro : Routing
- Fichiers concernés :
src/pages/welcome.astrosrc/lib/sanity.ts(getAmn)src/pages/api/preview.tssrc/pages/api/exit-preview.ts
14. Historique des modifications
Section titled â14. Historique des modificationsâ| Date | Version | Description | Auteur |
|---|---|---|---|
| 2026-09-15 | 1.0 | Création initiale | Devin |