Skip to content

Matrice de Dépendances - Phase 0

Matrice de Dépendances - Phase 0

Documentation technique

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

Couche 01 : Contenu (L1)1/2

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

Couche 01 : Contenu (L1)2/2

Composant Type Fichier source Description
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)1/2

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

Couche 02 : Présentation (L2)2/2

Composant Type Fichier source Description
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)1/2

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

Couche 03 : Backend (L3)2/2

Composant Type Fichier source Description
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

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 → L21/2

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

Dépendances L1 → L22/2

Composant L1 Dépend de L2 Type Description
testimonials - - Bloc autonome
cta - - Bloc autonome
richText - - Bloc autonome
imageGallery - - Bloc autonome
seo - - Objet utilitaire
starlight-docs - - Fichiers locaux autonomes

Dépendances L2 → L11/2

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

Dépendances L2 → L12/2

Composant L2 Dépend de L1 Type Description
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

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

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

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)

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

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)

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)

project (L1)
→ seo (L1)
→ portfolio/index.astro (L2)
→ MainLayout.astro (L2)
→ getSanityClient() (L2)
→ middleware (L3) [cookie preview]

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)

media-upload (L3)
→ medias-r2 (L3)
→ Sanity Studio (L1) [intégration upload]

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

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

starlight-docs (L1)
→ Starlight (L2)
→ Pagefind (L2) [indexation]

4. Analyse des dépendances critiques

Dépendances bloquantes (doivent être implémentées en premier)

  1. sanity-typegen : Doit être configuré avant toute utilisation de types Sanity dans L2
  2. getSanityClient() : Utilitaire requis par toutes les routes L2 consommant Sanity
  3. middleware : Doit être déployé avant toute fonctionnalité preview
  4. MainLayout.astro : Layout de base requis par la plupart des pages

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

  • 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émentation1/3

Basé sur cette matrice, l’ordre recommandé est :

  1. Infrastructure de base : getSanityClient(), MainLayout.astro, middleware
  2. Slice 1 (Vitrine) : page + blocs + index.astro
  3. Slice 2 (Blog) : author, category, post + routes blog
  4. Slice 3 (Portfolio) : project + route portfolio

5. Recommandations pour l’ordre d’implémentation2/3

  1. Slice 6 (Webhook) : cms-webhook-receiver (pour activer le rebuild automatique)
  2. Slice 4 (Contact) : form-handler + contact.astro
  3. Slice 5 (Upload) : media-upload + intégration Sanity Studio
  4. Slice 7 (Maintenance) : media-cleanup + sanity-backup
  5. 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).

5. Recommandations pour l’ordre d’implémentation3/3

Historique des modifications

Date Version Description Auteur
2026-09-04 1.0 Création initiale de la matrice de dépendances AMN
Switch to normal mode

Contents