Problema (crescimento / ativação)
A landing é a superfície de maior alavancagem — a primeira impressão de 3 segundos decide se o visitante fica ou fecha a aba. Hoje o hero da home fala exclusivamente de gente:
- H1 (sr-only, SEO) —
src/components/HomeView.tsx:220-221: "…mais rápido que seus amigos…"
- Subcopy visível —
src/components/HomeView.tsx:241-242: "Crie uma sala, manda o link pros amigos e quem digita o código mais rápido leva."
Para o visitante que chega sozinho (persona O Iniciante, §0.3), essa moldura passa a mensagem "preciso de gente pra usar isso". O relato de campo é explícito (Discussion #27):
"Meu primeiro pensamento como iniciante foi: e se eu só quero treinar sozinho? isso aqui é pra mim? Quase fechei a aba achando que precisava de gente."
É bounce-risk puro no topo do funil. O produto já roda solo (engine aceita corrida sem sala; ranking global registra solo), então a copy está prometendo menos do que o produto entrega.
Por que é distinto de #25 (não é duplicata)
O #25 (In Review, PR #40) adiciona um botão "treinar →" perto do bloco "Criar sala" e cria a rota /practice — e explicitamente escopa a copy do hero para fora ("Fora de escopo: metadata/SEO da landing"). Esta issue trata só das palavras do hero (headline/subcopy) para que o solo-visitante se reconheça no primeiro parágrafo, antes mesmo de ver o botão. São mudanças complementares na mesma tela — ver "Coordenação" abaixo.
Escopo (só microcopy — zero risco de engine)
- Ajustar o subcopy visível (
HomeView.tsx:241-242) para sinalizar solo OU com amigos sem perder o gancho competitivo. Ex.: "Digite código de verdade — treine sozinho ou crie uma sala e chame os amigos. Quem for mais rápido leva. Sem cadastro, sem firula."
- Ajustar o H1 sr-only (
HomeView.tsx:220-221) para incluir o solo preservando a keyword multiplayer (SEO). Ex.: "CodeRacer — corrida de digitação para programadores: treine sozinho ou jogue multiplayer com amigos, sem cadastro."
- Não tocar nos chips ("tempo real / multiplayer / N linguagens") nem no fluxo/CTAs — só texto.
Acceptance criteria (verificáveis)
- O subcopy visível do hero menciona explicitamente a opção de jogar/treinar sozinho antes ou junto da menção a amigos (
HomeView.tsx:241-242).
- O H1 sr-only continua contendo a keyword "multiplayer" e passa a conter também o termo solo/treinar (SEO não regride).
- Nenhuma mudança em lógica, handlers, chamadas de API ou animação — diff só de strings (a área sagrada de latência de input nem é tocada).
prefers-reduced-motion e o layout do hero permanecem idênticos (a copy nova cabe no max-w-2xl sem quebrar em telas mobile).
pnpm typecheck + pnpm build verdes.
Coordenação (evitar conflito de merge)
#25/PR #40 e esta issue mexem na mesma região do HomeView (hero + bloco de CTA). Quem for mergeado primeiro define a base; a segunda PR deve rebasear em origin/main e conferir que o botão "treinar →" (de #25) e a copy nova (desta) convivem. Se #25 já tiver mergeado no momento da resolução, basta ajustar as strings sobre a versão já com o botão.
Fora de escopo
Rota /practice e botão solo (é #25), qualquer mudança de SEO/metadata além do H1, novos componentes.
Problema (crescimento / ativação)
A landing é a superfície de maior alavancagem — a primeira impressão de 3 segundos decide se o visitante fica ou fecha a aba. Hoje o hero da home fala exclusivamente de gente:
src/components/HomeView.tsx:220-221: "…mais rápido que seus amigos…"src/components/HomeView.tsx:241-242: "Crie uma sala, manda o link pros amigos e quem digita o código mais rápido leva."Para o visitante que chega sozinho (persona O Iniciante, §0.3), essa moldura passa a mensagem "preciso de gente pra usar isso". O relato de campo é explícito (Discussion #27):
É bounce-risk puro no topo do funil. O produto já roda solo (engine aceita corrida sem sala; ranking global registra solo), então a copy está prometendo menos do que o produto entrega.
Por que é distinto de #25 (não é duplicata)
O #25 (In Review, PR #40) adiciona um botão "treinar →" perto do bloco "Criar sala" e cria a rota
/practice— e explicitamente escopa a copy do hero para fora ("Fora de escopo: metadata/SEO da landing"). Esta issue trata só das palavras do hero (headline/subcopy) para que o solo-visitante se reconheça no primeiro parágrafo, antes mesmo de ver o botão. São mudanças complementares na mesma tela — ver "Coordenação" abaixo.Escopo (só microcopy — zero risco de engine)
HomeView.tsx:241-242) para sinalizar solo OU com amigos sem perder o gancho competitivo. Ex.: "Digite código de verdade — treine sozinho ou crie uma sala e chame os amigos. Quem for mais rápido leva. Sem cadastro, sem firula."HomeView.tsx:220-221) para incluir o solo preservando a keywordmultiplayer(SEO). Ex.: "CodeRacer — corrida de digitação para programadores: treine sozinho ou jogue multiplayer com amigos, sem cadastro."Acceptance criteria (verificáveis)
HomeView.tsx:241-242).prefers-reduced-motione o layout do hero permanecem idênticos (a copy nova cabe nomax-w-2xlsem quebrar em telas mobile).pnpm typecheck+pnpm buildverdes.Coordenação (evitar conflito de merge)
#25/PR #40 e esta issue mexem na mesma região do
HomeView(hero + bloco de CTA). Quem for mergeado primeiro define a base; a segunda PR deve rebasear emorigin/maine conferir que o botão "treinar →" (de #25) e a copy nova (desta) convivem. Se #25 já tiver mergeado no momento da resolução, basta ajustar as strings sobre a versão já com o botão.Fora de escopo
Rota
/practicee botão solo (é #25), qualquer mudança de SEO/metadata além do H1, novos componentes.