# Master TODO - Electron Rare OVH/Astro

Updated: 2026-03-14
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.
- Preview publique sous `/preview/`, production a la racine.
- Pages actives: `/`, `/formation/`, `/mentions-legales/`, `robots.txt`, `sitemap.xml`.
- Direction artistique active: `white-contrast`, claire par defaut, sans bouton de bascule public.
- Positionnement actif: systemes electroniques specifiques, avec familles visibles electronique, automatisme, energie, stockage et optimisation; pas limite a l'embarque, avec partenaires mobilises quand le projet devient multi-technique.
- Surface a maintenir: Hero, Approche, Cas concrets, photo strip, video strip, Missions, FAQ, Contact, footer.
- Endpoint lead production: `POST /api/submit-lead` (SSR -> Frappe CRM Lead, fallback optionnel `CRM_FALLBACK_URL`).

## 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`
- Theme/layout: `src/layouts/BaseLayout.astro`, `src/styles/global.css`, `src/styles/home-workbench.css`
- Canonical/base/deploiement: `src/lib/site.ts`, `scripts/build-astro-external.mjs`, `docs/ovh-ftp-preview-solution-2026-03-14.md`
- Tracking actif: `src/lib/tracking.ts` + emitters inline dans `src/layouts/BaseLayout.astro`
- Endpoint opérationnel lead: `src/pages/api/submit-lead.ts` + intégration formulaire `src/components/sections/Contact.astro`.

## Etat courant
- [x] Homepage OVH re-synchronisee dans le repo Astro.
- [x] Ancienne variante `studio/figma` sortie du runtime actif.
- [x] Bouton contraste retire du markup.
- [x] Theme blanc contraste force par defaut dans le layout source.
- [x] Reliquats CSS `.site-contrast-toggle` supprimes du source actif.
- [x] Build preview local `PUBLIC_SITE_URL=/preview/` repasse propre.
- [x] Validation tracking recalee sur le contrat Astro actif.
- [x] Workflow OVH enrichi avec verification HTTP publique post-deploiement.
- [x] Preview OVH publie et valide publiquement via GitHub Actions (`23094884980`).
- [x] Production OVH publiee et validee publiquement via GitHub Actions (`23095014692`).
- [x] Top bar mobile refondue via header partage + menu compact (`a3ccc1c`).
- [x] Preview OVH mis a jour avec la nouvelle top bar mobile et valide publiquement (`23095540371`).
- [x] Production OVH republiee avec la nouvelle top bar mobile et validee publiquement via GitHub Actions (`23096174775`).
- [x] Hero, about, footer et FAQ recales sur le positionnement `systemes electroniques specifiques`.
- [x] Signaux publics `disponible`, `freelance · France`, `UNSTABLE BY DESIGN` et exposition publique du lab retires du site.
- [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] `POST /api/submit-lead` actif et pointé vers Frappe CRM Lead en production (`electron-rare-site`).
- [x] Le hero blanc utilise maintenant un vrai visuel oscilloscope, avec recadrage et overlays recales pour la DA claire.
- [x] Preview OVH republie avec le hero oscilloscope recadre et le recadrage memoire/docs (`23099694984`).
- [x] Production OVH republiee avec le meme hero oscilloscope (`23099760106`).
- [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.
- [x] Les gros audits et plans de transition restants sont maintenant bannieres comme historiques pour eviter les faux redemarrages.
- [x] Les benchmarks, plans Figma, snapshots KPI et backlogs d'assets secondaires sont eux aussi recales comme archives historiques.
- [x] Les docs historiques sont maintenant deplacees physiquement dans `docs/archive/2026-03-legacy-plans/`.
- [ ] 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.
- [x] Verification technique locale reproduite avec le `User-Agent` du workflow (`electron-rare-gh-verify/1.0`) : `200` sur `/`, `/formation/`, `/mentions-legales/`.

## P0 - Bloc de sortie immediate
- [x] Builder le preview avec le theme blanc contraste (`PUBLIC_SITE_URL=https://www.lelectronrare.fr/preview/ npm run build:external`).
- [ ] Verifier le rendu de la home: top bar mobile, hero, approche, cas clients, missions, FAQ, footer.
- [ ] Verifier les surfaces medias: hero oscilloscope, photo strip, video strip.
- [ ] Verifier la section contact en version claire: tabs, textarea, formulaire, focus clavier, messages d'etat.
- [ ] Verifier `/formation/` et `/mentions-legales/` avec le meme theme clair.
- [x] Deployer le preview OVH et valider `https://www.lelectronrare.fr/preview/`.

## P1 - Validation live
- [x] Deployer la production a la racine avec la top bar mobile modernisee.
- [x] Republier preview et production avec le nouveau positionnement et suppression effective du repertoire `/lab/`.
- [x] Re-verifier en live les routes `/`, `/formation/`, `/mentions-legales/`, `/robots.txt`, `/sitemap.xml` via le check public GitHub Actions apres redeploiement.
- [x] Verifier que `https://www.lelectronrare.fr/lab/` ne fait plus partie de la surface publique servie.
- [ ] Verifier l'absence de retour vers l'ancienne homepage ou d'elements sombres residuels.
- [ ] Verifier le cadrage live du hero oscilloscope sur preview et production.
- [ ] Verifier les ancres actives: `#a-propos`, `#graphic-sprints-title`, `#faq`, `#contact`.
- [ ] Verifier la top bar mobile sur 390px et 768px: une seule ligne visible fermee, CTA `Contact` direct, menu stable, fermeture sur clic/Escape.
- [x] Documenter la contrainte de verification locale: `curl` sans `User-Agent` specifique retourne `403` sur `www` depuis cette machine.

## P2 - Tracking / SEO
- [ ] Valider GA4 Realtime et DebugView pour les events actuels:
  - `cta_hero_contact`
  - `outbound_linkedin_contact`
  - `outbound_email_contact`
  - `outbound_github_contact`
- [ ] Verifier les events auto:
  - `experiment_variant_exposed`
  - `engagement_scroll_depth`
  - `engagement_section_view`
  - `cwv_metric`
- [ ] Re-verifier canonical, OG, Twitter, robots, sitemap et `theme-color`.
- [ ] Soumettre ou recontroler Search Console sur la base de la prod actuelle OVH.

## P3 - Nettoyage et consolidation
- [x] Supprimer les blocs CSS morts `.site-contrast-toggle` encore presents dans `src/styles/global.css`.
- [x] Mettre en place un point d'entree documentaire actif et reclasser les runbooks les plus critiques.
- [ ] Nettoyer le reste des references legacy a l'interieur meme des archives secondaires quand ce sera utile.
- [ ] Mesurer LCP et budget media de la variante blanche en conditions reelles.
- [x] Archiver les plans anterieurs devenus purement historiques.

## Regles de pilotage
- Preview d'abord, production ensuite.
- Toute doc active doit parler du site Astro/OVH actuel, pas d'une ancienne homepage statique.
- Les ancres de reference sont celles du code actuel, pas `#projets`.
- Le theme de reference est clair/white-contrast par defaut.


## Deploiement SSR Photon (2026-03-19)
- [x] Creer un dockerfile multi-stage pour build + runtime serve (production legere).
- [x] Creer le compose site et la route Traefik associee.
- [x] Ajouter un .env.example d'exemple pour deploiement et activer FRAPPE_* + PUBLIC_SITE_URL.
  - [x] Route Traefik externe: https://www.lelectronrare.fr et lelectronrare.fr (source réelle: /root/zacus-stack/config/traefik/dynamic/electron-rare-site.yml)
- [x] Rebuilder/redeployer le service electron-rare-site sur port 4321.
- [x] Verifier routes: /, /404, /mentions-legales => 200.
- [x] Ajouter la page mentions-legales et la page 404.
- [x] Brancher le formulaire de contact vers Frappe CRM en production.

## Carte de flux lead (prod)

```mermaid
flowchart LR
  V[Visiteur] -->|Complète formulaire| F[Contact.astro /api/submit-lead]
  F -->|POST JSON| A[src/pages/api/submit-lead]
  A -->|POST| R[Frappe CRM Lead]
  A -->|fallback (si Frappe KO)| C[CRM custom legacy]
  R -->|Lead stocke| D[Dashboard CRM + pipeline]
```
