Skip to content

Sprint 0 - Setup Initial

Durée estimée : 1-2 semaines
Objectif : Préparer l’infrastructure, les outils et les processus pour permettre le développement des slices
Statut : À faire


Le Sprint 0 est une phase de préparation dédiée à la mise en place de l’infrastructure, des outils de développement et des processus de travail. Aucun code métier n’est développé pendant ce sprint.

  • ✅ Infrastructure Cloudflare configurée et opérationnelle
  • ✅ Projet Sanity créé et accessible
  • ✅ Repository Git initialisé avec protections
  • ✅ CI/CD configuré et testé
  • ✅ Environnements (staging, production) séparés
  • ✅ Processus de travail défini et documenté
  • ✅ Guides de setup (Day 1) créés
  • Infrastructure Cloudflare (Workers, R2, Stream, Pages)
  • Projet Sanity avec credentials
  • Repository Git avec branches et protections
  • Pipeline CI/CD fonctionnel
  • Configuration Astro initiale
  • Configuration Wrangler initiale
  • Variables d’environnement définies
  • Secrets injectés
  • Documentation opérationnelle (runbooks, playbooks)
  • Guide Day 1 pour les nouveaux développeurs

Ressource Action Détails
Compte Cloudflare Créer Compte principal avec facturation
Sous-domaine Workers Configurer workers.votresite.com
Sous-domaine Pages Configurer staging.votresite.com, www.votresite.com
R2 Buckets Créer medias-r2, backups-r2
Stream Activer Bibliothèque vidéo créée
Turnstile Activer Site key et secret key
Terminal window
# Installation
npm install -g wrangler
# Authentification
wrangler login
# Vérification
wrangler whoami
Terminal window
# Buckets R2
wrangler r2 bucket create medias-r2 --env production
wrangler r2 bucket create medias-r2 --env staging
wrangler r2 bucket create backups-r2 --env production
wrangler r2 bucket create backups-r2 --env staging
# Queue
wrangler queues create submissions-queue --env production
wrangler queues create submissions-queue --env staging
# KV namespace
wrangler kv:namespace create WEBHOOK_LOCK --env production
wrangler kv:namespace create WEBHOOK_LOCK --env staging

Terminal window
# Installation CLI
npm install -g @sanity/cli
# Création du projet
sanity init
# Configuration
- Nom du projet : [votre-projet]
- Dataset : production, staging
- Role : Administrator
Variable Description Source
SANITY_PROJECT_ID ID du projet Sanity Dashboard Sanity
SANITY_DATASET Dataset (production/staging) Sanity CLI
SANITY_API_READ_TOKEN Token lecture API Tokens
SANITY_API_WRITE_TOKEN Token écriture API Tokens
SANITY_PREVIEW_SECRET Secret preview Généré aléatoirement
Terminal window
# Cloudflare Workers
wrangler secret put SANITY_PROJECT_ID --env production
wrangler secret put SANITY_DATASET --env production
wrangler secret put SANITY_API_READ_TOKEN --env production
wrangler secret put SANITY_PREVIEW_SECRET --env production
# Astro (via CI/CD ou .env)
# Voir §6

Terminal window
# Création du repository
git init
git remote add origin git@github.com:votre-org/votre-repo.git
# Branches initiales
git checkout -b main
git checkout -b develop
git checkout -b feature/slice-1-page-schema
Branche Protection Règles
main ✅ PR requis, reviews, tests passants
develop ✅ PR requis, reviews, tests passants
feature/* ❌ Aucune protection
## Description
[Bref description de la modification]
## Type de modification
- [ ] Bug fix
- [ ] New feature
- [ ] Breaking change
- [ ] Documentation update
## Slice concerné
- Slice 1 : Schéma Sanity "page"
- Slice 2 : Schéma Sanity "post"
- ...
## Checklist
- [ ] Code suit les standards du projet
- [ ] Tests unitaires ajoutés/mis à jour
- [ ] Tests d'intégration ajoutés/mis à jour
- [ ] Documentation mise à jour (fiches d'objets)
- [ ] ADR créée si nécessaire
- [ ] CI/CD passe
## Screenshots (si applicable)
[Ajouter screenshots]

.github/workflows/ci.yml
name: CI
on:
pull_request:
branches: [main, develop]
jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: '20'
- run: npm ci
- run: npm run test
- run: npm run lint
- run: npm run typecheck
.github/workflows/deploy-staging.yml
name: Deploy Staging
on:
push:
branches: [develop]
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: '20'
- run: npm ci
- run: npm run build
- run: npx wrangler pages deploy dist --project-name=votre-projet-staging
.github/workflows/deploy-production.yml
name: Deploy Production
on:
push:
branches: [main]
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: '20'
- run: npm ci
- run: npm run build
- run: npx wrangler pages deploy dist --project-name=votre-projet-production
Secret Description
CLOUDFLARE_ACCOUNT_ID ID du compte Cloudflare
CLOUDFLARE_API_TOKEN Token API Cloudflare
SANITY_PROJECT_ID ID du projet Sanity
SANITY_API_READ_TOKEN Token lecture Sanity
SANITY_API_WRITE_TOKEN Token écriture Sanity

Terminal window
# Création du projet
npm create astro@latest
# Installation des dépendances
npm install @astrojs/cloudflare @astrojs/sanity @astrojs/starlight tailwindcss
npm install -D @sanity/image-url sanity-typegen
import { defineConfig } from 'astro/config';
import cloudflare from '@astrojs/cloudflare';
import sanity from '@astrojs/sanity';
import starlight from '@astrojs/starlight';
import tailwind from '@astrojs/tailwind';
export default defineConfig({
output: 'hybrid',
adapter: cloudflare(),
integrations: [
sanity({
projectId: import.meta.env.SANITY_PROJECT_ID,
dataset: import.meta.env.SANITY_DATASET,
}),
starlight({
title: 'Documentation',
sidebar: [],
}),
tailwind(),
],
});
.env.example
SANITY_PROJECT_ID=your-project-id
SANITY_DATASET=production
SANITY_API_READ_TOKEN=your-read-token
SANITY_API_WRITE_TOKEN=your-write-token
SANITY_PREVIEW_SECRET=your-preview-secret
CLOUDFLARE_ACCOUNT_ID=your-account-id

name = "votre-projet"
main = "src/entrypoint"
compatibility_date = "2026-09-01"
[env.production]
vars = { ENVIRONMENT = "production" }
[env.staging]
vars = { ENVIRONMENT = "staging" }
Terminal window
# Production
wrangler secret put SANITY_PROJECT_ID --env production
wrangler secret put SANITY_DATASET --env production
wrangler secret put SANITY_API_READ_TOKEN --env production
wrangler secret put SANITY_PREVIEW_SECRET --env production
# Staging
wrangler secret put SANITY_PROJECT_ID --env staging
wrangler secret put SANITY_DATASET --env staging
wrangler secret put SANITY_API_READ_TOKEN --env staging
wrangler secret put SANITY_PREVIEW_SECRET --env staging

main (production)
↑
develop (staging)
↑
feature/slice-X (développement)

Règles :

  1. Créer une branche feature/slice-X depuis develop
  2. Développer la slice complète (DOC → SPEC → CODE → TEST → INTÉG)
  3. Créer une PR vers develop
  4. Review et tests
  5. Merge dans develop → déploiement staging
  6. Validation sur staging
  7. PR de develop vers main
  8. Review et tests
  9. Merge dans main → déploiement production

Code review :

  • Code suit les standards du projet
  • Tests unitaires ajoutés/mis à jour
  • Tests d’intégration ajoutés/mis à jour
  • Pas de secrets exposés
  • Performance acceptable

Documentation review :

  • Fiches d’objets créés/mis à jour
  • ADR créée si nécessaire
  • DAT mis à jour si nécessaire
  • Docs tree mis à jour
  1. Staging : Automatique sur merge dans develop
  2. Production : Automatique sur merge dans main avec approbation manuelle

Outil Usage Canaux
Slack / Discord Communication quotidienne #general, #dev, #alerts
Email Communications officielles -
Outil Usage Structure
Jira / Linear Tracking des slices Epic = Slice, Issue = Tâche
GitHub Projects Tracking des PRs Kanban par slice
Outil Usage Emplacement
Git (Markdown) Documentation technique Repository
Confluence / Notion Documentation équipe Externe

# Guide Day 1 - Setup Local
## Prérequis
- Node.js 20+
- Git
- VS Code
- Wrangler CLI
- Sanity CLI
## Étapes
1. Cloner le repository
2. Installer les dépendances
3. Configurer les variables d'environnement
4. Lancer le serveur de développement
5. Suivre le guide de contribution
# Guide Sprint 0 - Setup Initial
## Objectifs
- Infrastructure configurée
- Processus défini
- Équipe onboardée
## Checklist
- [ ] Infrastructure Cloudflare
- [ ] Projet Sanity
- [ ] Repository Git
- [ ] CI/CD
- [ ] Configuration Astro
- [ ] Configuration Wrangler
- [ ] Processus de travail
- [ ] Guides de setup

  • Cloudflare Workers : wrangler tail
  • Astro : Logs de build
  • Sanity : Dashboard logs
Type Outil Condition
CI/CD échoue GitHub Actions Pipeline échoué
Déploiement échoue Cloudflare Erreur de déploiement
Sanity webhook échoue Sanity Webhook échoué
Worker échoue Cloudflare Erreur 5xx

Avant de commencer Slice 1, vérifier :

  • Infrastructure Cloudflare opérationnelle
  • Projet Sanity accessible
  • Repository Git avec protections
  • CI/CD fonctionnel
  • Environnements séparés
  • Configuration Astro initiale
  • Configuration Wrangler initiale
  • Variables d’environnement définies
  • Secrets injectés
  • Processus de travail défini
  • Guides de setup créés
  • Équipe formée


Date Version Description Auteur
YYYY-MM-DD 1.0 Création initiale [Nom]