Contexto
Fatia 4 (última) do epic #24 (Practice/Solo mode §V.5). Um dos três objetivos originais do epic era SEO: /practice deveria ser uma landing jogável e indexável, ao contrário das salas (/room/[id], que são noindex por serem efêmeras). Hoje a rota existe (src/app/practice/page.tsx, entregue na Fatia 1/#25) mas não recebeu o polish de metadata/sitemap.
Escopo
- Metadata própria de
/practice (title/description/OG, no padrão já usado em src/app/layout.tsx/outras rotas) — indexável (sem noindex), diferente do comportamento de /room/[id].
- Entrada de
/practice em src/app/sitemap.ts (hoje só lista / e /leaderboard).
- Conferir
src/app/robots.ts — garantir que /practice não está bloqueada.
- Se couber no escopo (avaliar ao puxar, não é obrigatório): "Instalar no celular"/PWA offline para o Treino Livre (§V.11) — só se for de baixo esforço; caso contrário, deixar para uma issue própria futura.
Acceptance criteria (verificáveis)
Dica de abordagem
Espelhar o padrão de metadata das rotas já indexáveis do site (/ e /leaderboard) — não inventar um shape novo de OG/metadata. Esta é a fatia de menor risco/esforço do epic; boa candidata para quando faltar contexto/tempo para as fatias 2/3 (bots/ghost).
Refs: spec docs/UI-AAA-OVERHAUL.md §V.5 (objetivo "SEO") e §V.11 (PWA, se aplicável); epic #24; rota atual em src/app/practice/page.tsx.
Contexto
Fatia 4 (última) do epic #24 (Practice/Solo mode §V.5). Um dos três objetivos originais do epic era SEO:
/practicedeveria ser uma landing jogável e indexável, ao contrário das salas (/room/[id], que sãonoindexpor serem efêmeras). Hoje a rota existe (src/app/practice/page.tsx, entregue na Fatia 1/#25) mas não recebeu o polish de metadata/sitemap.Escopo
/practice(title/description/OG, no padrão já usado emsrc/app/layout.tsx/outras rotas) — indexável (semnoindex), diferente do comportamento de/room/[id]./practiceemsrc/app/sitemap.ts(hoje só lista/e/leaderboard).src/app/robots.ts— garantir que/practicenão está bloqueada.Acceptance criteria (verificáveis)
/practicetemmetadata/OG próprios (title/description específicos do Treino Livre, não herdados genéricos do layout raiz)./practiceaparece emsitemap.tscomchangeFrequency/prioritycoerentes com as demais entradas.robots.tsnão bloqueia/practice(confirmar explicitamente, não só por omissão).pnpm buildverde e a rota/practiceaparece no build output com a metadata esperada (conferir HTML gerado ounext buildoutput).Dica de abordagem
Espelhar o padrão de metadata das rotas já indexáveis do site (
/e/leaderboard) — não inventar um shape novo de OG/metadata. Esta é a fatia de menor risco/esforço do epic; boa candidata para quando faltar contexto/tempo para as fatias 2/3 (bots/ghost).Refs: spec
docs/UI-AAA-OVERHAUL.md§V.5 (objetivo "SEO") e §V.11 (PWA, se aplicável); epic #24; rota atual emsrc/app/practice/page.tsx.