ADR-001 (portfolio) — Générateur du site
Statut : accepté (2026-07-19)
Contexte
Le portfolio (besoin) est un site public, en lecture seule, sans logique serveur : pas de formulaire, pas de compte, contenu édité par fichiers au fil de l'eau. Les Should/Could (anglais, blog) doivent rester possibles sans refonte. Risque R2 : le site doit être redéployable n'importe où en minutes.
Comparatif pondéré
Question : avec quoi générer le site leonheu.fr ?
1. Filtre éliminatoire (licence libre)
| Option écartée | Raison |
|---|---|
| Wix, Squarespace, Webflow, Framer | Propriétaires (SaaS fermés) |
Écartés sans notation (libres mais hors sujet) : Next.js / Nuxt — frameworks d'applications SSR complets, surdimensionnés pour une vitrine statique ; WordPress — CMS dynamique avec base de données et surface d'attaque, à rebours du « zéro backend » du cadrage.
2. Critères et pondérations (total = 100)
| Critère | Poids | Pourquoi ce poids |
|---|---|---|
| Adéquation au besoin (statique, contenu par fichiers, i18n/blog possibles) | 30 | C'est le cœur du MVP et des évolutions prévues |
| Valeur d'apprentissage / CV pour moi | 20 | Objectif assumé du projet : le portfolio est aussi une vitrine de compétences |
| Compétences existantes / courbe d'apprentissage | 15 | Dev solo : il faut livrer, pas s'enliser |
| Déploiement et exploitation self-hosted (Coolify) | 15 | Doit s'insérer dans la chaîne CI/CD existante sans friction |
| Performance du site produit | 10 | Exigence LCP < 2 s mobile |
| Écosystème et pérennité | 10 | Le site vivra des années |
3. Candidats
| Candidat | Licence | Version évaluée |
|---|---|---|
| Astro | MIT | 7.x |
| Hugo | Apache-2.0 | 0.1xx |
| Eleventy | MIT | 3.x |
| Laravel (+ Blade) | MIT | 12.x |
4. Notation (1 à 5, justifiée)
| Critère (poids) | Astro | Hugo | Eleventy | Laravel |
|---|---|---|---|---|
| Adéquation (30) | 5 — statique pur, collections de contenu typées, i18n et blog natifs | 4 — très capable, templating moins souple pour du sur-mesure | 4 — flexible mais tout est à assembler | 2 — serveur dynamique pour un site sans logique serveur : surdimensionné |
| Valeur CV (20) | 5 — très demandé, complète le profil Laravel par du front moderne | 3 — templating Go peu transférable | 3 — niche respectée mais discrète | 2 — n'ajoute rien : je l'ai déjà |
| Compétences (15) | 3 — HTML/JS de base suffisent, syntaxe à apprendre mais douce | 2 — templating Go inconnu | 3 — JS simple | 5 — stack maîtrisée |
| Déploiement (15) | 5 — build → statique servi par nginx : pattern identique au portail docs | 5 — binaire unique, statique | 5 — statique | 3 — container PHP-FPM, plus lourd à exploiter et à sécuriser |
| Performance (10) | 5 — zéro JS par défaut | 5 — build et site ultra rapides | 5 — statique léger | 3 — bon, mais dynamique |
| Écosystème (10) | 4 — croissance forte, intégrations riches | 4 — mature, très stable | 3 — communauté plus petite | 5 — écosystème énorme |
| Score pondéré / 5 | 4,60 | 3,75 | 3,80 | 3,00 |
5. Recommandation
Astro. Le score le dit, mais surtout : c'est le seul candidat qui gagne sur les deux tableaux à la fois — le produit (statique parfait pour le besoin, i18n/blog prêts pour la suite) et le projet (apprendre un outil front moderne et recherché, complémentaire de Laravel plutôt que redondant). Ce que les chiffres ne captent pas : utiliser Laravel ici enverrait le message inverse de celui recherché — savoir choisir l'outil proportionné au problème est la compétence à démontrer. Laravel reste la stack de cœur pour les vraies applications à venir (l'app de coréen).
Décision
Astro 7 (licence MIT), site généré 100 % statique. Je l'ai validé le 2026-07-19 sur la base du comparatif ci-dessus.
Conséquences
- Site 100 % statique : image Docker
nginxminuscule, redéployable n'importe où (mitige R2), aucune surface d'attaque applicative. - Contenu en fichiers Markdown/données typés (« content collections ») : l'édition au fil de l'eau reste du simple texte versionné.
- Node.js requis au build (CI et poste de dev), pas en production.
- Courbe d'apprentissage Astro assumée — budgétée petite (site vitrine).