Refresh docs source of truth and runbooks
This commit is contained in:
@@ -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.
|
||||
|
||||
@@ -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
|
||||
@@ -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
|
||||
|
||||
@@ -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`
|
||||
|
||||
@@ -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.
|
||||
|
||||
@@ -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
@@ -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 d’environnement:
|
||||
- `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 n’est 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.
|
||||
|
||||
@@ -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.
|
||||
|
||||
@@ -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.
|
||||
|
||||
|
||||
Reference in New Issue
Block a user