Matrice de Dépendances - Phase 0
Date : 2026-09-04
Projet : Réarchitecture du Site Web (Vitrine, Blog, Portfolio, Documentation)
Version : 1.0
1. Vue d’ensemble des composants par couche
Section titled “1. Vue d’ensemble des composants par couche”Couche 01 : Contenu (L1)
Section titled “Couche 01 : Contenu (L1)”| Composant | Type | Fichier source | Description |
|---|---|---|---|
| author | Schéma Sanity (Document) | sanity-studio/schemas/author.ts |
Auteurs d’articles de blog |
| category | Schéma Sanity (Document) | sanity-studio/schemas/category.ts |
Catégories de blog |
| post | Schéma Sanity (Document) | sanity-studio/schemas/post.ts |
Articles de blog |
| project | Schéma Sanity (Document) | sanity-studio/schemas/project.ts |
Projets de portfolio |
| page | Schéma Sanity (Document) | sanity-studio/schemas/page.ts |
Pages de vitrine |
| hero | Bloc PageBuilder (Object) | sanity-studio/schemas/blocks/hero.ts |
Bloc hero pour pages |
| features | Bloc PageBuilder (Object) | sanity-studio/schemas/blocks/features.ts |
Bloc fonctionnalités |
| testimonials | Bloc PageBuilder (Object) | sanity-studio/schemas/blocks/testimonials.ts |
Bloc témoignages |
| cta | Bloc PageBuilder (Object) | sanity-studio/schemas/blocks/cta.ts |
Bloc call-to-action |
| richText | Bloc PageBuilder (Object) | sanity-studio/schemas/blocks/richText.ts |
Bloc texte riche |
| imageGallery | Bloc PageBuilder (Object) | sanity-studio/schemas/blocks/imageGallery.ts |
Bloc galerie d’images |
| seo | Objet utilitaire | sanity-studio/schemas/objects/seo.ts |
Métadonnées SEO |
| starlight-docs | Content Collection | src/content/docs/**/*.md |
Documentation technique |
Couche 02 : Présentation (L2)
Section titled “Couche 02 : Présentation (L2)”| Composant | Type | Fichier source | Description |
|---|---|---|---|
| index.astro | Route SSG | src/pages/index.astro |
Page d’accueil (vitrine) |
| blog/index.astro | Route SSG | src/pages/blog/index.astro |
Liste des articles de blog |
| blog/[slug].astro | Route SSG | src/pages/blog/[slug].astro |
Article de blog unitaire |
| portfolio/index.astro | Route SSG | src/pages/portfolio/index.astro |
Galerie de projets |
| contact.astro | Route SSR | src/pages/contact.astro |
Page de contact |
| api/exit-preview.astro | Route SSR | src/pages/api/exit-preview.astro |
Sortie du mode preview |
| MainLayout.astro | Layout | src/layouts/MainLayout.astro |
Layout principal |
| BlogLayout.astro | Layout | src/layouts/BlogLayout.astro |
Layout blog |
| getSanityClient() | Utilitaire | src/lib/sanity.ts |
Client Sanity conditionnel |
| sanity-typegen | Générateur de types | src/types/sanity.d.ts |
Types TypeScript générés |
| Pagefind | Moteur de recherche | Intégration build | Indexation unifiée |
Couche 03 : Backend (L3)
Section titled “Couche 03 : Backend (L3)”| Composant | Type | Fichier source | Description |
|---|---|---|---|
| middleware | Worker Middleware | services/middleware/src/index.ts |
Middleware global Cloudflare |
| form-handler | Worker HTTP | services/form-handler/src/index.ts |
Traitement formulaires |
| cms-webhook-receiver | Worker HTTP | services/cms-webhook-receiver/src/index.ts |
Récepteur webhooks Sanity |
| media-upload | Worker HTTP | services/media-upload/src/index.ts |
Génération URLs présignées |
| media-cleanup | Worker Cron | services/media-cleanup/src/index.ts |
Nettoyage médias orphelins |
| sanity-backup | Worker Cron | services/sanity-backup/src/index.ts |
Sauvegarde dataset Sanity |
| submissions-queue | Queue Binding | Cloudflare Queue | File d’attente formulaires |
| webhook-lock-kv | KV Binding | Cloudflare KV | Lock debounce webhook |
| medias-r2 | R2 Bucket | Cloudflare R2 | Stockage médias |
| backups-r2 | R2 Bucket | Cloudflare R2 | Stockage backups |
2. Matrice des dépendances techniques
Section titled “2. Matrice des dépendances techniques”Légende
Section titled “Légende”- → : Dépendance directe (A dépend de B)
- ⇢ : Dépendance indirecte ou optionnelle
- [ ] : Dépendance au build time
- ( ) : Dépendance au runtime
Dépendances L1 → L2
Section titled “Dépendances L1 → L2”| Composant L1 | Dépend de L2 | Type | Description |
|---|---|---|---|
| author | - | - | Schéma autonome |
| category | - | - | Schéma autonome |
| post | author, category | Référence | Référence vers auteur et catégories |
| project | - | - | Schéma autonome |
| page | hero, features, testimonials, cta, richText, imageGallery | Composition | PageBuilder utilise les blocs |
| hero | - | - | Bloc autonome |
| features | - | - | Bloc autonome |
| testimonials | - | - | Bloc autonome |
| cta | - | - | Bloc autonome |
| richText | - | - | Bloc autonome |
| imageGallery | - | - | Bloc autonome |
| seo | - | - | Objet utilitaire |
| starlight-docs | - | - | Fichiers locaux autonomes |
Dépendances L2 → L1
Section titled “Dépendances L2 → L1”| Composant L2 | Dépend de L1 | Type | Description |
|---|---|---|---|
| index.astro | page | [ ] | Récupère les données de page Sanity |
| blog/index.astro | post, author, category | [ ] | Liste les articles avec métadonnées |
| blog/[slug].astro | post, author, category | [ ] | Récupère un article complet |
| portfolio/index.astro | project | [ ] | Liste les projets |
| contact.astro | - | - | Ne dépend pas de Sanity |
| api/exit-preview.astro | - | - | Ne dépend pas de Sanity |
| MainLayout.astro | - | - | Layout générique |
| BlogLayout.astro | - | - | Layout générique |
| getSanityClient() | - | - | Utilitaire autonome |
| sanity-typegen | Tous les schémas L1 | [ ] | Génère les types depuis les schémas |
| Pagefind | index.astro, blog/[slug].astro, starlight-docs | [ ] | Indexe le HTML généré |
Dépendances L2 → L3
Section titled “Dépendances L2 → L3”| Composant L2 | Dépend de L3 | Type | Description |
|---|---|---|---|
| index.astro | middleware | ( ) | Middleware injecte CSP et cookies preview |
| blog/[slug].astro | middleware | ( ) | Middleware injecte CSP et cookies preview |
| contact.astro | form-handler, middleware | ( ) | Soumet au form-handler, middleware CSP |
| api/exit-preview.astro | middleware | ( ) | Supprime le cookie posé par middleware |
| getSanityClient() | middleware | ( ) | Détecte le cookie preview du middleware |
Dépendances L3 → L1
Section titled “Dépendances L3 → L1”| Composant L3 | Dépend de L1 | Type | Description |
|---|---|---|---|
| middleware | - | - | Ne dépend pas directement de L1 |
| form-handler | - | - | Ne dépend pas de L1 |
| cms-webhook-receiver | post, project, page | ( ) | Déclenche rebuild sur publication |
| media-upload | - | - | Ne dépend pas de L1 |
| media-cleanup | post, project, page | ( ) | Compare les URLs Sanity avec R2 |
| sanity-backup | Tous les schémas L1 | ( ) | Exporte le dataset complet |
Dépendances L3 → L2
Section titled “Dépendances L3 → L2”| Composant L3 | Dépend de L2 | Type | Description |
|---|---|---|---|
| middleware | - | - | Ne dépend pas de L2 |
| form-handler | - | - | Ne dépend pas de L2 |
| cms-webhook-receiver | Build Astro | ( ) | Déclenche le build du site Astro |
| media-upload | - | - | Ne dépend pas de L2 |
| media-cleanup | - | - | Ne dépend pas de L2 |
| sanity-backup | - | - | Ne dépend pas de L2 |
Dépendances L3 → L3 (Inter-Workers)
Section titled “Dépendances L3 → L3 (Inter-Workers)”| Composant L3 | Dépend de L3 | Type | Description |
|---|---|---|---|
| middleware | - | - | Worker autonome |
| form-handler | submissions-queue | ( ) | Enqueue en cas d’échec CRM |
| cms-webhook-receiver | webhook-lock-kv | ( ) | Utilise KV pour debounce |
| media-upload | medias-r2 | ( ) | Génère URLs présignées pour R2 |
| media-cleanup | medias-r2 | ( ) | Lit et supprime dans R2 |
| sanity-backup | backups-r2 | ( ) | Stocke les backups dans R2 |
3. Graphe des dépendances par Slice
Section titled “3. Graphe des dépendances par Slice”Slice 1 : Vitrine (page)
Section titled “Slice 1 : Vitrine (page)”page (L1) → hero, features, testimonials, cta, richText, imageGallery (L1) → seo (L1) → index.astro (L2) → MainLayout.astro (L2) → getSanityClient() (L2) → middleware (L3) [cookie preview]Slice 2 : Blog (post)
Section titled “Slice 2 : Blog (post)”post (L1) → author, category (L1) → seo (L1) → blog/index.astro (L2) → blog/[slug].astro (L2) → BlogLayout.astro (L2) → getSanityClient() (L2) → middleware (L3) [cookie preview] → Pagefind (L2) [indexation]Slice 3 : Portfolio (project)
Section titled “Slice 3 : Portfolio (project)”project (L1) → seo (L1) → portfolio/index.astro (L2) → MainLayout.astro (L2) → getSanityClient() (L2) → middleware (L3) [cookie preview]Slice 4 : Contact (form-handler)
Section titled “Slice 4 : Contact (form-handler)”contact.astro (L2) → MainLayout.astro (L2) → form-handler (L3) → submissions-queue (L3) → middleware (L3) [CSP]Slice 5 : Upload médias (media-upload)
Section titled “Slice 5 : Upload médias (media-upload)”media-upload (L3) → medias-r2 (L3) → Sanity Studio (L1) [intégration upload]Slice 6 : Webhook Sanity (cms-webhook-receiver)
Section titled “Slice 6 : Webhook Sanity (cms-webhook-receiver)”cms-webhook-receiver (L3) → webhook-lock-kv (L3) → Build Astro (L2) → post, project, page (L1)Slice 7 : Backup & Cleanup
Section titled “Slice 7 : Backup & Cleanup”media-cleanup (L3) → post, project, page (L1) → medias-r2 (L3)
sanity-backup (L3) → Tous les schémas L1 → backups-r2 (L3)Slice 8 : Documentation & Recherche
Section titled “Slice 8 : Documentation & Recherche”starlight-docs (L1) → Starlight (L2) → Pagefind (L2) [indexation]4. Analyse des dépendances critiques
Section titled “4. Analyse des dépendances critiques”Dépendances bloquantes (doivent être implémentées en premier)
Section titled “Dépendances bloquantes (doivent être implémentées en premier)”- sanity-typegen : Doit être configuré avant toute utilisation de types Sanity dans L2
- getSanityClient() : Utilitaire requis par toutes les routes L2 consommant Sanity
- middleware : Doit être déployé avant toute fonctionnalité preview
- MainLayout.astro : Layout de base requis par la plupart des pages
Dépendances cycliques (à éviter)
Section titled “Dépendances cycliques (à éviter)”- Aucune dépendance cyclique détectée dans l’architecture actuelle
- L’architecture en couches (L1 → L2 → L3) préserve la séparation des responsabilités
Points d’attention
Section titled “Points d’attention”- Pagefind : Dépend du HTML généré au build, donc doit être configuré après les routes SSG
- media-cleanup : Dépend de l’existence des schémas Sanity pour construire les requêtes GROQ
- cms-webhook-receiver : Dépend de l’existence du pipeline CI/CD pour déclencher les builds
5. Recommandations pour l’ordre d’implémentation
Section titled “5. Recommandations pour l’ordre d’implémentation”Basé sur cette matrice, l’ordre recommandé est :
- Infrastructure de base : getSanityClient(), MainLayout.astro, middleware
- Slice 1 (Vitrine) : page + blocs + index.astro
- Slice 2 (Blog) : author, category, post + routes blog
- Slice 3 (Portfolio) : project + route portfolio
- Slice 6 (Webhook) : cms-webhook-receiver (pour activer le rebuild automatique)
- Slice 4 (Contact) : form-handler + contact.astro
- Slice 5 (Upload) : media-upload + intégration Sanity Studio
- Slice 7 (Maintenance) : media-cleanup + sanity-backup
- Slice 8 (Documentation) : starlight-docs + Pagefind unifié
Cet ordre respecte les dépendances identifiées et permet d’avoir un Golden Path fonctionnel rapidement (Slices 1, 2, 6 + Preview).
Historique des modifications
| Date | Version | Description | Auteur |
|---|---|---|---|
| 2026-09-04 | 1.0 | Création initiale de la matrice de dépendances | AMN |