5.7 KiB
5.7 KiB
Specification — Site web personnel adapte GitHub Pages
- Date: 2026-03-02
- Gate visee: G0 Spec Freeze
- Responsable (agent): PM/Spec
Objectif
Créer un site web personnel studio-grade, moderne et évolutif, basé sur Astro/TypeScript, prêt à être publié sur GitHub Pages via GitHub Actions.
Contexte
Le premier bootstrap était trop générique. Le besoin utilisateur est explicite: site personnel studio, orienté acquisition, avec DA forte et parcours conversion mesurable.
Stack technologique cible
- Primary stack: Astro + TypeScript + Tailwind 4 + Motion + Storybook + Radix/shadcn
- Secondary stack (si projet app plus lourd): React Router v7 + Vite + TS + Tailwind + Motion
Direction artistique validée
- Positionnement: Pro, codeur créatif, itérateur IA, savant fou orienté création électronique et invention de systèmes
- Direction: Editorial premium studio (
art_direction_style=editorial-premium) - Motion: Subtile et précise (
motion_intensity=subtle-precise) - Atmosphère: Chaude atelier (
color_atmosphere=warm-artistic) - Priorité: Équilibrée (
readability_priority=balanced) - Langage média: Mix abstrait + photo (
media_language=abstract-photo-mix) - Ton typo: Display + sans (
typography_voice=display-plus-sans) - Axe sprint DA-00: atelier premium (ivoire/encre/cuivre) + accents techniques mesurés
Règle de gouvernance:
- Toute variation de DA passe par mise à jour explicite de
notes-interne/creative-direction-brief.mdavant modification UI.
Structure cible (zoning DA-00)
Desktop 1440
- Header 2 niveaux (nav + bus posture studio)
- Hero + Identité
- Systèmes (Flow + Pipeline + À propos)
- Production (Projets + Timeline + Lab Notes)
- Conversion (preuves + contact)
- Footer (knowledge/protocoles/contact pro)
Mobile 390
- Hero + CTA primaire
- Identité + preuve courte
- Flow/Pipeline vertical
- Projets + Timeline
- Lab Notes
- Preuves + Contact
Contrats publics à préserver
Navigation/URL
- Ancres core inchangées:
#a-propos,#projets,#contact - Les labels UI sont libres tant que les IDs restent stables
- Module interactif publie sous
/lab/avec routing hash-compatible:/lab//lab/#/signals/lab/#/prototypes
Tracking GTM/GA4
- Événements conservés:
cta_hero_projetscta_hero_contactcta_hero_profileoutbound_linkedin_projectoutbound_linkedin_contactoutbound_malt_contactoutbound_bandcamp_projectoutbound_bandcamp_contactoutbound_github_projectoutbound_github_contact
- Événements GitHub dédiés (extension DA/P1):
outbound_github_project_rtc_bl_phoneoutbound_github_project_zacusoutbound_github_project_siteoutbound_github_lab_morecta_lab_interactif_open
- Paramètres obligatoires conservés:
event_category=engagementevent_labeldestination
SEO/public assets
public/robots.txtpublic/sitemap.xml- canonical + OG + Twitter
Exigences fonctionnelles
- Le site expose la page d'accueil
/viaindex.html(statique) et conserve une sortie publiable GitHub Pages. - Le site inclut une navigation ancrée core:
#a-propos,#projets,#contact. - Le site inclut un Hero à impact immédiat et proposition de valeur claire.
- Le site inclut sections système/production/contact cohérentes avec la structure cible.
- Le site conserve le contrat tracking GTM/GA4 existant.
- Les ressources SEO publiques sont servies via
public/. - Le module interactif
/lab/est implémenté en Vite + React Router et déployable indépendamment.
Exigences non-fonctionnelles
- Build statique sans backend runtime pour la home, avec bundle JS isolé pour
/lab/. - Responsive mobile/desktop.
- Accessibilité de base (focus visible, contrastes, structure sémantique).
- Performance cible Lighthouse mobile >= 90 et SEO = 100.
Matrice d’arbitrage DA vs conversion
| Conflit | Priorité | Règle |
|---|---|---|
| Effet visuel vs lisibilité CTA | Conversion | Conserver style global, simplifier zone CTA |
| Motion forte vs confort utilisateur | Accessibilité | Maintenir narration avec fallback reduced-motion |
| Densité graphique vs compréhension | Compréhension | Éclaircir le bloc contenu, garder texture en périphérie |
| Label créatif vs navigation | Navigation | Garder labels libres, conserver ancres core |
| Accent couleur vs contraste texte | Lisibilité | Ajuster contraste avant validation |
Critères d'acceptation (AC)
- AC1: Le site affiche une identité studio différenciante (pas un placeholder technique).
- AC2: Les ancres core fonctionnent (
#a-propos,#projets,#contact). - AC3: Le rendu mobile ne casse pas la grille et n’a pas d’overflow horizontal.
- AC4: Contrat GTM/GA4 inchangé et vérifiable.
- AC5: Storybook build passe avec sections clés couvertes.
- AC6: Déploiement GitHub Pages documenté et reproductible.
Non-objectifs
- Pas de blog dynamique.
- Pas d'injection CMS/API dans ce cycle.
- Pas de formulaire backend.
- Pas de migration complète de tout le site vers la stack secondaire (seul
/lab/est concerné).
Risques
- Branding incomplet si logos/médias finaux non validés.
- Régression conversion si style trop dominant localement.
Livrables DA-00
- Brief DA v1.3.0 verrouillé.
- Guidelines DA avec zoning + matrice arbitrage.
- Wireflow conversion desktop/mobile + user flow CTA.
- Backlog DA-01 décision-complet (mapping section/token/interaction).
TODO / Informations manquantes
- Source de vérité TODO:
docs/project-master-todos.md - TODO externe: valider GA4 Realtime/DebugView + conversions LinkedIn/Malt.
- TODO externe: Search Console + sitemap indexation.
- TODO externe: previews sociaux LinkedIn/Facebook.