Files
highland_games_website/TODO.md
T
Mathew 9b6638eb00
Deploy / deploy (push) Successful in 1m13s
Ajoute une couche de micro-animations sur tout le site
Deux courbes partagées dans lib/motion.ts, pour que le CSS et Framer
aient le même feeling, et quatre primitives que Tailwind ne sait pas
exprimer : reflet de bouton, halo qui suit le curseur, soulignement qui
se dessine, secousse d'erreur.

Nouveaux composants : Stagger (les collections se distribuent une par
une), Spotlight (trouve son parent tout seul, donc les cartes restent
des composants serveur), ScrollProgress, BackToTop, Parallax, Spinner,
CheckMark. Reveal accepte maintenant une direction.

Côté rendu : le trait de nav glisse d'un onglet à l'autre, les cartes
se soulèvent, le hero réagit au scroll, les piliers entrent en zig-zag,
la lightbox glisse dans le sens demandé et les formulaires répondent.

prefers-reduced-motion est respecté partout : Framer coupe via
useReducedMotion, le CSS via la media query déjà en place.

Le commit embarque aussi la réorganisation des composants par domaine
qui était en cours dans l'arbre de travail — les deux étaient trop
imbriquées pour être séparées proprement.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-02 16:04:41 +02:00

5.9 KiB
Raw Blame History

TODO — Highland Games Studio Website

Liste des tâches restantes, classées par priorité. Dernière mise à jour : 2026-07-31


🔴 P0 — Critique (avant toute mise en ligne)

  • Vidéo 84 Mo dans Git (public/Video/Header_Video.mp4)

    • Compresser la vidéo (cible < 5 Mo, ~1080p) avec ffmpeg
    • La sortir de l'historique Git (BFG ou git-filter-repo) — sinon elle reste à vie dans le repo
    • Extraire une image du 1er plan et la renseigner dans HERO_VIDEO.poster (lib/site.ts) — le champ existe déjà et attend juste un chemin
    • Idéalement : servir le fichier hors-Git (CDN / objet statique)
  • Screenshots en PNG 5 Mo (public/image/Games/Emberwild/Capture_*.png)

    • Next les réencode à la volée, mais le premier build/visiteur les paie plein pot.
    • Les réexporter en JPEG/WebP qualité ~85 (cible < 400 Ko chacun)
  • Formulaires non fonctionnels (perdent les données, juste un console.log)

    • Choisir un service email → Resend
    • Brancher le formulaire de contact → app/actions/contact.ts
    • Brancher la newsletter → app/actions/subscribe.ts
    • Clé API + adresses lues depuis l'env (.env.example créé)
    • À faire côté toi : npm install resend, créer un compte Resend, vérifier le domaine, et renseigner RESEND_API_KEY / CONTACT_TO_EMAIL / CONTACT_FROM_EMAIL (en local dans .env.local + en prod sur le VPS)
  • Déploiement à valider en réel (Gitea Actions → Hetzner)

    • Workflow porté sur Gitea (.gitea/workflows/deploy.yml, trigger master)
    • Configurer les secrets SSH_* dans Gitea (repo → Settings → Actions → Secrets)
    • Vérifier que /var/www/highland peut git pull le repo Gitea privé (deploy key/token)
    • Tester un push qui déclenche bien le deploy sur le Hetzner

🟠 P1 — Important (contenu avant lancement public)

  • Remplacer tout le contenu placeholder

    • Vrai nom du jeu → Emberwild (lib/games.ts, slug emberwild)
    • Vrais noms / bios de l'équipe → app/studio/page.tsx
    • Vraies images de jeu / screenshots (key art, bannière, galerie)
    • Vrais liens réseaux sociaux → SOCIAL_LINKS dans lib/site.ts (les entrées à href: null sont masquées, plus de liens morts vers #)
    • Photos de Kevin et Axel → app/studio/page.tsx (le logo sert de placeholder)
  • Configurer l'URL du site

    • Centralisée dans lib/site.ts (pilotable par NEXT_PUBLIC_SITE_URL)
    • Confirmer le domaine final et définir la variable d'env en production
  • Asset inutilisé : Full Logo.png sert maintenant de source à Wordmark.png (version transparente utilisée dans le footer), généré par node scripts/build-wordmark.mjs


🟢 P2 — Plus tard (qualité / robustesse)

  • Monitoring d'erreurs (ex. Sentry) — le texte de app/error.tsx ne ment plus, mais aucune alerte n'existe
  • Rate-limiting sur les server actions (anti-spam une fois les emails branchés)
  • Vulnérabilités npm : npm audit remonte 5 alertes (1 low, 4 moderate) — à examiner
  • Warning build : app/opengraph-image.tsx utilise runtime = "edge" qui désactive la génération statique de la page — à vérifier si volontaire
  • Press kit : la page contact promet des assets « soon » — préparer un vrai press kit

Refonte UX / structure (2026-07-31)

  • Incohérence home ↔ page jeu corrigée : la home affichait « PROJECT ONE » avec ses propres textes et sa propre liste de screenshots codés en dur. Tout vient maintenant de lib/games.ts (keyArt, banner, screenshots), et les screenshots apparaissent enfin sur /games/emberwild.
  • Lisibilité : plus aucun texte posé sur une image. Le key art est crème et les captures sont très claires — le texte crème par-dessus était illisible. Cards = image d'un côté, texte sur panneau plein de l'autre.
  • Logo : plus de déformation (1344×768 rendu en 36×36, 120×80…), passe par components/ui/Logo.tsx qui déduit la hauteur.
  • Design system : Section, SectionHeading, PageHeader, ButtonLink, StatusBadge, Reveal, GameCard, ScreenshotGallery, PostList — plus de duplication de statusLabel / formatDate / cards / boutons.
  • Composants rangés par domaine (ui/, layout/, game/, home/, devblog/, forms/).
  • Home rendue côté serveur (elle était entièrement "use client").
  • Galerie avec lightbox (clavier ←/→/Échap, scroll bloqué, légendes sur fond plein).
  • Accessibilité : prefers-reduced-motion respecté (pas de vidéo ni d'animations), page active signalée dans la navbar, focus visibles, formatDate en UTC (la date d'un post ne décale plus d'un jour).
  • Typo mobile : titres 6xl/7xl qui débordaient sur 375 px réduits en 4xl/5xl.
  • Contact : emails en text-xs qui débordaient de leur colonne → text-sm + break-all, cartes en 1 colonne sur mobile.

Déjà fait (2026-06-22)

  • Supprimé les 5 SVG par défaut de create-next-app (inutilisés)
  • Retiré 4 dépendances MDX inutilisées (@next/mdx, @mdx-js/*, @types/mdx)
  • Ajouté sharp en devDependency (requis par scripts/build-favicon.mjs)
  • Dédupliqué .gitignore (contenu collé en double)
  • Réécrit le README.md (doc réelle au lieu du boilerplate)
  • Corrigé le trigger de déploiement (mainmaster, + git pull)
  • Corrigé une erreur de lint dans Navbar.tsx (setState dans useEffect)
  • Retiré le texte trompeur « team has been notified » dans error.tsx
  • Centralisé l'URL du site dans lib/site.ts
  • Resynchronisé package-lock.json (nécessaire pour npm ci au deploy)