docs: start milestone v1.1 — SEO Hytale, Autorité & Contenu

This commit is contained in:
2026-04-21 11:09:29 +02:00
parent a0788f1edd
commit a4ee7fe007
4 changed files with 115 additions and 59 deletions
+15
View File
@@ -0,0 +1,15 @@
# Milestones
## M1 — Portfolio Hytale-first, SEO-ready, production
**Version:** v1.0
**Completed:** 2026-04-21
**Phases:** 4
**Delivered:**
- Hero Hytale-first avec H1 "Hytale Plugin Developer"
- Page `/hytale` avec pricing 3 tiers, témoignages
- SEO complet : canonical, ogUrl, og:image, JSON-LD, sitemap dynamique
- i18n bilingue FR/EN audit complet
- Dockerfile SSR pnpm, rate limiting contact form
- Déployé en production sur killiandalcin.fr
+12 -1
View File
@@ -8,6 +8,17 @@ Portfolio professionnel de Killian' Dalcin, developpeur freelance specialise en
Le portfolio doit positionner Killian comme LE developpeur de plugins Hytale professionnel — pas un "dev web freelance generique" perdu parmi 500 000 autres. Chaque page doit etre crawlable sans JavaScript (SSR), avec un SEO optimise pour le marche Hytale. Le portfolio doit positionner Killian comme LE developpeur de plugins Hytale professionnel — pas un "dev web freelance generique" perdu parmi 500 000 autres. Chaque page doit etre crawlable sans JavaScript (SSR), avec un SEO optimise pour le marche Hytale.
## Current Milestone: v1.1 — SEO Hytale — Autorité & Contenu
**Goal:** Dominer les requêtes Hytale sur Google via un blog markdown complet (tutos, guides, news) combiné à un SEO on-page renforcé — deux leviers pour ranker sur les mots-clés directs ET capter le trafic longue traîne.
**Target features:**
- Blog markdown avec renderer complet (syntax highlighting, images, embeds, tables, alerts)
- Articles Hytale bilingues FR/EN (tutos, guides, contenus communauté)
- SEO par article : JSON-LD Article, og:image, canonical, sitemap étendu
- Cocon sémantique : liens internes blog ↔ page /hytale
- Open Graph peaufiné par article
## Requirements ## Requirements
### Validated ### Validated
@@ -39,7 +50,7 @@ Le portfolio doit positionner Killian comme LE developpeur de plugins Hytale pro
### Out of Scope ### Out of Scope
- Tests automatises — priorite au shipping, tests si necessaire apres - Tests automatises — priorite au shipping, tests si necessaire apres
- Blog/CMS — pas de contenu dynamique pour l'instant - Blog/CMS — promu en Active pour M1.1 (blog markdown statique)
- Dashboard admin — portfolio statique - Dashboard admin — portfolio statique
- PWA/Service Workers — pas de besoin offline - PWA/Service Workers — pas de besoin offline
- Pub payante — budget zero - Pub payante — budget zero
+70 -45
View File
@@ -1,82 +1,107 @@
# Requirements: Portfolio Killian' Dalcin # Requirements: Portfolio Killian' Dalcin
**Defined:** 2026-04-10 **Defined:** 2026-04-10
**Updated:** 2026-04-21 (v1.1 added)
**Core Value:** Positionner Killian comme dev Hytale #1, crawlable sans JS, SEO optimise **Core Value:** Positionner Killian comme dev Hytale #1, crawlable sans JS, SEO optimise
## v1 Requirements ## v1 Requirements (M1 — Complété 2026-04-21)
### Content ### Content
- [ ] **CONT-01**: Refonte Hero accueil — "Hytale Plugin Developer" en H1, CTA Discord/contact, bilingue - [x] **CONT-01**: Refonte Hero accueil — "Hytale Plugin Developer" en H1, CTA Discord/contact, bilingue
- [ ] **CONT-02**: Page Hytale dediee `/hytale` — services plugin dev, tiers pricing, demos placeholders, maintenance recurrente, bilingue - [x] **CONT-02**: Page Hytale dediee `/hytale` — services plugin dev, tiers pricing, demos placeholders, maintenance recurrente, bilingue
- [ ] **CONT-03**: Grille tarifaire — plugin simple/complexe/sur-mesure/maintenance/web avec prix visibles - [x] **CONT-03**: Grille tarifaire — plugin simple/complexe/sur-mesure/maintenance/web avec prix visibles
- [ ] **CONT-04**: Temoignages — section featured + stats sur homepage et page Hytale (5 avis Fiverr existants) - [x] **CONT-04**: Temoignages — section featured + stats sur homepage et page Hytale (5 avis Fiverr existants)
### SEO ### SEO
- [ ] **SEO-01**: Canonical links — `<link rel="canonical">` sur chaque page pour eviter duplication i18n - [x] **SEO-01**: Canonical links — `<link rel="canonical">` sur chaque page pour eviter duplication i18n
- [ ] **SEO-02**: ogUrl par page — chaque `useSeoMeta()` inclut `ogUrl` specifique - [x] **SEO-02**: ogUrl par page — chaque `useSeoMeta()` inclut `ogUrl` specifique
- [ ] **SEO-03**: og:image par page — images distinctes au lieu du meme og-image.png partout - [x] **SEO-03**: og:image par page — images distinctes au lieu du meme og-image.png partout
- [ ] **SEO-04**: JSON-LD complet — Person (homepage), Service (hytale), SoftwareApplication (projets), composable `useJsonLd.ts` - [x] **SEO-04**: JSON-LD complet — Person (homepage), Service (hytale), SoftwareApplication (projets), composable `useJsonLd.ts`
- [ ] **SEO-05**: jobTitle corrige — "Hytale Plugin Developer" dans site.ts et JSON-LD, pas "Full Stack Freelance" - [x] **SEO-05**: jobTitle corrige — "Hytale Plugin Developer" dans site.ts et JSON-LD, pas "Full Stack Freelance"
### i18n ### i18n
- [ ] **I18N-01**: Audit complet FR/EN — chaque cle FR doit exister en EN avec traduction reelle - [x] **I18N-01**: Audit complet FR/EN — chaque cle FR doit exister en EN avec traduction reelle
- [ ] **I18N-02**: Qualite traductions FR — reformuler les traductions approximatives/anglicismes - [x] **I18N-02**: Qualite traductions FR — reformuler les traductions approximatives/anglicismes
- [ ] **I18N-03**: Hardcoded strings — eliminer toutes les chaines en dur dans les composants (HeroSection, error.vue) - [x] **I18N-03**: Hardcoded strings — eliminer toutes les chaines en dur dans les composants
- [ ] **I18N-04**: SEO keys Hytale — title/description/og specifiques pour la page Hytale en FR et EN - [x] **I18N-04**: SEO keys Hytale — title/description/og specifiques pour la page Hytale en FR et EN
### Fixes ### Fixes
- [ ] **FIX-01**: Supprimer `public/sitemap.xml` statique — conflit avec `@nuxtjs/sitemap` dynamique - [x] **FIX-01**: Supprimer `public/sitemap.xml` statique — conflit avec `@nuxtjs/sitemap` dynamique
- [ ] **FIX-02**: Dockerfile pnpm — remplacer `npm ci` par `pnpm install --frozen-lockfile` - [x] **FIX-02**: Dockerfile pnpm — remplacer `npm ci` par `pnpm install --frozen-lockfile`
- [ ] **FIX-03**: Rate limiting contact API — protection anti-spam in-memory sur `/api/contact` - [x] **FIX-03**: Rate limiting contact API — protection anti-spam in-memory sur `/api/contact`
- [ ] **FIX-04**: Donnees incoherentes — `reviewCount: '50'` vs `totalReviews: 10`, Fiverr URLs `#` - [x] **FIX-04**: Donnees incoherentes — `reviewCount: '50'` vs `totalReviews: 10`, Fiverr URLs `#`
- [ ] **FIX-05**: Pinning deps — `vue: "latest"` et `vue-router: "latest"` a pincer sur `^3.5.0` / `^4.5.0` - [x] **FIX-05**: Pinning deps — `vue: "latest"` et `vue-router: "latest"` a pincer sur `^3.5.0` / `^4.5.0`
### Deployment ### Deployment
- [ ] **DEPLOY-01**: Dockerfile production corrige — pnpm, node:22-alpine, env vars SMTP/gtag runtime - [x] **DEPLOY-01**: Dockerfile production corrige — pnpm, node:22-alpine, env vars SMTP/gtag runtime
## v2 Requirements ---
- **CONT-05**: Blog technique — articles Hytale plugin dev pour SEO long-tail ## v1.1 Requirements (M1.1 — SEO Hytale — Autorité & Contenu)
- **SEO-06**: og:image dynamique generee par page
### Blog — Système
- [ ] **BLOG-01**: Intégration `@nuxt/content` ou équivalent — renderer markdown complet (syntax highlighting, images, embeds, tables, callouts/alerts)
- [ ] **BLOG-02**: Page listing `/blog` — liste de tous les articles avec titre, description, date, tags, SSR
- [ ] **BLOG-03**: Page article `/blog/[slug]` — rendu SSR complet, table des matières, navigation prev/next
- [ ] **BLOG-04**: Blocs de code avec syntax highlighting (Kotlin, Java, TypeScript, Shell prioritaires pour Hytale)
- [ ] **BLOG-05**: Support images dans articles — images optimisées avec `<NuxtImg>` ou `<nuxt-img>`
### Blog — Contenu
- [ ] **BLOG-06**: Articles bilingues FR/EN — structure i18n dans le système de contenu
- [ ] **BLOG-07**: Au moins 2 articles seed Hytale au lancement (ex: "How to build your first Hytale plugin", "Hytale plugin development in 2026")
### SEO — Blog
- [ ] **SEO-10**: `useSeoMeta()` par article — title, description, og:title, og:description, og:image uniques
- [ ] **SEO-11**: JSON-LD `Article` par billet de blog — author, datePublished, dateModified, headline
- [ ] **SEO-12**: Sitemap étendu — URLs `/blog/[slug]` et `/en/blog/[slug]` incluses automatiquement
- [ ] **SEO-13**: Open Graph image par article — og:image spécifique (image de l'article ou fallback branded)
### SEO — Cocon sémantique
- [ ] **SEO-14**: Liens internes structurés — articles de blog pointent vers `/hytale`, page `/hytale` liste les articles récents
- [ ] **SEO-15**: BreadcrumbList JSON-LD sur les pages blog (Accueil → Blog → Article)
## Future Requirements (backlog)
- **SEO-06**: og:image dynamique générée par page (OG image generator)
- **FEAT-01**: Formulaire devis en ligne - **FEAT-01**: Formulaire devis en ligne
- **FEAT-02**: Section portfolio Minecraft Java - **FEAT-02**: Section portfolio Minecraft Java
- **CONT-08**: Newsletter / liste email pour communauté Hytale
## Out of Scope ## Out of Scope
| Feature | Reason | | Feature | Reason |
|---------|--------| |---------|--------|
| Tests automatises | Ship d'abord, tests ensuite | | Tests automatises | Ship d'abord, tests ensuite |
| Blog/CMS | Pas de contenu dynamique pour l'instant | | Dashboard admin | Blog statique markdown, pas de CMS |
| Dashboard admin | Portfolio statique |
| PWA/Service Workers | Pas de besoin offline | | PWA/Service Workers | Pas de besoin offline |
| Pub payante | Budget zero | | Pub payante | Budget zero |
| Payment integration | Paiements via Fiverr ou virement | | Payment integration | Paiements via Fiverr ou virement |
| Core Web Vitals | Milestone dédié si besoin |
| OG image generator | Complexité vs impact — backlog |
## Traceability ## Traceability v1.1
| Requirement | Phase | Status | | Requirement | Phase | Status |
|-------------|-------|--------| |-------------|-------|--------|
| CONT-01 | TBD | Pending | | BLOG-01 | TBD | Pending |
| CONT-02 | TBD | Pending | | BLOG-02 | TBD | Pending |
| CONT-03 | TBD | Pending | | BLOG-03 | TBD | Pending |
| CONT-04 | TBD | Pending | | BLOG-04 | TBD | Pending |
| SEO-01 | TBD | Pending | | BLOG-05 | TBD | Pending |
| SEO-02 | TBD | Pending | | BLOG-06 | TBD | Pending |
| SEO-03 | TBD | Pending | | BLOG-07 | TBD | Pending |
| SEO-04 | TBD | Pending | | SEO-10 | TBD | Pending |
| SEO-05 | TBD | Pending | | SEO-11 | TBD | Pending |
| I18N-01 | TBD | Pending | | SEO-12 | TBD | Pending |
| I18N-02 | TBD | Pending | | SEO-13 | TBD | Pending |
| I18N-03 | TBD | Pending | | SEO-14 | TBD | Pending |
| I18N-04 | TBD | Pending | | SEO-15 | TBD | Pending |
| FIX-01 | TBD | Pending |
| FIX-02 | TBD | Pending |
| FIX-03 | TBD | Pending |
| FIX-04 | TBD | Pending |
| FIX-05 | TBD | Pending |
| DEPLOY-01 | TBD | Pending |
+18 -13
View File
@@ -1,15 +1,15 @@
--- ---
gsd_state_version: 1.0 gsd_state_version: 1.0
milestone: v1.0 milestone: v1.1
milestone_name: milestone milestone_name: SEO Hytale — Autorité & Contenu
status: Complete status: In Progress
last_updated: "2026-04-21T00:00:00.000Z" last_updated: "2026-04-21T00:00:00.000Z"
progress: progress:
total_phases: 4 total_phases: 0
completed_phases: 4 completed_phases: 0
total_plans: 7 total_plans: 0
completed_plans: 7 completed_plans: 0
percent: 100 percent: 0
--- ---
# Project State # Project State
@@ -22,10 +22,15 @@ progress:
## Current Focus ## Current Focus
Milestone M1 complet — déployé en production sur killiandalcin.fr Phase: Not started (defining requirements)
Plan: —
Status: Defining requirements
Last activity: 2026-04-21 — Milestone v1.1 started
## Session Notes ## Accumulated Context
- Project initialized 2026-04-10 with codebase mapping + 4-agent research - M1 complet — déployé en production sur killiandalcin.fr
- Brownfield: Nuxt 4 SSR portfolio already functional, needs content pivot to Hytale + SEO fixes - Stack : Nuxt 4 SSR + Nuxt UI v3 + Tailwind v4 + pnpm
- Phase 1 vérifiée complète le 2026-04-21 (commits appliqués hors GSD tracking) - Blog/CMS était Out of Scope en M1, promu en priorité principale pour M1.1
- Renderer markdown doit supporter : syntax highlighting, images, embeds, tables, alerts — utiliser un package existant (ex: @nuxtjs/mdc ou @nuxt/content)
- Objectif double : ranker sur "Hytale plugin developer" ET capter trafic longue traîne via contenu communauté