Aller au contenu

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 nginx minuscule, 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).