Refresh docs source of truth and runbooks

This commit is contained in:
Clément SAILLANT
2026-03-14 23:17:53 +00:00
parent d4913105cd
commit 024ce9a6a9
9 changed files with 246 additions and 688 deletions
+23 -398
View File
@@ -1,408 +1,33 @@
# AUDIT DOCUMENTS INDEX — Navigation & Overview
# Audit Documents Index - Historical Map
**Generated**: 2 mars 2026
**Total Pages**: 60+ pages audit + planning + execution
**Time to Read**: 5 min (quick) → 5 hours (comprehensive)
Updated: 2026-03-14
Status: historical
---
## Ce document n'est plus un point d'entree actif
## 🗺️ DOCUMENT DEPENDENCY MAP
Il correspond a une phase d'audit large ou:
- GitHub Pages etait encore traite comme surface produit
- le lab etait encore dans le perimetre public
- plusieurs variantes DA etaient encore en concurrence
```
┌─────────────────────────────────────┐
│ QUICK REFERENCE (1 page) │
│ ⭐ START HERE ← You are here │
│ Visual snapshot of status/findings │
│ 5-10 min read │
└──────────┬──────────────────────────┘
┌──────────┴──────────┐
▼ ▼
┌──────────────────────┐ ┌──────────────────────┐
│ EXECUTION IMMÉDIATE │ │ README NAVIGATION │
│ THIS WEEKEND │ │ (this file info) │
│ 2 pages, 10 min │ │ 2 pages, 10 min │
└──────────┬────────────┘ └──────────┬───────────┘
│ │
│ │
┌──────────┴──────────────────────────┴──────────┐
│ │
▼ │
┌─────────────────────────────┐ │
│ SPRINT PLAYBOOK │ │
│ (Commands & checklists) │ │
│ 8 pages, reference │ │
│ ← Use during execution │ │
└─────────────────────────────┘ │
│ │
└───────────────────────────────────────────────┤
┌──────────────────────────┐
│ COMPLETE AUDIT │
│ (40+ pages, reference) │
│ 40+ min read │
│ ← Deep dive whenever │
└──────────────────────────┘
```
## Point d'entree actif a utiliser
---
- `docs/README.md`
## 📚 FULL DOCUMENT LIBRARY
## Documents actifs aujourd'hui
### By Use Case
- `project-master-todos.md`
- `design-memory-2026-03-14-white-contrast.md`
- `da-01-implementation-backlog.md`
- `EXECUTION-IMMÉDIATE-2026-03-02.md`
- `SPRINT-PLAYBOOK-2026-03-02.md`
- `ovh-ftp-preview-solution-2026-03-14.md`
#### 👔 **For Decision-Makers / Project Lead**
| Document | Read | Purpose | Action |
|----------|------|---------|--------|
| [QUICK-REFERENCE](QUICK-REFERENCE-2026-03-02.md) | 10 min | Status snapshot + 3 critical actions | ✅ Start here |
| [EXECUTION-IMMÉDIATE](EXECUTION-IMMÉDIATE-2026-03-02.md) | 10 min | Business impact + effort+timeline | Plan sprints |
| [README-AUDIT](README-AUDIT-2026-03-02.md) | 10 min | Document navigation + sign-off | Approved execute |
## Role de l'archive
**Total time**: ~30 min → Decision ready
Les autres audits restent utiles pour:
- retrouver des hypotheses
- conserver des preuves de migration
- relire certains benchmarks
---
#### 💻 **For Development Team**
| Document | Read | Purpose | Use |
|----------|------|---------|-----|
| [QUICK-REFERENCE](QUICK-REFERENCE-2026-03-02.md) | 10 min | Understand priorities | Context |
| [EXECUTION-IMMÉDIATE](EXECUTION-IMMÉDIATE-2026-03-02.md) | 10 min | Understand this weekend plan | Sprint planning |
| [SPRINT-PLAYBOOK](SPRINT-PLAYBOOK-2026-03-02.md) | Reference | Commands, scripts, checklists | **During work** |
| [audit-plan-amelioration](audit-plan-amelioration-2026-03-02.md) | On-demand | Deep dive on specific issues | Troubleshooting |
**Total time**: 5+ hours (reference material, not all upfront)
---
#### 📊 **For Technical Audit / QA**
| Document | Read | Purpose |
|----------|------|---------|
| [audit-plan-amelioration](audit-plan-amelioration-2026-03-02.md) | 40+ min | Full audit (all domains) |
| [README-AUDIT](README-AUDIT-2026-03-02.md) | 10 min | Map of findings + references |
| [SPRINT-PLAYBOOK](SPRINT-PLAYBOOK-2026-03-02.md) | Reference | Validation checklists |
**Focus areas**:
- Performance (LCP/CLS/INP)
- SEO (technical, canonical, schema)
- GA4/Tracking
- Accessibility (WCAG)
- Responsive (3 breakpoints)
- Build/CI quality
---
## 📖 DOCUMENT DETAILS
### 1️⃣ **QUICK-REFERENCE-2026-03-02.md** ⭐ START HERE
```
├─ Purpose : 1-page visual snapshot + immediate actions
├─ Length : 1 page (ASCII art box format)
├─ Read time : 5-10 minutes
├─ Audience : Everyone (quick orientation)
└─ Contains
├─ Status snapshot (health, timeline)
├─ Critical findings (3 P0 issues)
├─ Before/after metrics
├─ Sprint timeline overview
├─ Immediate action items (checklist)
├─ Success criteria (gates)
└─ Links to all other docs
```
**When to read**: First thing, 5 minutes.
**How to use**: Share with team, discuss priorities.
---
### 2️⃣ **EXECUTION-IMMÉDIATE-2026-03-02.md**
```
├─ Purpose : Executive summary of 3 actions this weekend
├─ Length : 2 pages
├─ Read time : 10-15 minutes
├─ Audience : Decision-makers, sprint leads
└─ Contains
├─ 3 critical actions (this weekend)
│ ├─ 1. Optimize images (4h)
│ ├─ 2. Fix typecheck (1h)
│ └─ 3. Validate GA4 (1h)
├─ Impact summary (conversion metrics)
├─ Effort estimation vs gain
├─ Proposed timeline (Fri-Mon)
├─ Risk mitigation
└─ Next steps (week 2)
```
**When to read**: Before sprint planning.
**How to use**: Get buy-in, estimate resources.
---
### 3️⃣ **SPRINT-PLAYBOOK-2026-03-02.md**
```
├─ Purpose : Hands-on execution guide (commands + steps)
├─ Length : 8 pages
├─ Read time : Reference (use while working)
├─ Audience : Developers executing sprints
└─ Contains
├─ Sprint A (Performance, 48-72h)
│ ├─ A1: Image conversion (AVIF/WebP) with bash scripts
│ ├─ A2: HTML picture elements + srcset
│ ├─ A3: Responsive image variants (3 sizes)
│ ├─ A4: Local testing + Lighthouse
│ └─ A5: Image budget CI enhancement
├─ Sprint B (SEO/QA, 1 week)
│ ├─ B1: typecheck fix
│ ├─ B2: GA4 Realtime validation
│ └─ B3: Deploy + verify
├─ Sprint C (Long-term, 2 weeks)
│ ├─ C1: GSC setup + indexation monitor
│ └─ C2: Lighthouse baseline
├─ Post-deployment checklist
├─ Troubleshooting guide
└─ Common problems & solutions
```
**When to read**: Keep open while working.
**How to use**: Copy-paste commands, follow steps.
---
### 4️⃣ **audit-plan-amelioration-2026-03-02.md** (COMPLETE AUDIT)
```
├─ Purpose : Comprehensive audit (all domains) + recommendations
├─ Length : 40+ pages
├─ Read time : 40+ minutes (reference material)
├─ Audience : Technical team, long-term strategy
└─ Contains
├─ ÉTAT ACTUEL (Current metrics snapshot)
│ ├─ 10 key metrics (before/target)
│ └─ Image size breakdown (all 15 assets)
├─ 🔴 FINDINGS (6 issues, order sévérité)
│ ├─ P0: Performance LCP critical
│ ├─ P1: Double-hosting SEO risk
│ ├─ P1: CI fragile (typecheck)
│ ├─ P1: Image formats rigid
│ ├─ P2: JSON-LD limited
│ └─ P2: Preflight warnings
├─ ✅ FORCES (What's working)
│ └─ 7 strengths to preserve
├─ 📋 PLAN D'AUDIT DÉTAILLÉ (6 audit domains)
│ ├─ Audit 1: Performance (LCP/CLS/INP)
│ ├─ Audit 2: SEO technique
│ ├─ Audit 3: GA4/Tracking Realtime
│ ├─ Audit 4: Accessibilité WCAG
│ ├─ Audit 5: Responsive multi-device
│ └─ Audit 6: Build & versioning
├─ 🚀 PLAN D'AMÉLIORATION
│ ├─ SPRINT A (48-72h) → A1 images, A2 budget, A3 build
│ ├─ SPRINT B (1 week) → B1 typecheck, B2 JSON-LD, B3 robots, B4 GSC
│ └─ SPRINT C (2 weeks) → C1 indexation, C2 CrUX, C3 A/B test, C4 KPI
├─ 📈 ROADMAP EXÉCUTION (week-by-week timeline)
├─ 📋 CHECKLIST QUALITÉ (by domain)
├─ 🔄 MAINTENANCE CONTINUELLE (weekly/monthly tasks)
├─ 📚 RESSOURCES (links)
└─ 📝 EVIDENCE ARCHIVAGE (folder structure)
```
**When to read**: Reference lookup (don't read cover-to-cover upfront).
**How to use**: Look up specific findings, get implementation details.
---
### 5️⃣ **README-AUDIT-2026-03-02.md** (THIS NAVIGATION FILE)
```
├─ Purpose : Navigation + overview of audit documents
├─ Length : 2 pages
├─ Read time : 10 minutes
├─ Audience : Everyone (document guide)
└─ Contains
├─ Document dependency map (visual)
├─ Document details (what's in each)
├─ Quick start by role (decision-maker/dev/qa)
├─ Findings summary + key insights
├─ Immediate next steps
├─ File references (what to edit)
├─ Related documents (context)
├─ Suggested commit message
└─ Sign-off table
```
**When to read**: For navigation, understanding relationships.
**How to use**: Find right document for your role.
---
## 🎯 READ-BY-ROLE RECOMMENDATIONS
### 👨‍💼 **CEO / Product Owner (15 min)**
```
1. QUICK-REFERENCE → Status snapshot (10 min)
2. EXECUTION-IMMÉDIATE → Business impact (5 min)
→ Decision: Proceed with Sprint A? YES ✅
```
### 🏗️ **Project Lead / Scrum Master (30 min)**
```
1. QUICK-REFERENCE → Overview (10 min)
2. EXECUTION-IMMÉDIATE → Timeline & effort (10 min)
3. README-AUDIT → Document map (10 min)
→ Action: Plan sprint A for this weekend
→ Coordinate: Assign 1 dev for images, 0.5h for GA4, 1h for CI
```
### 👨‍💻 **Frontend Developer (2-3 hours active)**
```
1. QUICK-REFERENCE → Context (10 min)
2. EXECUTION-IMMÉDIATE → Weekend plan (10 min)
3. SPRINT-PLAYBOOK → Keep open while coding (reference)
4. audit-plan-amelioration → Lookup specific issues (on-demand)
→ Work: Follow A1 → A2 → A3 → A4 → A5 in Sprint A
```
### 🔍 **QA / Tester (intermittent)**
```
1. QUICK-REFERENCE → Success criteria (5 min)
2. SPRINT-PLAYBOOK → Validation checklists (reference)
3. audit-plan-amelioration → Audit section details (reference)
→ Verify: Each gate (1, 2, 3) passes before approving
```
### 📊 **Analytics / SEO Lead (1 hour)**
```
1. audit-plan-amelioration → SEO section (Audit 2) (20 min)
2. audit-plan-amelioration → GA4 section (Audit 3) (20 min)
3. SPRINT-PLAYBOOK → B4 GSC setup (20 min)
→ Prepare: GSC property, DebugView, KPI dashboard
```
---
## 📂 FILES TO MODIFY
Based on audit findings:
### Code Changes Required
| File | Type | Change | Sprint |
|------|------|--------|--------|
| [index.html](../index.html) | HTML | Add <picture> elements (lines 197-208) | A1 |
| [script.js](../script.js) | JS | Update asset paths for variants | A1 |
| [tsconfig.json](../tsconfig.json) | Config | Add `exclude: ["tmp/**"]` | B1 |
| [scripts/check-image-budget.mjs](../scripts/check-image-budget.mjs) | Script | Enhance limits | A2 |
| [scripts/generate-responsive-images.sh](../scripts/generate-responsive-images.sh) | Script | Create new (image resize) | A3 |
### Assets to Optimize
| Asset | Current | Target | Format | Sprint |
|-------|---------|--------|--------|--------|
| hero-pcb-routing-map.png | 3.1 MB | 160 KB | AVIF | A1 |
| proof-prototype-bench.png | 2.3 MB | 140 KB | AVIF | A1 |
| *-1440.avif (new) | — | 180 KB | Responsive | A3 |
| *-768.avif (new) | — | 100 KB | Responsive | A3 |
| *-390.avif (new) | — | 80 KB | Responsive | A3 |
### New Directories
```
public/assets/da/openai/optimized/ # Converted images
artifacts/audit-2026-03-02/ # Evidence archiving
├─ perf/
├─ seo/
├─ tracking/
├─ a11y/
└─ responsive/
```
---
## ✅ QUICK START SCRIPT
Copy-paste to get started:
```bash
#!/bin/bash
# Setup audit documentation
cd /Users/cils/Documents/Lelectron_rare/electron-rare.github.io
# 1. Read quick reference (mandatory)
open docs/QUICK-REFERENCE-2026-03-02.md
# 2. Read execution plan (mandatory)
open docs/EXECUTION-IMMÉDIATE-2026-03-02.md
# 3. Keep playbook ready (reference during work)
open docs/SPRINT-PLAYBOOK-2026-03-02.md
# 4. Install tools
brew install imagemagick libwebp
# 5. Create optimization directory
mkdir -p public/assets/da/openai/optimized
mkdir -p artifacts/audit-2026-03-02/perf seo tracking a11y responsive
# 6. Ready to start Sprint A!
echo "✅ Audit documents ready. See QUICK-REFERENCE for next steps."
```
---
## 🔗 RELATED DOCUMENTS (CONTEXT)
**Project Context**:
- [project-master-todos.md](project-master-todos.md) — Overall roadmap
- [creative-direction-brief.md](../notes-interne/creative-direction-brief.md) — Design
- [acquisition-seo-plan.md](acquisition-seo-plan.md) — GA4 strategy
**Technical Reference**:
- [site-github-pages-architecture.md](../architecture/site-github-pages-architecture.md) — Setup
- [da-progress-log-2026-03-02.md](da-progress-log-2026-03-02.md) — Latest progress
---
## 📝 SAMPLE COMMIT MESSAGE
When pushing audit documents:
```
docs: add comprehensive audit & improvement plan (2026-03-02)
✅ Added audit documentation set:
- QUICK-REFERENCE (1-page visual snapshot)
- EXECUTION-IMMÉDIATE (3 critical actions this weekend)
- SPRINT-PLAYBOOK (8 pages, commands + checklists)
- audit-plan-amelioration (40+ page complete audit)
- README-AUDIT (navigation guide)
🎯 Key findings:
- P0: Hero LCP critical (6.4 MB images → target <700ms AVIF)
- P1: Build typecheck broken (fix: exclude tmp/ from tsconfig)
- P1: GA4 needs Realtime validation (DebugView test)
📈 Expected outcomes:
- Sprint A (48-72h): +35-45% conversion improvement
- Sprint B (1 week): All CI passing, SEO ready
- Sprint C (2 weeks): Production data baseline
🚀 Ready for execution
Start: docs/QUICK-REFERENCE-2026-03-02.md
Refs:
#electron-rare #audit #performance #seo #ga4
```
---
## 👋 FINAL NOTES
- **All documents ready to execute** ✅
- **No additional planning needed**
- **Effort clearly scoped** (10h+ across 3 sprints)
- **Success criteria defined** (3 gates)
- **Evidence archiving prepared**
**Next step**: Read QUICK-REFERENCE, decide Sprint A timeline, start work.
---
**Last updated**: 2 mars 2026, 20h15 UTC
**Status**: Ready for sprint execution
**Maintainer**: Audit documentation team
Mais ils ne doivent plus etre pris comme consignes d'execution produit.
+68
View File
@@ -0,0 +1,68 @@
# Docs README - Source de vérité
Updated: 2026-03-14
Status: active
Repo: `/home/zacus/electron-rare-preview-ovh`
## Etat réel du projet
- Site Astro publie sur OVH via GitHub Actions FTP
- Preview publique: `https://www.lelectronrare.fr/preview/`
- Production publique: `https://www.lelectronrare.fr/`
- Surface publique active: `/`, `/formation/`, `/mentions-legales/`, `robots.txt`, `sitemap.xml`
- Le lab n'est plus une surface publique produit
- Positionnement actif:
- systemes electroniques specifiques
- familles visibles: electronique, automatisme, energie, stockage, optimisation
- l'embarque reste une competence, pas le titre principal
- les projets multi-techniques s'appuient sur les partenaires adaptes
## Lire dans cet ordre
1. `project-master-todos.md`
2. `design-memory-2026-03-14-white-contrast.md`
3. `da-01-implementation-backlog.md`
4. `EXECUTION-IMMÉDIATE-2026-03-02.md`
5. `SPRINT-PLAYBOOK-2026-03-02.md`
6. `ovh-ftp-preview-solution-2026-03-14.md`
## Docs actives
- `project-master-todos.md`
- backlog court terme, priorites, etat reel
- `design-memory-2026-03-14-white-contrast.md`
- memoire DA et positionnement actif
- `da-01-implementation-backlog.md`
- backlog de consolidation design / UX / contenu
- `EXECUTION-IMMÉDIATE-2026-03-02.md`
- resume executif et ordre de sortie
- `SPRINT-PLAYBOOK-2026-03-02.md`
- commandes et checks operatoires
- `ovh-ftp-preview-solution-2026-03-14.md`
- runbook de deploy OVH FTP via GitHub Actions
- `migration-legacy-to-astro.md`
- regle de non-retour vers le legacy
## Docs historiques a ne plus traiter comme source de vérité
- `github-pages-deploy.md`
- `deploy-runbook-gh-ovh-2026-03-02.md`
- `acquisition-seo-plan.md`
- `INDEX-AUDIT-DOCUMENTS-2026-03-02.md`
- `README-AUDIT-2026-03-02.md`
- `QUICK-REFERENCE-2026-03-02.md`
- `dual-deployment-execution-plan.md`
- `implementation-plan-dual-hosting-2026-03-02.md`
- `da-progress-log-2026-03-02.md`
Ces documents restent utiles comme archive de contexte, mais ils ont ete ecrits a un moment ou:
- GitHub Pages etait encore traite comme prod active
- le lab etait encore public
- le positionnement etait plus etroit ou plus experimental
## Regles de mise à jour
- Toute nouvelle decision produit ou deploiement doit d'abord mettre a jour `project-master-todos.md`
- Toute decision de positionnement, DA ou surface publique doit mettre a jour `design-memory-2026-03-14-white-contrast.md`
- Toute instruction operatoire doit etre recalee dans `SPRINT-PLAYBOOK-2026-03-02.md`
- Toute doc qui devient trompeuse doit etre soit mise a jour, soit marquee comme historique
+30 -1
View File
@@ -2,6 +2,24 @@
Updated: 2026-03-14
Repo: `/home/zacus/electron-rare-preview-ovh`
Status: active
## Source de vérité
- index docs: `docs/README.md`
- pilotage: `docs/project-master-todos.md`
- memoire DA: `docs/design-memory-2026-03-14-white-contrast.md`
- deploy: `docs/ovh-ftp-preview-solution-2026-03-14.md`
## Etat de référence
- preview active: `https://www.lelectronrare.fr/preview/`
- production active: `https://www.lelectronrare.fr/`
- pages publiques: `/`, `/formation/`, `/mentions-legales/`
- `lab` non public: attendu en `404` sur `/preview/lab/` et `/lab/`
- positionnement actif:
- systemes electroniques specifiques
- electronique, automatisme, energie, stockage, optimisation
## Sprint A - Theme clair
@@ -28,6 +46,7 @@ PUBLIC_SITE_URL=https://www.lelectronrare.fr/preview/ npm run build:external
- pas de `Mode contraste`
- pas de retour a l'ancienne DA sombre
- pas d'ancre legacy `#projets`
- pas de route publique `/lab/`
- focus visible sur FAQ et formulaire
- top bar mobile compacte, sans wrap sur plusieurs lignes au chargement
- CTA `Contact` visible hors menu sur mobile
@@ -52,11 +71,13 @@ PUBLIC_SITE_URL=https://www.lelectronrare.fr/preview/ npm run build:external
curl -fsSI -A 'electron-rare-gh-verify/1.0' https://www.lelectronrare.fr/preview/
curl -fsSI -A 'electron-rare-gh-verify/1.0' https://www.lelectronrare.fr/preview/formation/
curl -fsSI -A 'electron-rare-gh-verify/1.0' https://www.lelectronrare.fr/preview/mentions-legales/
curl -fsSI -A 'electron-rare-gh-verify/1.0' https://www.lelectronrare.fr/preview/lab/
```
### B4 - Etat courant
- white-contrast preview valide: `23094884980`
- top bar mobile preview validee publiquement: `23095540371`
- preview repositionne electronique/automatisme/energie et purge du lab public: `23098262445`
## Sprint C - Production
@@ -77,12 +98,14 @@ curl -fsSI -A 'electron-rare-gh-verify/1.0' https://www.lelectronrare.fr/preview
curl -fsSI -A 'electron-rare-gh-verify/1.0' https://www.lelectronrare.fr/
curl -fsSI -A 'electron-rare-gh-verify/1.0' https://www.lelectronrare.fr/formation/
curl -fsSI -A 'electron-rare-gh-verify/1.0' https://www.lelectronrare.fr/mentions-legales/
curl -fsSI -A 'electron-rare-gh-verify/1.0' https://www.lelectronrare.fr/lab/
curl -fsSI -A 'electron-rare-gh-verify/1.0' https://www.lelectronrare.fr/robots.txt
curl -fsSI -A 'electron-rare-gh-verify/1.0' https://www.lelectronrare.fr/sitemap.xml
```
### C4 - Etat courant
- production republiee avec le lot `Modernize Electron Rare mobile header`: `23096174775`
- production repositionnee electronique/automatisme/energie et purge du lab public: `23098335508`
- verification publique du workflow: OK
- verification locale `curl` avec `User-Agent` workflow: `200` sur `www`, `formation`, `mentions-legales`
- controle navigateur humain encore requis pour la validation UX finale
@@ -94,7 +117,6 @@ curl -fsSI -A 'electron-rare-gh-verify/1.0' https://www.lelectronrare.fr/sitemap
- `outbound_linkedin_contact`
- `outbound_email_contact`
- `outbound_github_contact`
- `cta_lab_interactif_open`
- `experiment_variant_exposed`
- `engagement_scroll_depth`
- `engagement_section_view`
@@ -107,6 +129,13 @@ curl -fsSI -A 'electron-rare-gh-verify/1.0' https://www.lelectronrare.fr/sitemap
- OG/Twitter
- `theme-color`
## Prochaines validations manuelles
- rendu visuel white-contrast sur home, formation, mentions
- ancres: `#a-propos`, `#graphic-sprints-title`, `#faq`, `#contact`
- header mobile en 390px et 768px
- absence de retour cache vers une ancienne homepage
## Definition de done
- preview publie et valide
- prod publiee et validee
+65 -90
View File
@@ -1,104 +1,79 @@
# Plan d'avancement Acquisition/SEO (7 jours + 30 jours)
# Plan Acquisition / SEO - Etat courant
Date de mise à jour: 2026-03-02
Perimetre: site statique GitHub Pages (`index.html`, `styles.css`, `script.js`) + module interactif `/lab/` (Vite + React Router hash)
Référence priorités globale: `docs/project-master-todos.md`
Updated: 2026-03-14
Status: active
Reference prioritaire: `docs/project-master-todos.md`
## Objectif
Transformer le site en base d'acquisition mesurable, sans backend, avec une home legere et un module interactif isole.
## Perimetre reel
## Avancement immédiat (P0/P1)
- site Astro sur OVH
- preview publique sous `/preview/`
- production publique a la racine
- pages publiques actives:
- `/`
- `/formation/`
- `/mentions-legales/`
- `robots.txt`
- `sitemap.xml`
- `lab` non public
### P0 (immédiat)
- [x] URL canonique fixée (`https://electron-rare.github.io/`)
- [x] `robots.txt` à la racine
- [x] `sitemap.xml` à la racine
- [x] `sitemap.xml` inclut `/` + `/lab/`
- [x] Contrat d'événements tracking implémenté (`data-track` + `dataLayer` enrichi)
- [x] Remplacer `GTM-REPLACE_ME` par l'ID GTM réel (`GTM-5SLM67QF`)
- [ ] Valider événements en GA4 Realtime
## Positionnement SEO a servir
### P1 (cette semaine)
- [x] `og:image` + `twitter:image` ajoutés
- [x] Asset social `assets/og-cover.jpg` créé (1200x630)
- [x] Copy contact orientée booking/collaboration + éléments de confiance
- [x] Ajustement responsive <=390px
- [x] Passe responsive complete 390/768/1024/1440 (home + lab)
- [x] Exécuter audit Lighthouse mobile/desktop et archiver résultats
- [x] Storybook build coverage P2 execute
- [ ] Vérifier aperçus sociaux en production (LinkedIn/Facebook debugger)
- systemes electroniques specifiques
- electronique
- automatisme
- energie
- stockage
- optimisation
- instrumentation
- projets multi-techniques avec partenaires
### P2 (mois)
- [ ] Expériences CTA (texte/ordre LinkedIn/Malt)
- [ ] Revue snippets SEO par itération
- [ ] Dashboard acquisition hebdo (GA4)
## Etat acquis
## Plan 7 jours (exécution)
- canonical production sur `https://www.lelectronrare.fr/`
- preview en `noindex,nofollow,noarchive`
- sitemap public sans `/lab/`
- metadata OG/Twitter recalees sur le positionnement actuel
- tracking nettoye sur les events actifs
### Jour 1 — Baseline
- Faire un snapshot Lighthouse mobile/desktop.
- Documenter baseline (SEO, accessibilité, perf, conversion).
## Events actifs a verifier en GA4
### Jour 2 — SEO technique
- Vérifier indexabilité (`robots`, `sitemap`, canonical, OG/Twitter).
- Contrôler cohérence des URLs (absolues pour SEO social).
### Jour 3 — Instrumentation GA4/GTM
- Brancher GTM réel.
- Publier conteneur.
- Vérifier événements critiques.
### Jour 4 — Conversion UX
- Ajuster wording CTA si besoin.
- Vérifier priorité LinkedIn (primaire) / Malt (secondaire).
### Jour 5 — Performance/A11y
- Corriger points Lighthouse restants.
- Vérifier navigation clavier et focus visibles.
### Jour 6 — QA déploiement
- Vérifier production live.
- Contrôler métriques Realtime GA4.
### Jour 7 — Stabilisation
- Corriger résiduels P1.
- Mettre à jour evidence + artifacts.
## Roadmap 30 jours
### Semaine 2
- Renforcer contenu SEO par section.
- Ajouter pages projets supplémentaires (si besoin).
### Semaine 3
- Tests A/B CTA (copy + ordre des liens contact).
- Analyse CTR par emplacement.
### Semaine 4
- Consolidation dashboard GA4.
- Revue Search Console et plan éditorial suivant.
## Contrat tracking (source de vérité)
Événements:
- `cta_hero_projets`
- `cta_hero_contact`
- `cta_hero_profile`
- `outbound_linkedin_contact`
- `outbound_malt_contact`
- `outbound_bandcamp_contact`
- `outbound_email_contact`
- `outbound_github_contact`
- `outbound_github_project_rtc_bl_phone`
- `outbound_github_project_zacus`
- `outbound_github_project_site`
- `outbound_github_lab_more`
- `cta_lab_interactif_open`
- `outbound_github_project_audio_battery`
- `experiment_variant_exposed`
- `engagement_scroll_depth`
- `engagement_section_view`
- `cwv_metric`
Compat legacy:
- `outbound_github_project`
- `outbound_github_contact`
## Priorites restantes
Paramètres:
- `event_category=engagement`
- `event_label=<event_name>`
- `destination=<domain|anchor>`
### P0
- verifier GA4 Realtime et DebugView sur la prod actuelle
- verifier OG/Twitter avec les outils de debug LinkedIn/Facebook
- verifier Search Console sur la prod actuelle
### P1
- renforcer les exemples concrets sur home et formation pour mieux porter les familles:
- electronique
- automatisme
- energie
- stockage
- optimisation
- produire une page ou bloc de preuve plus net sur les partenaires multi-techniques
### P2
- mesurer LCP et budget media sur la variante blanche publique
- consolider un suivi SEO simple:
- impressions
- clics
- CTR
- pages les plus vues
## Regles
- ne plus mesurer ni documenter `/lab/` comme URL SEO publique
- ne plus documenter de flux GitHub Pages comme prod active
- toute evolution SEO doit rester alignee sur `docs/design-memory-2026-03-14-white-contrast.md`
+1
View File
@@ -110,6 +110,7 @@ Consolider la DA actuelle en version claire, contraste blanc, sans reintroduire
## Backlog P1
- [ ] Supprimer les references documentaires a `#projets`, Malt, GitHub Pages static prod, dual-rail hero, contrast toggle.
- [x] Supprimer les references documentaires actives a `/lab/` comme surface publique produit.
- [x] Poser un index documentaire actif (`docs/README.md`) pour separer docs actives et docs historiques.
- [ ] Verifier les events `data-track` sur les CTA actifs uniquement.
- [x] Recaler `tracking:check` sur le contrat Astro actif pour sortir des faux positifs legacy.
- [x] Valider preview OVH.
+21 -39
View File
@@ -1,45 +1,27 @@
# Deploy Runbook — GH Pages + OVH SFTP (Home Carnet labo)
# Deploy Runbook - Historical Snapshot
Date: 2026-03-02
Updated: 2026-03-14
Status: historical / replaced
## Préflight
1. `npm run tracking:check`
2. `npm run build`
3. `npm run build:external` (inclut `/lab/`)
## Pourquoi ce fichier reste
## GH Pages
1. Vérifier branche de publication (repo settings Pages).
2. Pousser le commit de release.
3. Attendre pipeline GitHub Actions Pages.
4. Smoke test:
- `/`
- `/#a-propos`
- `/#projets`
- `/#contact`
- `/lab/`
Il documentait un ancien flux transitoire melangeant:
- GitHub Pages
- OVH
- references au `lab`
- anciennes ancres et anciennes hypotheses produit
## OVH mutualisé (SFTP)
1. Configurer secrets hors repo:
- `OVH_SFTP_HOST`
- `OVH_SFTP_USER`
- `OVH_SFTP_PORT` (défaut 22)
- `OVH_SFTP_PATH`
- mot de passe via prompt sécurisé
2. Déploiement:
- `npm run deploy:web:sftp`
3. Smoke test domaine OVH:
- home
- ancres
- assets hero
- `/lab/`
## Remplacement actif
## Checklist post-release
1. Aucun 404 sur assets `public/assets/da/openai/*`
2. CTA tracks présents (`data-track-event`)
3. Aucun overflow horizontal mobile
4. Contraste CTA conforme en mode normal + contraste
Utiliser maintenant:
- `docs/ovh-ftp-preview-solution-2026-03-14.md`
- `docs/SPRINT-PLAYBOOK-2026-03-02.md`
- `docs/project-master-todos.md`
## Rollback rapide
1. Re-déployer le dernier `dist` stable.
2. Revenir au commit précédent et repush.
3. Purger cache CDN/hébergement si nécessaire.
## Etat courant a retenir
- deploy preview: GitHub Actions `deploy-ovh-ftp.yml` avec `target=preview`
- deploy production: GitHub Actions `deploy-ovh-ftp.yml` avec `target=production`
- verification publique via `scripts/verify-public-target.mjs`
- `lab` non public
- source active du produit: `src/` Astro
+25 -154
View File
@@ -1,165 +1,36 @@
# Deploiement GitHub Pages (site statique + module Lab interactif)
# GitHub Pages Deploy - Historical Note
## Prerequis
- Depot Git connecte a GitHub (`git remote -v` non vide).
- Dependances installees:
- `npm install`
- `npm --prefix apps/lab-interactif install`
- Build module lab OK (`npm run lab:build`).
- Workflow present: `.github/workflows/deploy-pages.yml`.
- Fichiers de publication racine presents:
- `index.html`, `styles.css`, `script.js`
- `assets/` (dont `assets/og-cover.jpg` + `assets/brand/*`)
- `robots.txt`, `sitemap.xml`
- favicons (`favicon*`, `apple-touch-icon.png`)
Updated: 2026-03-14
Status: historical / do not use as active runbook
## Configuration GitHub Pages
1. GitHub > depot > **Settings** > **Pages**.
2. Dans **Build and deployment**:
- **Source**: `GitHub Actions`
3. Enregistrer.
## Ce document n'est plus la source de vérité
## Pipeline deploiement
Workflow: **Deploy Static Site + Lab to GitHub Pages**
Le projet n'est plus pilote comme:
- un site GitHub Pages en production
- un site public avec module `lab` expose
Le job build:
1. installe les deps racine
2. installe les deps du module `apps/lab-interactif`
3. build le module interactif dans `lab/`
4. prepare un artifact `.pages-dist/` (site + assets + lab)
5. deploye via `actions/deploy-pages`
La production active est maintenant:
- site Astro
- heberge sur OVH
- deploye via GitHub Actions FTP
- preview publique sous `/preview/`
- production publique a la racine
## Commandes locales utiles
- Home statique: `python3 -m http.server 4173`
- Lab dev: `npm run lab:dev`
- Lab build: `npm run lab:build`
- Tracking contract: `npm run tracking:check`
- Budget images critiques: `npm run image:budget`
- Storybook build: `npm run storybook:build`
- Preflight complet pages: `npm run preflight:pages`
- Build externe Astro (avec `/lab` inclus): `npm run build:external`
## Docs a utiliser a la place
## Déploiement externe Astro (Vercel/Netlify)
- `docs/README.md`
- `docs/project-master-todos.md`
- `docs/SPRINT-PLAYBOOK-2026-03-02.md`
- `docs/ovh-ftp-preview-solution-2026-03-14.md`
Objectif: publier `dist/` généré par Astro pour une version hors GitHub Pages.
## Rappel historique
- Préparer les variables denvironnement:
- `PUBLIC_SITE_URL=https://<votre-domaine-vercel-ou-netlify>/` (canonical + OG)
- éventuellement `EXTERNAL_SITE_URL` comme alias pratique
- Note: `npm run build:external` échoue volontairement si aucune de ces variables n'est définie (protection anti-canonical erroné).
- Exécuter: `npm run build:external`
- GitLab/Netlify et Vercel détectent automatiquement `vercel.json` / `netlify.toml` :
- `vercel`: `npm run build:external`
- `netlify`: `npm run build:external`
- Le build externe inclut:
- page Astro Home: `dist/index.html`
- page `dist/robots.txt` et `dist/sitemap.xml` (générés selon `PUBLIC_SITE_URL`)
- bundle Astro `_astro/`
- `dist/lab/` (copié après `lab:build`) si `lab/` existe
Cette note existe pour conserver la trace du passage:
- d'un modele GitHub Pages / static root
- vers un modele Astro + OVH FTP
## Notes de contrôle pour version externe
- Vérifier `https://<domaine-externe>/` après déploiement.
- Vérifier les ancres `/` : `#a-propos`, `#projets`, `#contact`.
- Vérifier que `canonical` correspond bien à `PUBLIC_SITE_URL`.
- Vérifier OG/Twitter preview via cache buster si nécessaire.
- Vérifier la présence de `/lab/` selon la stratégie produit.
Le `lab` reste un artefact de developpement interne, mais n'est plus une surface publique produit.
## Déploiement externe FTP (OVH)
## Regle
Hôte cible: `ftp://ecobsoleiq@ftp.cluster129.hosting.ovh.net:21/`
Utilisateur: `ecobsoleiq`
1. Build externe:
- `PUBLIC_SITE_URL=https://<ton-domaine-externe>/ npm run build:external`
2. Préparer les identifiants (hors repo):
- Copier `.env.ftp.example` vers `.env.ftp`
- Remplacer `FTP_PASS=...` par le vrai mot de passe
- Garder `FTP_REMOTE_DIR=/www` en FTP
- Ne pas réutiliser ici le chemin absolu SFTP ` /home/ecobsoleiq/www `
- `source .env.ftp` (ou exporter `FTP_PASS` / `FTP_HOST` en variable d'env)
3. Déploiement via script:
- `FTP_PASS='<ton_mot_de_passe>' FTP_REMOTE_DIR='/www' npm run deploy:ftp`
- ou, via fichier local: `source .env.ftp && npm run deploy:ftp`
- version one-shot avec build externe: `npm run deploy:web:ftp`
3. Vérifier:
- `https://<ton-domaine-externe>/`
- `https://<ton-domaine-externe>/#a-propos`
- `https://<ton-domaine-externe>/#projets`
- `https://<ton-domaine-externe>/#contact`
Notes:
- Le script utilise `lftp`; installe-le si absent: `brew install lftp` ou `apt-get install lftp`.
- Le script refuse de synchroniser vers `/` par sécurité (utiliser `/www`).
- Sur cet hébergement OVH, le chroot FTP fait que le docroot public se référence en FTP comme `/www`, alors qu'en SFTP il apparaît comme `/home/ecobsoleiq/www`.
- Mélanger les deux crée un faux arbre du type `/home/ecobsoleiq/home/ecobsoleiq/www/...`, hors docroot web.
- Si ton host pointe vers un sous-répertoire, ajuste `FTP_REMOTE_DIR` à partir de la racine FTP (ex: `/www/preview`).
- Aucune donnée sensible nest hardcodée dans le script (mot de passe via `FTP_PASS` uniquement).
Exemple 1-liner (via fichier local `.env.ftp`):
```bash
PUBLIC_SITE_URL='https://example.com/' \
FTP_URL='ftp://ecobsoleiq@ftp.cluster129.hosting.ovh.net:21/' \
npm run build:external && source .env.ftp && npm run deploy:ftp
```
Exemple 1-liner (sans `.env.ftp`):
```bash
FTP_PASS='***' \
PUBLIC_SITE_URL='https://example.com/' \
FTP_HOST=ftp.cluster129.hosting.ovh.net \
FTP_USER=ecobsoleiq \
npm run build:external && npm run deploy:ftp
```
## Stratégie de déploiement duale (si besoin business)
- Production: GitHub Pages reste la version publiée courante (`index.html`, `styles.css`, `script.js`, `/lab/`).
- Complément: version web hors GitHub possible via build Astro dédié (`npm run build:external`), puis publication sur hôte dédié (Netlify/Vercel/custom).
- Contrat immuable: ancres `#a-propos`, `#projets`, `#contact`, labels CTA, et paramètres GA4 conservés entre versions.
## Contrat tracking GTM + GA4
### Container
- GTM: `GTM-5SLM67QF`
### Evenements principaux
- `cta_hero_projets`
- `cta_hero_contact`
- `cta_hero_profile`
- `outbound_linkedin_contact`
- `outbound_malt_contact`
- `outbound_bandcamp_contact`
- `outbound_github_contact`
### Evenements GitHub dedies
- `outbound_github_project_rtc_bl_phone`
- `outbound_github_project_zacus`
- `outbound_github_project_site`
- `outbound_github_lab_more`
- `cta_lab_interactif_open`
### Compat historique
- Les liens GitHub critiques conservent `data-track-legacy` pour pousser aussi les evenements legacy.
### Parametres obligatoires
- `event_category=engagement`
- `event_label=<nom_evenement>`
- `destination=<domaine|ancre|path>`
## Verification post-deploiement
- [ ] `https://electron-rare.github.io/` charge correctement
- [ ] `https://electron-rare.github.io/lab/` charge correctement
- [ ] Ancres core home (`#a-propos`, `#projets`, `#contact`) OK
- [ ] `robots.txt` accessible
- [ ] `sitemap.xml` accessible (inclut `/` + `/lab/`)
- [ ] OG/Twitter preview OK
- [ ] GA4 Realtime voit les events clics
- [ ] GA4 DebugView confirme `event_label` + `destination`
- [ ] Search Console: sitemap soumis + indexation `/` et `/lab/`
## Notes de routage module C
- Le module lab utilise `HashRouter` pour compatibilite hebergement statique (GitHub Pages).
- Routes attendues:
- `/lab/` (overview)
- `/lab/#/signals`
- `/lab/#/prototypes`
Ne pas relancer de workflow ni de runbook GitHub Pages depuis ce document.
+7 -4
View File
@@ -1,14 +1,15 @@
# Migration Legacy -> Astro (Source of Truth)
Date: 2026-03-01
Status: Legacy **deprecated**
Status: active memo for no-return rule
## Décision
Le socle legacy HTML/CSS root est figé et archivé. La source de vérité active est désormais:
- contenu/page: `src/pages/index.astro`
- styles: `src/styles/global.css`
- SEO publics: `public/robots.txt`, `public/sitemap.xml`, `public/assets/og-cover.jpg`
- build/deploy: `dist/` via GitHub Actions
- styles: `src/styles/global.css`, `src/styles/home-workbench.css`
- SEO publics: `src/lib/site.ts`, `src/pages/robots.txt.ts`, `src/pages/sitemap.xml.ts`, `public/assets/og-cover.jpg`
- build/deploy: `dist/` via GitHub Actions FTP sur OVH
- pilotage documentaire: `docs/README.md`, `docs/project-master-todos.md`
## Archive legacy
Snapshot créé dans:
@@ -21,3 +22,5 @@ Snapshot créé dans:
## Règle no-drift
- Ne pas réactiver le legacy pour les changements produit.
- Toute évolution UI/SEO doit passer par Astro (`src/` + `public/`).
- Ne pas reintroduire GitHub Pages comme prod active dans les docs.
- Ne pas reexposer `lab` comme surface publique sans decision produit explicite.
+6 -2
View File
@@ -1,7 +1,7 @@
# Master TODO - Electron Rare OVH/Astro
Updated: 2026-03-14
Source of truth: this file for execution priorities, plus the current code in `src/`
Source of truth: this file for execution priorities, plus [docs/README.md](./README.md) and the current code in `src/`
## Scope actif
- Site Astro publie sur OVH via GitHub Actions FTP.
@@ -12,6 +12,7 @@ Source of truth: this file for execution priorities, plus the current code in `s
- Surface a maintenir: Hero, Approche, Cas concrets, photo strip, video strip, Missions, FAQ, Contact, footer.
## Verites de reference
- Point d'entree documentaire: `docs/README.md`
- Structure de page: `src/pages/index.astro`
- Header partage: `src/components/SiteHeader.astro`
- Sections actives: `src/components/sections/Hero.tsx`, `About.tsx`, `CaseStudies.tsx`, `GraphicSprints.tsx`, `Faq.astro`, `Contact.astro`
@@ -38,6 +39,8 @@ Source of truth: this file for execution priorities, plus the current code in `s
- [x] Preview OVH republie avec le positionnement `electronique · automatisme · energie · stockage · optimisation` (`23098262445`).
- [x] Production OVH republiee avec le meme positionnement (`23098335508`).
- [x] `https://www.lelectronrare.fr/lab/` et `https://www.lelectronrare.fr/preview/lab/` repondent maintenant `404`.
- [x] `docs/README.md` cree comme point d'entree et source de verite documentaire.
- [x] Runbooks et plans legacy les plus confus recales en mode historique ou remplaces par des versions actives.
- [ ] White-contrast pass verifiee visuellement sur preview.
- [ ] White-contrast pass verifiee visuellement sur production.
- [ ] Confirmer visuellement depuis un navigateur humain que `www` sert bien la nouvelle home sur tous les points d'acces.
@@ -77,7 +80,8 @@ Source of truth: this file for execution priorities, plus the current code in `s
## P3 - Nettoyage et consolidation
- [x] Supprimer les blocs CSS morts `.site-contrast-toggle` encore presents dans `src/styles/global.css`.
- [ ] Nettoyer les docs qui parlent encore de GitHub Pages static root, `#projets`, Malt, ou du toggle contraste.
- [x] Mettre en place un point d'entree documentaire actif et reclasser les runbooks les plus critiques.
- [ ] Nettoyer le reste des archives qui parlent encore de GitHub Pages static root, `#projets`, Malt, ou du toggle contraste.
- [ ] Mesurer LCP et budget media de la variante blanche en conditions reelles.
- [ ] Archiver les plans anterieurs devenus purement historiques.