Ordre de Priorité des Slices (Tranches Verticales) - Phase 0
Date : 2026-09-04
Projet : Réarchitecture du Site Web (Vitrine, Blog, Portfolio, Documentation)
Version : 1.0
1. Principes d’ordonnancement
Section titled “1. Principes d’ordonnancement”L’ordre des slices respecte les principes suivants :
- Dépendances techniques : Un slice ne peut commencer que si ses prérequis techniques sont implémentés
- Golden Path优先 : Les composants du parcours minimal viable sont priorisés
- Valeur business incrémentale : Chaque slice doit livrer une fonctionnalité utilisable par l’utilisateur
- Complexité croissante : Commencer par les flux simples, puis aborder les flux complexes
2. Ordre validé des 8 Slices
Section titled “2. Ordre validé des 8 Slices”| Ordre | Slice (Tranche Verticale) | Priorité Golden Path | Complexité | Dépendances principales |
|---|---|---|---|---|
| 1 | Schéma Sanity “page” (vitrine) | ✅ Critique | Faible | Infrastructure de base |
| 2 | Schéma Sanity “post” (blog) | ✅ Critique | Moyenne | Slice 1 |
| 3 | Schéma Sanity “project” (portfolio) | ❌ Hors GP | Moyenne | Slice 1 |
| 4 | Formulaire de contact | ❌ Hors GP | Moyenne | Slice 1 |
| 5 | Upload de médias | ❌ Hors GP | Élevée | Slice 1, 2, 3 |
| 6 | Webhook Sanity | ✅ Critique | Moyenne | Slice 1, 2 |
| 7 | Backup & Cleanup | ❌ Hors GP | Élevée | Slice 1, 2, 3, 5 |
| 8 | Documentation & Recherche | ❌ Hors GP | Moyenne | Infrastructure de base |
3. Détail de chaque Slice
Section titled “3. Détail de chaque Slice”Slice 1 : Schéma Sanity “page” (vitrine)
Section titled “Slice 1 : Schéma Sanity “page” (vitrine)”Composants impliqués :
- L1 : Schéma
page, blocs PageBuilder (hero, features, testimonials, cta, richText, imageGallery), objetseo - L2 : Route
index.astro, LayoutMainLayout.astro, utilitairegetSanityClient() - L3 : Middleware Cloudflare (pour preview)
Justification de la priorité :
- C’est la page d’accueil, premier point d’entrée des utilisateurs
- Établit le pattern de base pour toutes les autres pages Sanity
- Requis pour le Golden Path
Prérequis :
- Infrastructure Astro configurée (astro.config.mjs)
- Projet Sanity créé avec les credentials
- Middleware Cloudflare déployé (pour preview)
Livrables :
- Schéma
pageavec PageBuilder - Schémas des 6 blocs PageBuilder
- Objet
seoutilitaire - Route
index.astro(SSG) - Layout
MainLayout.astro - Utilitaire
getSanityClient()avec détection preview - Mode Preview fonctionnel
Critères d’acceptation :
- La page d’accueil s’affiche correctement en production
- Le mode Preview permet de voir les brouillons
- Les blocs PageBuilder sont rendus correctement
- Les métadonnées SEO sont injectées
Slice 2 : Schéma Sanity “post” (blog)
Section titled “Slice 2 : Schéma Sanity “post” (blog)”Composants impliqués :
- L1 : Schémas
post,author,category, objetseo - L2 : Routes
blog/index.astro,blog/[slug].astro, LayoutBlogLayout.astro - L3 : Middleware Cloudflare (pour preview)
Justification de la priorité :
- Deuxième composant du Golden Path
- Démontre la gestion des contenus chronologiques et des références
- Requis pour tester l’indexation Pagefind
Prérequis :
- Slice 1 terminée (infrastructure de base, getSanityClient, layouts)
- Schémas utilitaires
authoretcategorycréés
Livrables :
- Schéma
author - Schéma
category - Schéma
postavec références vers author et category - Route
blog/index.astro(listing) - Route
blog/[slug].astro(détail) - Layout
BlogLayout.astro - Génération de types TypeScript (sanity-typegen)
Critères d’acceptation :
- La liste des articles s’affiche correctement
- Un article individuel s’affiche avec son contenu Portable Text
- Les références (auteur, catégories) sont résolues
- Le mode Preview fonctionne pour les articles
Slice 3 : Schéma Sanity “project” (portfolio)
Section titled “Slice 3 : Schéma Sanity “project” (portfolio)”Composants impliqués :
- L1 : Schéma
project, objetseo - L2 : Route
portfolio/index.astro - L3 : Middleware Cloudflare (pour preview)
Justification de la priorité :
- Hors Golden Path, mais suit le même pattern que Slice 2
- Complexité similaire au blog (sans références croisées)
- Peut être développé en parallèle de Slice 2 si ressources disponibles
Prérequis :
- Slice 1 terminée (infrastructure de base)
Livrables :
- Schéma
projectavec galerie d’images - Route
portfolio/index.astro - Composants de galerie/carrousel si nécessaire
Critères d’acceptation :
- La galerie de projets s’affiche correctement
- Les projets mis en avant (featured) sont mis en évidence
- Le mode Preview fonctionne
Slice 4 : Formulaire de contact
Section titled “Slice 4 : Formulaire de contact”Composants impliqués :
- L2 : Route
contact.astro(SSR) - L3 : Worker
form-handler, Queuesubmissions-queue, Turnstile (anti-spam)
Justification de la priorité :
- Hors Golden Path
- Introduit la logique métier backend et la gestion des formulaires
- Dépend de l’infrastructure SSR (Pages Functions)
Prérequis :
- Slice 1 terminée (MainLayout, infrastructure)
- Cloudflare Turnstile configuré
- CRM ou service d’emailing configuré
Livrables :
- Route
contact.astroavec validation Zod côté client - Worker
form-handleravec validation Turnstile - Queue
submissions-queuepour résilience - Intégration CRM ou service d’emailing
Critères d’acceptation :
- Le formulaire soumet correctement les données
- La protection anti-spam Turnstile fonctionne
- Les soumissions sont enregistrées dans le CRM
- Le fallback en Queue fonctionne en cas de panne CRM
Slice 5 : Upload de médias
Section titled “Slice 5 : Upload de médias”Composants impliqués :
- L1 : Intégration Sanity Studio avec upload custom
- L3 : Worker
media-upload, Bucket R2medias-r2, Cloudflare Stream (vidéos)
Justification de la priorité :
- Hors Golden Path
- Complexité élevée (URLs présignées, gestion R2/Stream)
- Dépend de l’existence des schémas Sanity (post, project, page)
Prérequis :
- Slices 1, 2, 3 terminées (schémas Sanity créés)
- Bucket R2 configuré
- Cloudflare Stream configuré (pour vidéos)
Livrables :
- Worker
media-upload(génération URLs présignées) - Intégration upload dans Sanity Studio
- Bucket R2
medias-r2avec organisation des dossiers - Support Cloudflare Stream pour les vidéos
Critères d’acceptation :
- L’upload d’images fonctionne depuis Sanity Studio
- L’upload de vidéos fonctionne via Stream
- Les fichiers sont stockés dans R2 avec la bonne structure
- Sanity ne stocke que les métadonnées et URLs
Slice 6 : Webhook Sanity
Section titled “Slice 6 : Webhook Sanity”Composants impliqués :
- L1 : Configuration webhooks dans Sanity Studio
- L3 : Worker
cms-webhook-receiver, KVwebhook-lock-kv, Pipeline CI/CD
Justification de la priorité :
- Critique pour le Golden Path : permet le rebuild automatique
- Dépend des slices 1 et 2 (contenu à rebuild)
- Complexité moyenne (validation HMAC, debounce)
Prérequis :
- Slices 1 et 2 terminées (contenu à publier)
- Pipeline CI/CD configuré avec deploy hook
- Sanity Studio configuré
Livrables :
- Worker
cms-webhook-receiveravec validation HMAC-SHA256 - KV
webhook-lock-kvpour debounce (2 min) - Configuration webhook dans Sanity Studio
- Intégration avec pipeline CI/CD (deploy hook)
- Alerting en cas d’échec de rebuild
Critères d’acceptation :
- La publication d’un article déclenche automatiquement le rebuild
- Le debounce évite les rebuilds multiples en cas d’éditions rapides
- Les signatures webhook sont validées cryptographiquement
- Les échecs de rebuild déclenchent une alerte
Slice 7 : Backup & Cleanup
Section titled “Slice 7 : Backup & Cleanup”Composants impliqués :
- L3 : Workers
media-cleanup(cron),sanity-backup(cron), Buckets R2
Justification de la priorité :
- Hors Golden Path
- Fonctionnalités de maintenance et résilience
- Complexité élevée (safety locks, streaming, cron triggers)
Prérequis :
- Slices 1, 2, 3 terminées (schémas Sanity pour requêtes GROQ)
- Slice 5 terminée (bucket R2 avec médias)
- Buckets R2 configurés
Livrables :
- Worker
sanity-backup(cron quotidien, streaming HTTP) - Worker
media-cleanup(cron hebdomadaire, safety locks) - Bucket R2
backups-r2avec lifecycle rules - Alerting en cas d’échec des jobs cron
Critères d’acceptation :
- Le backup Sanity s’exécute quotidiennement sans erreur
- Les backups sont stockés dans R2 avec rétention 30 jours
- Le cleanup des médias orphelins s’exécute hebdomadairement
- Les safety locks empêchent les suppressions massives accidentelles
- Les échecs de jobs déclenchent des alertes
Slice 8 : Documentation & Recherche
Section titled “Slice 8 : Documentation & Recherche”Composants impliqués :
- L1 : Content Collection
starlight-docs(fichiers Markdown/MDX) - L2 : Intégration Starlight, Pagefind (indexation unifiée)
Justification de la priorité :
- Hors Golden Path
- Dernier slice car indépendant des autres (fichiers locaux)
- Requiert une configuration Starlight spécifique
Prérequis :
- Infrastructure Astro configurée
- Slices 1 et 2 terminées (pour indexation Pagefind unifiée)
Livrables :
- Configuration Starlight dans Astro
- Structure de documentation Markdown/MDX
- Intégration Pagefind unifiée (indexe Sanity + Starlight)
- Interface de recherche globale avec badges par type
- Overrides CSS Starlight pour cohérence visuelle
Critères d’acceptation :
- La documentation Starlight s’affiche correctement
- La recherche Pagefind indexe le contenu Sanity et Starlight
- Les résultats de recherche sont distingués par type (Doc, Blog, Portfolio, Page)
- La cohérence visuelle est maintenue entre Starlight et le reste du site
4. Mapping avec le Golden Path
Section titled “4. Mapping avec le Golden Path”Le Golden Path (parcours minimal viable) est composé des éléments suivants :
| Composant Golden Path | Slice associé | Statut |
|---|---|---|
| Page d’accueil (vitrine SSG + Sanity) | Slice 1 | ✅ Critique |
| Article de blog (SSG + Sanity + Portable Text) | Slice 2 | ✅ Critique |
| Recherche Pagefind (indexant ces 2 pages) | Slice 2 + Slice 8 | ✅ Critique |
| Mode Preview (pour les contributeurs) | Slice 1 + Slice 2 | ✅ Critique |
| Webhook de rebuild (déclenchement automatique) | Slice 6 | ✅ Critique |
Stratégie recommandée :
- Implémenter les Slices 1, 2, et 6 en priorité absolue
- Stabiliser le Golden Path (tests E2E complets)
- Une fois le Golden Path validé, poursuivre avec les Slices 3, 4, 5, 7, 8
- Slice 8 peut être avancé si la documentation est prioritaire business
5. Templates de Fiches d’Objet
Section titled “5. Templates de Fiches d’Objet”Pour chaque slice, les fiches d’objets doivent être créées en utilisant les templates spécifiques situés dans la structure docs/L[x]/[platforme]/[resource_type]/ :
Templates par type de ressource
Section titled “Templates par type de ressource”| Type de ressource | Template (.template.md) | ObjectData (.objectData.md) |
|---|---|---|
| Sanity (L1) | ||
| Schéma Sanity | docs/L1_Contenu/sanity/schemas/schemas.template.md |
docs/L1_Contenu/sanity/schemas/schemas.objectData.md |
| Configuration API Sanity | docs/L1_Contenu/sanity/api/api.template.md |
docs/L1_Contenu/sanity/api/api.objectData.md |
| Configuration Studio | docs/L1_Contenu/sanity/studio/studio.template.md |
docs/L1_Contenu/sanity/studio/studio.objectData.md |
| Visual Editing / Preview | docs/L1_Contenu/sanity/visual-editing/visual-editing.template.md |
docs/L1_Contenu/sanity/visual-editing/visual-editing.objectData.md |
| Webhook Sanity | docs/L1_Contenu/sanity/webhooks/webhook.template.md |
docs/L1_Contenu/sanity/webhooks/webhook.objectData.md |
| Astro (L1) | ||
| Content Collection | docs/L1_Contenu/astro/content-collections/content-collections.template.md |
docs/L1_Contenu/astro/content-collections/content-collections.objectData.md |
| Cloudflare (L1) | ||
| Stockage R2/Stream | docs/L1_Contenu/cloudflare/storage/storage.template.md |
docs/L1_Contenu/cloudflare/storage/storage.objectData.md |
| Configuration Stream | docs/L1_Contenu/cloudflare/stream/stream.template.md |
docs/L1_Contenu/cloudflare/stream/stream.objectData.md |
| Astro (L2) | ||
| Configuration Astro | docs/L2_Presentation/astro/config/config.template.md |
docs/L2_Presentation/astro/config/config.objectData.md |
| Route Astro | docs/L2_Presentation/astro/routes/routes.template.md |
docs/L2_Presentation/astro/routes/routes.objectData.md |
| Layout Astro | docs/L2_Presentation/astro/layouts/layouts.template.md |
docs/L2_Presentation/astro/layouts/layouts.objectData.md |
| Composant Astro | docs/L2_Presentation/astro/components/components.template.md |
docs/L2_Presentation/astro/components/components.objectData.md |
| Pagefind (L2) | ||
| Indexation Pagefind | docs/L2_Presentation/pagefind/indexing/indexing.template.md |
docs/L2_Presentation/pagefind/indexing/indexing.objectData.md |
| API Pagefind | docs/L2_Presentation/pagefind/search-api/search-api.template.md |
docs/L2_Presentation/pagefind/search-api/search-api.objectData.md |
| UI Pagefind | docs/L2_Presentation/pagefind/search-ui/search-ui.template.md |
docs/L2_Presentation/pagefind/search-ui/search-ui.objectData.md |
| Cloudflare (L3) | ||
| Worker Cloudflare | docs/L3_Backend/cloudflare/workers/workers.template.md |
docs/L3_Backend/cloudflare/workers/workers.objectData.md |
| Binding Cloudflare | docs/L3_Backend/cloudflare/bindings/bindings.template.md |
docs/L3_Backend/cloudflare/bindings/bindings.objectData.md |
| Configuration Wrangler | docs/L3_Backend/cloudflare/config/config.template.md |
docs/L3_Backend/cloudflare/config/config.objectData.md |
| Pages Function | docs/L3_Backend/cloudflare/functions/functions.template.md |
docs/L3_Backend/cloudflare/functions/functions.objectData.md |
Cycle de développement
Section titled “Cycle de développement”Pour chaque objet d’un slice, suivre le cycle strict :
- DOC : Remplir les sections “Vue d’ensemble” et “Architecture” du template
- SPEC : Remplir les sections “Contrats d’Entrée/Sortie”
- CODE : Remplir les sections “Implémentation” avec le code réel
- TEST : Remplir les sections “Tests attendus” et exécuter les tests
- INTÉG : Remplir les sections “Intégration” et vérifier la cohérence
6. Estimation de durée par Slice
Section titled “6. Estimation de durée par Slice”| Slice | Estimation (1 développeur) | Notes |
|---|---|---|
| Slice 1 | 2-3 jours | Infrastructure + PageBuilder |
| Slice 2 | 2-3 jours | Références + Portable Text |
| Slice 3 | 1-2 jours | Similaire à Slice 2, sans références |
| Slice 4 | 2-3 jours | Backend + Turnstile + CRM |
| Slice 5 | 3-4 jours | R2 + Stream + URLs présignées |
| Slice 6 | 1-2 jours | Webhook + HMAC + Debounce |
| Slice 7 | 2-3 jours | Cron + Safety locks + Streaming |
| Slice 8 | 2-3 jours | Starlight + Pagefind unifié |
| Total | 15-23 jours | Sans tests E2E et documentation |
Note : Ces estimations incluent le cycle complet DOC → SPEC → CODE → TEST → INTÉG pour chaque slice.
7. Possibilités de parallélisation
Section titled “7. Possibilités de parallélisation”Si plusieurs ressources sont disponibles, certains slices peuvent être développés en parallèle :
| Groupe de parallélisation | Slices | Condition |
|---|---|---|
| Groupe A | Slice 1, Slice 3 | Infrastructure de base partagée |
| Groupe B | Slice 2, Slice 4 | Slice 1 terminée |
| Groupe C | Slice 5, Slice 6 | Slices 1, 2, 3 terminées |
| Groupe D | Slice 7, Slice 8 | Slices 1, 2, 3, 5 terminées |
Attention : La parallélisation nécessite une coordination rigoureuse pour éviter les conflits de merge et assurer la cohérence de l’architecture.
Historique des modifications
| Date | Version | Description | Auteur |
|---|---|---|---|
| 2026-09-04 | 1.0 | Création initiale de l’ordre des slices | AMN |