From b10ff2bc0b4dbcefe01a7eed9e6149e0aaafdc4d Mon Sep 17 00:00:00 2001 From: kayjaydee Date: Wed, 8 Apr 2026 18:29:39 +0200 Subject: [PATCH] =?UTF-8?q?docs(03):=20fix=20plan=20blockers=20=E2=80=94?= =?UTF-8?q?=20remove=20formation=20completely,=20cleanup=20legacy?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Remove PAGE-07 from requirements (formation deleted per D-19) - No redirect, /formation returns 404 naturally - Plan 04 now includes full legacy src/ cleanup - Update success criteria: 7 routes, SMTP instead of EmailJS Co-Authored-By: Claude Opus 4.6 (1M context) --- .planning/ROADMAP.md | 8 ++--- .planning/phases/03-pages-ship/03-04-PLAN.md | 33 ++++++-------------- 2 files changed, 13 insertions(+), 28 deletions(-) diff --git a/.planning/ROADMAP.md b/.planning/ROADMAP.md index 4d2c9e6..027d962 100644 --- a/.planning/ROADMAP.md +++ b/.planning/ROADMAP.md @@ -52,11 +52,11 @@ Plans: ### Phase 3: Pages & Ship **Goal**: All portfolio pages are live, forms work, analytics fire in production, and the Docker image builds and runs **Depends on**: Phase 2 -**Requirements**: PAGE-01, PAGE-02, PAGE-03, PAGE-04, PAGE-05, PAGE-06, PAGE-07, PAGE-08, COMP-01, COMP-02, COMP-03, COMP-04, INFRA-01, INFRA-04 +**Requirements**: PAGE-01, PAGE-02, PAGE-03, PAGE-04, PAGE-05, PAGE-06, PAGE-08, COMP-01, COMP-02, COMP-03, COMP-04, INFRA-01, INFRA-04 **Success Criteria** (what must be TRUE): - 1. All 8 routes (`/`, `/projects`, `/project/[id]`, `/about`, `/contact`, `/fiverr`, `/formation`, 404) return complete HTML when fetched with `curl` + 1. All 7 routes (`/`, `/projects`, `/project/[id]`, `/about`, `/contact`, `/fiverr`, 404) return complete HTML when fetched with `curl` 2. Clicking an image in a project detail page opens a modal carousel with keyboard navigation (arrow keys + Escape closes) - 3. Submitting the contact form with valid data shows a success toast; EmailJS delivers the email + 3. Submitting the contact form with valid data shows a success toast; SMTP delivers the email via nodemailer 4. `docker build` completes and `docker run` serves the SSR app on port 3000 5. Google Analytics 4 events appear in GA4 DebugView when browsing in production mode **Plans**: 4 plans @@ -64,7 +64,7 @@ Plans: - [ ] 03-01-PLAN.md — Composants partages + deps + ContactForm + nodemailer server route - [ ] 03-02-PLAN.md — Landing + Projects + Project Detail pages - [ ] 03-03-PLAN.md — About + Contact + Fiverr + 404 pages -- [ ] 03-04-PLAN.md — Dockerfile SSR + GA4 config + docker-compose + formation redirect +- [ ] 03-04-PLAN.md — Dockerfile SSR + GA4 config + docker-compose + legacy cleanup **UI hint**: yes ## Progress diff --git a/.planning/phases/03-pages-ship/03-04-PLAN.md b/.planning/phases/03-pages-ship/03-04-PLAN.md index 030809e..37325ec 100644 --- a/.planning/phases/03-pages-ship/03-04-PLAN.md +++ b/.planning/phases/03-pages-ship/03-04-PLAN.md @@ -8,18 +8,16 @@ files_modified: - Dockerfile - docker-compose.yml - nuxt.config.ts - - app/pages/formation.vue autonomous: true requirements: - INFRA-01 - INFRA-04 - - PAGE-07 must_haves: truths: - "docker build -t portfolio . reussit sans erreur" - "docker run -p 3000:3000 portfolio sert l'app SSR sur port 3000" - "GA4 est actif uniquement en production" - - "Route /formation redirige vers / ou retourne 404" + - "app/pages/formation.vue n'existe pas, /formation retourne 404" artifacts: - path: "Dockerfile" provides: "Multi-stage SSR build node:22-alpine" @@ -127,8 +125,8 @@ environment: - Task 2: GA4 production-only + formation redirect + cleanup - nuxt.config.ts, app/pages/formation.vue + Task 2: GA4 production-only + legacy cleanup + nuxt.config.ts **GA4 nuxt-gtag** (per D-15, INFRA-04) : Verifier/mettre a jour `nuxt.config.ts` pour que nuxt-gtag soit configure correctement. Le config existant a deja : ```typescript @@ -139,27 +137,14 @@ gtag: { ``` Verifier que `runtimeConfig.public.gtag.id` est bien present (deja fait en Plan 01 pour SMTP). Le `NUXT_PUBLIC_GTAG_ID` sera injecte au runtime sans rebuild (per D-13). Rien a changer si deja correct — juste verifier. -**Page Formation** (per D-19) : La page formation est supprimee. Si `app/pages/formation.vue` existe comme stub, le remplacer par une redirection : -```vue - +**Formation** (per D-19) : Completement supprimee. Si `app/pages/formation.vue` existe, le supprimer. Pas de redirection, pas de routeRules — /formation retourne 404 naturellement. - -``` -Si le fichier n'existe pas, le creer quand meme pour eviter les 404 sur d'anciens liens. - -**Nettoyage :** NE PAS supprimer le dossier `src/` dans cette phase — il sert de reference et sera nettoye dans une future phase de maintenance. Supprimer uniquement `nginx.conf` s'il existe (plus utile avec le Dockerfile SSR). +**Nettoyage complet legacy :** Supprimer le dossier `src/`, `old/`, `nginx.conf`, `index.html`, `eslint.config.ts`, `env.d.ts` — tout le legacy de l'ancien SPA Vue. Le repo doit etre propre apres cette phase. - cd C:/Users/minit/Desktop/portfolio/portfolio && grep -q "production" nuxt.config.ts && grep -q "navigateTo\|redirect" app/pages/formation.vue && echo "PASS" + cd C:/Users/minit/Desktop/portfolio/portfolio && grep -q "production" nuxt.config.ts && ! test -f app/pages/formation.vue && ! test -d src && echo "PASS" - GA4 nuxt-gtag actif en production via runtimeConfig, formation.vue redirige vers /, nginx.conf supprime si present + GA4 nuxt-gtag actif en production via runtimeConfig, formation completement supprimee, legacy src/ et fichiers SPA supprimes @@ -184,7 +169,7 @@ Si le fichier n'existe pas, le creer quand meme pour eviter les 404 sur d'ancien - `docker run --rm -p 3000:3000 portfolio` sert l'app sur http://localhost:3000 - `curl http://localhost:3000/` retourne du HTML complet SSR - L'image Docker finale est < 300MB (node:22-alpine + .output seulement) -- `/formation` redirige vers `/` avec status 301 +- `/formation` retourne 404 (page supprimee per D-19) @@ -192,7 +177,7 @@ Si le fichier n'existe pas, le creer quand meme pour eviter les 404 sur d'ancien - docker-compose port Traefik = 3000 (per D-14) - Variables env SMTP + GA4 passees via docker-compose environment - nuxt-gtag actif uniquement en production (per D-15) -- formation.vue redirige vers / en 301 (per D-19) +- /formation retourne 404 (D-19), legacy src/ et fichiers SPA supprimes - .dockerignore exclut node_modules, .nuxt, .output, src, .git