Status: Approved · v2 · SPEC-UX-PUBLIC-CHAMPIONSHIP-001
depends_on: SPEC-DOMAIN-CHAMPIONSHIP-001
used_by: IS-MVP-01.4, IS-MVP-07.3, IS-MVP-07.5
Página pública do campeonato
Página pública deve funcionar como centro confiável de uma edição, não apenas banner e tabela simplificada.
Objetivo
Página pública deve funcionar como centro confiável de uma edição, não apenas banner e tabela simplificada.
Pontos de entrada
- Busca.
- Partidas.
- Times inscritos.
- Feed/cards.
- Território.
Hierarquia da tela
- Hero com identidade, edição ativa, território e status.
- Navegação interna: Visão geral, Jogos, Classificação, Grupos/Chave, Times, Artilharia, Disciplina, Regulamento.
- Próximos jogos e resultados recentes.
- Fase atual e progressão.
- Classificação/grupos com critérios.
- Times/categorias inscritos.
- Artilharia e disciplina.
- Regulamento e PDF.
- Feed oficial/galeria.
- Compartilhar e denunciar.
Componentes e comportamento
Edition Selector
Permite navegar edições anteriores sem misturar stats.
Standings
Tabela responsiva com posição, jogos, pontos e critérios. Linhas têm links para time.
Bracket/Groups
Visual controlado e legível; fallback em lista no mobile.
Regulation
Resumo estruturado e texto integral; alterações pós-lock exibem aviso/versionamento.
Registration Status
Janela e modo visíveis; CTA para gestor de time quando elegível.
Publication Status
Draft não possui página pública; suspended/cancelled explicam situação.
Ações do usuário
| Ação | Pré-condição | Resultado | Falha/alternativa |
|---|---|---|---|
| Solicitar inscrição | Gestor de time | Pedido pending | Janela/modo/elegibilidade |
| Aceitar convite | Gestor de time | Inscrição aprovada/pending | Prazo |
| Abrir regulamento | Público | Tela/documento | PDF indisponível usa texto |
| Compartilhar | Público | Card/link | Fallback |
| Abrir gestão | Membership | Painel | 403 |
Estados obrigatórios
| Estado | Representação | Ação disponível |
|---|---|---|
| Published pre-registration | Informação e edição | — |
| Registration open | CTA e prazo | Inscrever |
| In progress | Fase/jogos/classificação | — |
| Finished | Campeão e histórico | — |
| Cancelled/suspended | Banner | — |
| No fixtures | Explica geração pendente | — |
| Loading/partial/error | Skeleton por aba | Retry |
Autenticação e permissões
- Leitura pública após publicação.
- Inscrição só por gestor de time.
- Gestão privada e financeira não aparece.
- Regulamento público versionado.
Responsividade
- Desktop pode usar tabela e bracket amplos.
- Mobile usa tabs scrolláveis, cards de classificação e bracket simplificado.
- Regulamento mantém boa leitura.
Acessibilidade
- Tabelas com headers.
- Bracket possui alternativa textual.
- Tabs teclado/foco.
- Status e fases em texto.
Eventos de produto e observabilidade
- championship_viewed
- edition_changed
- standings_opened
- registration_started
- regulation_opened
- championship_shared
Dados e endpoints
- GET /championships/:slug.
- GET editions/standings/fixtures/top-scorers/discipline/regulation.
- POST registrations.
Critérios de aceite
- Edição não se mistura.
- Todas as áreas competitivas previstas.
- Draft não público.
- Regulamento acessível.
- Mobile não depende de tabela larga.
Pós-MVP
- Bilheteria, sponsors, premiação e sorteios.
Decisões registradas
- Campeonato é entidade independente.
- Edição é o contexto operacional.
- Publicação paga precede página pública.
Machine summary
spec: SPEC-UX-PUBLIC-CHAMPIONSHIP-001
screen_or_flow: Página pública do campeonato
required_states:
- loading
- success
- empty
- error
must_use:
- contracts
- service
- hook
- design_tokens
must_not:
- direct_fetch
- direct_fixture_import
- hardcoded_brand_colors