expria-frontend/docs/adr/001-cloudflare-pages-vs-vercel.md

68 lines
3.5 KiB
Markdown

# ADR 001 — Hébergement frontend : Cloudflare Pages
**Statut :** Accepté
**Date :** 2026-04-17
**Décideur :** Hermann
---
## Contexte
Le frontend Expria V2 doit être hébergé sur une plateforme de distribution statique. Trois options étaient envisagées : Vercel, Cloudflare Pages, et un VPS.
Contraintes à prendre en compte :
- L'audience cible est majoritairement en Afrique du Nord (Algérie, Maroc) et en Afrique centrale (Cameroun), avec une part importante au Canada. Presque 100% mobile.
- Le DNS de `expria.app` est actuellement géré chez Vercel.
- Le backend tourne déjà sur Render Frankfurt (EU).
- Le projet est maintenu par un fondateur non-technique, avec assistance IA.
- Les revenus sont encore nuls ou quasi nuls — les coûts d'infrastructure doivent rester à zéro.
## Options envisagées
### Option A — Vercel
- Avantages : DNS déjà configuré chez Vercel, auto-deploy GitHub natif sans config, edge nodes à Paris et Francfort.
- Inconvénients : tarif gratuit limité en bande passante si le produit décolle, verrouillage progressif dans l'écosystème Vercel (edge functions, middleware), fondateur a déjà exprimé un veto personnel contre Vercel suite à frictions passées.
### Option B — Cloudflare Pages
- Avantages : CDN mondial (287+ points de présence, y compris Casablanca et Le Caire), tier gratuit généreux (builds illimités, bande passante illimitée), cohérent avec la recommandation initiale d'`ARCHITECTURE.md` backend §2, découplé du DNS (on peut migrer le DNS sans changer l'hébergement).
- Inconvénients : déploiement via Wrangler CLI légèrement moins transparent que Vercel, auto-deploy GitHub nécessite une config initiale.
### Option C — VPS (dans la continuité du backend)
- Avantages : un seul fournisseur, contrôle total.
- Inconvénients : fait perdre tout le bénéfice CDN (les utilisateurs africains rapatrient les assets depuis Frankfurt), charge opérationnelle (nginx, certificats, mise à jour OS), gaspille les ressources VPS.
## Décision
**Cloudflare Pages** pour l'hébergement frontend.
Configuration cible :
- Source : dépôt GitHub `germannoff/expria-frontend`
- Build command : `npm run build`
- Output directory : `dist`
- Domaine : `expria.app` (CNAME depuis le DNS Vercel vers Cloudflare Pages, le DNS reste chez Vercel jusqu'à nouvel ordre)
- Déploiement : auto-deploy à chaque push sur `main` (configuration Cloudflare Pages ↔ GitHub)
## Conséquences
**Positives :**
- Coût zéro quelle que soit la montée en charge initiale.
- Latence optimisée pour l'audience cible (CDN proche des utilisateurs africains).
- Cohérent avec le document de référence backend `ARCHITECTURE.md` §2.
- Indépendance vis-à-vis de Vercel (DNS reste séparé de l'hébergement).
**Négatives :**
- Une commande CLI supplémentaire (`wrangler`) à connaître pour les déploiements manuels d'urgence. Mitigation : l'auto-deploy GitHub résout ce point à 95%.
- Si le fondateur doit un jour déployer manuellement sans accès au terminal, il devra passer par le dashboard Cloudflare Pages.
**À revisiter si :**
- L'audience bascule massivement vers un continent non couvert par Cloudflare (improbable).
- Cloudflare Pages impose des limites qui contraignent le produit (scénarios edge à étudier si on ajoute du server-side rendering plus tard).
## Références
- `ARCHITECTURE.md` backend §2 et §9 (recommandation initiale Cloudflare Pages)
- `TECH_DEBT.md` TD-04 (déploiement manuel — rendu caduc par la réactivation du compte GitHub le 2026-04-17)