Configuration Astro Globale
Type de ressource : Configuration Framework Astro
Fichier source :apps/web/astro.config.mjs
Statut : Actif
1. Vue dâensemble
Section titled â1. Vue dâensembleâ1.1. Description
Section titled â1.1. DescriptionâConfiguration principale dâAstro pour le site web. Configure le mode de rendu SSR, lâadaptateur Cloudflare, et les intĂ©grations (Sanity, Starlight, MDX, Sitemap, Tailwind).
1.2. Objectif
Section titled â1.2. Objectifâ- Configurer le mode de rendu SSR (Server-Side Rendering) pour lâapplication
- IntĂ©grer lâadaptateur Cloudflare pour le dĂ©ploiement sur Cloudflare Workers
- Configurer les intégrations principales (Sanity CMS, Starlight, MDX, Sitemap)
- Configurer Tailwind CSS via Vite plugin
1.3. PérimÚtre concerné
Section titled â1.3. PĂ©rimĂštre concernĂ©â- Mode de rendu : Hybrid (static par dĂ©faut, SSR Ă la demande via
prerender = false) - Adaptateur : Cloudflare
- Intégrations actives : Sanity, Starlight, MDX, Sitemap, Tailwind CSS
- Environnements : Development, Production
2. Configuration principale
Section titled â2. Configuration principaleâ2.1. Mode de sortie
Section titled â2.1. Mode de sortieâexport default defineConfig({ output: 'server', // Hybrid : static par dĂ©faut, SSR Ă la demande via prerender = false session: false,});Rationale : Le mode server avec lâadaptateur Cloudflare permet le rendu hybride : les pages sont prĂ©-rendues en static par dĂ©faut (prerender = true), et le rendu dynamique (SSR) est activĂ© Ă la demande via export const prerender = false sur les pages spĂ©cifiques. session: false indique que lâapplication nâutilise pas le systĂšme de sessions dâAstro.
2.2. Adaptateur Cloudflare
Section titled â2.2. Adaptateur Cloudflareâimport cloudflare from '@astrojs/cloudflare';
export default defineConfig({ adapter: cloudflare({ imageService: 'passthrough', prerenderEnvironment: 'node', }),});Rationale : Lâadaptateur Cloudflare est nĂ©cessaire pour dĂ©ployer lâapplication SSR sur Cloudflare Workers. imageService: 'passthrough' indique que le service dâimages est configurĂ© sĂ©parĂ©ment. prerenderEnvironment: 'node' permet le prerendering en environnement Node pendant le build.
2.3. Variables dâenvironnement
Section titled â2.3. Variables dâenvironnementâ| Variable | Description | Obligatoire | Valeur par dĂ©faut |
|---|---|---|---|
SANITY_PROJECT_ID |
ID du projet Sanity | â | - |
SANITY_DATASET |
Nom du dataset | â | - |
SANITY_API_READ_TOKEN |
Token de lecture (preview) | â (en preview) | - |
3. Intégrations
Section titled â3. IntĂ©grationsâ3.1. Tailwind CSS
Section titled â3.1. Tailwind CSSâimport tailwindcss from '@tailwindcss/vite';
export default defineConfig({ vite: { plugins: [ tailwindcss(), ], },});Configuration :
- Fichier :
tailwind.config.mjs(à vérifier) - ThÚme personnalisé : Non configuré (defaults Tailwind)
- Design tokens : Non configuré
3.2. Sanity CMS
Section titled â3.2. Sanity CMSâimport sanity from '@sanity/astro';
export default defineConfig({ integrations: [ sanity({ projectId: process.env.SANITY_PROJECT_ID, dataset: process.env.SANITY_DATASET, }), ],});Rationale : LâintĂ©gration Sanity permet de connecter le frontend Astro au CMS Sanity. Le client Sanity sera reconfigurĂ© dynamiquement dans src/lib/sanity.ts pour supporter le mode preview (useCdn: false, perspective: previewDrafts).
3.3. Starlight (Documentation)
Section titled â3.3. Starlight (Documentation)âimport starlight from '@astrojs/starlight';
export default defineConfig({ integrations: [ starlight({ title: 'Documentation', sidebar: [], }), ],});Configuration :
- Route interceptée : Non configurée (sidebar vide)
- Source de contenu :
src/content/docs/(à vérifier) - ThÚme personnalisé : Non configuré
3.4. MDX
Section titled â3.4. MDXâimport mdx from '@astrojs/mdx';
export default defineConfig({ integrations: [ mdx(), ],});Rationale : LâintĂ©gration MDX permet dâutiliser le format MDX (Markdown + JSX) dans les fichiers de contenu.
3.5. Sitemap
Section titled â3.5. Sitemapâimport sitemap from '@astrojs/sitemap';
export default defineConfig({ integrations: [ sitemap(), ],});Rationale : LâintĂ©gration Sitemap gĂ©nĂšre automatiquement un sitemap.xml pour le SEO.
3.6. Autres intégrations
Section titled â3.6. Autres intĂ©grationsâ| IntĂ©gration | RĂŽle | Configuration |
|---|---|---|
| Pagefind | Recherche (non configuré) | Non intégré |
| React | Composants React (non configuré) | Non intégré |
4. Build et déploiement
Section titled â4. Build et dĂ©ploiementâ4.1. Commandes npm
Section titled â4.1. Commandes npmâ// package.json (apps/web/package.json){ "scripts": { "dev": "astro dev", "start": "astro dev", "build": "astro build", "preview": "astro preview", "astro": "astro" }}4.2. Pipeline CI/CD
Section titled â4.2. Pipeline CI/CDâNon documentĂ© - le dĂ©ploiement est automatique via GitHub Actions (selon rĂšgles globales).
4.3. Variables dâenvironnement CI/CD
Section titled â4.3. Variables dâenvironnement CI/CDâ| Variable | Description | Obligatoire |
|---|---|---|
SANITY_PROJECT_ID |
ID du projet Sanity | â |
SANITY_DATASET |
Nom du dataset | â |
SANITY_API_READ_TOKEN |
Token de lecture | â |
5. Configuration du mode Preview
Section titled â5. Configuration du mode Previewâ5.1. DĂ©tection du mode Preview
Section titled â5.1. DĂ©tection du mode Previewâexport function getSanityClient(isPreview: boolean = false) { return createClient({ projectId, dataset, apiVersion: '2026-09-06', useCdn: !isPreview, perspective: isPreview ? 'previewDrafts' : 'published', token: isPreview ? readToken : undefined, });}5.2. RĂšgles importantes
Section titled â5.2. RĂšgles importantesâ- â
Le mode Preview utilise
useCdn: falseetperspective: 'previewDrafts' - â
Le token
SANITY_API_READ_TOKENest uniquement disponible en runtime - â La documentation Starlight nâest pas concernĂ©e par ce mĂ©canisme
- â
Les routes
/api/previewet/api/exit-previewgĂšrent le cookie de preview
6. Stratégie de cache
Section titled â6. StratĂ©gie de cacheâ6.1. Politique de cache par type de page
Section titled â6.1. Politique de cache par type de pageâNon documentĂ© - la stratĂ©gie de cache nâest pas explicitement configurĂ©e dans lâimplĂ©mentation actuelle.
6.2. Configuration dans les pages SSR
Section titled â6.2. Configuration dans les pages SSRâNon implĂ©mentĂ© - les headers Cache-Control ne sont pas explicitement configurĂ©s dans les pages.
7. Typage et génération de types
Section titled â7. Typage et gĂ©nĂ©ration de typesâ7.1. Sanity TypeGen
Section titled â7.1. Sanity TypeGenâImplĂ©mentĂ© pour le Studio - sanity-typegen est configurĂ© dans apps/studio/sanity.cli.ts pour gĂ©nĂ©rer automatiquement les types TypeScript depuis les schĂ©mas Sanity.
Configuration :
- Schema extraction : activé via
schemaExtraction.enabled: true - Typegen : activé via
typegen.enabled: true - Fichier de schéma généré :
apps/studio/schema.json - Fichier de types généré :
apps/studio/sanity.types.ts
Note : Sanity TypeGen est configurĂ© pour le Studio, pas pour le web app. Le web app nâutilise pas directement les types gĂ©nĂ©rĂ©s.
7.2. Commandes de génération
Section titled â7.2. Commandes de gĂ©nĂ©rationâ# GĂ©nĂ©ration du schĂ©ma Sanitycd apps/studionpx sanity schema extract
# Génération des types Sanitycd apps/studionpx sanity typegen generate7.3. Intégration CI/CD
Section titled â7.3. IntĂ©gration CI/CDâĂ implĂ©menter - la gĂ©nĂ©ration du schĂ©ma et des types doit ĂȘtre intĂ©grĂ©e dans le pipeline CI/CD du Studio avant le build.
8. Performance et optimisation
Section titled â8. Performance et optimisationâ8.1. Architecture en Ăźlots
Section titled â8.1. Architecture en ĂźlotsâNon documentĂ© - aucune stratĂ©gie dâhydratation dâĂźlots nâest explicitement configurĂ©e.
8.2. Optimisation des images
Section titled â8.2. Optimisation des imagesâ- â
Lâadaptateur Cloudflare utilise
imageService: 'passthrough' - â Cloudflare Images peut optimiser les images automatiquement
8.3. Core Web Vitals
Section titled â8.3. Core Web VitalsâNon documentĂ© - aucun objectif spĂ©cifique de Core Web Vitals nâest configurĂ©.
9. Sécurité
Section titled â9. SĂ©curitĂ©â9.1. En-tĂȘtes de sĂ©curitĂ©
Section titled â9.1. En-tĂȘtes de sĂ©curitĂ©âNon documentĂ© - les en-tĂȘtes de sĂ©curitĂ© ne sont pas explicitement configurĂ©s dans cette configuration.
9.2. Tokens et secrets
Section titled â9.2. Tokens et secretsâ- â
Les variables dâenvironnement sont chargĂ©es depuis
.envĂ la racine du monorepo - â Les secrets ne sont pas exposĂ©s dans le code
- â Le token Sanity est utilisĂ© uniquement en mode preview
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 |
|---|---|---|
| Build Ă©choue | Sanity API inaccessible | VĂ©rifier les variables dâenvironnement |
| Preview ne fonctionne pas | Cookie non détecté | Vérifier les routes /api/preview et /api/exit-preview |
| Images non optimisĂ©es | imageService: âpassthroughâ | Configurer le service dâimages Cloudflare |
| Starlight vide | Sidebar non configurée | Configurer la sidebar dans starlight |
10.2. Logs et monitoring
Section titled â10.2. Logs et monitoringâ# Logs de buildnpm run build
# Logs de développementnpm run dev
# Logs Cloudflare (production)wrangler tail10.3. Tests manuels
Section titled â10.3. Tests manuelsâ# Test localnpm run dev
# Test de buildnpm run buildnpm run preview
# Vérification des typesnpx astro check11. Bonnes pratiques
Section titled â11. Bonnes pratiquesâ11.1. Configuration
Section titled â11.1. Configurationâ- â
Utiliser le mode
serverpour le SSR - â Configurer lâadaptateur Cloudflare pour lâalignement L3
- â
Centraliser la configuration du client Sanity dans
src/lib/sanity.ts - â Documenter les changements de configuration dans ce fichier
11.2. Développement
Section titled â11.2. DĂ©veloppementâ- â
Charger les variables dâenvironnement depuis
.envĂ la racine - â Utiliser dotenv pour le dĂ©veloppement local
- â Valider les types TypeScript avant chaque commit
- â VĂ©rifier les Core Web Vitals avec Lighthouse
11.3. Déploiement
Section titled â11.3. DĂ©ploiementâ- â Utiliser GitHub Actions pour le dĂ©ploiement automatique
- â VĂ©rifier les variables dâenvironnement dans lâhĂ©bergeur
- â Tester le mode Preview en staging avant production
- â Surveiller les erreurs 5xx aprĂšs dĂ©ploiement
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 de la stratĂ©gie de cache par type de page
- Configuration des en-tĂȘtes de sĂ©curitĂ©
- Configuration de Starlight avec sidebar
- Intégration CI/CD pour la génération du schéma et des types Sanity
12.2. Limitations connues
Section titled â12.2. Limitations connuesâ- â La stratĂ©gie de cache nâest pas explicitement configurĂ©e
- â Starlight nâest pas configurĂ© (sidebar vide)
- â LâintĂ©gration CI/CD pour sanity-typegen nâest pas encore configurĂ©e
13. Ressources liées
Section titled â13. Ressources liĂ©esâ- Documentation Astro : Configuration Reference
- Documentation @astrojs/cloudflare : Cloudflare Adapter
- Documentation @sanity/astro : Sanity Integration
- Documentation @astrojs/starlight : Starlight Integration
- Fichiers concernés :
apps/web/astro.config.mjsapps/web/package.jsonapps/web/src/lib/sanity.ts.env(racine du monorepo)
14. Historique des modifications
Section titled â14. Historique des modificationsâ| Date | Version | Description | Auteur |
|---|---|---|---|
| 2026-09-15 | 1.0 | Création initiale | Devin |