Pular para o conteúdo principal

Status: Approved · v2.3 · SPEC-UX-ROUTES-001

depends_on: SPEC-UX-SHELL-001, SPEC-DOMAIN-AUTH-001

used_by: IS-ZERO-00.3, IS-MVP-02.3, IS-MVP-16.1, IS-MVP-19.29

Mapa de navegação e rotas

Shell principal

Tabs mobile e destinos equivalentes web: /, /search, /matches, /notifications, /profile. A Home preserva feed e card Minha Gestão; Notificações/Perfil exigem auth para conteúdo pessoal, mas apresentam entrada contextual ao visitante. /matches é a rota canônica única; routes.games permanece apenas como alias compatível.

Participação no shell v3

  • Grupo tabs: /, /search*, /matches (lista), /notifications*, /profile* usa shell completo.
  • Detalhes públicos T2–T9: /teams/*, /players/*, /matches/:id, /championships/*, /torcidas/*, /fields/*, /services/*, /districts/*, /neighborhoods/* e /rankings* usam sidebar no web e bottom nav no mobile.
  • Auth: /login, /register, /forgot-password, /reset-password e /onboarding não usam o shell global; preservam a composição T1.
  • Gestão e ações contextuais (/management/*, /reports/*, /support-requests/*, /provider-invites, /event-links, /player-panel) não recebem bottom nav global no mobile.
  • A classificação é por builders/prefixos canônicos, distingue /matches de /matches/:id e tem fallback seguro; não depende de label, título ou substring arbitrária.

Páginas públicas

EntidadeRota web canônicaDeep linkLogin
Team/teams/:slugmesmo path HTTPSnão
Player/players/:slugidemnão, conforme privacy
Match/matches/:matchIdidemnão
Championship/championships/:slugidemnão
Torcida/torcidas/:slugidemnão, approved
Field/fields/:slugidemnão
Service/services/:slugidemnão
District/districts/:slugidemnão
Neighborhood/neighborhoods/:slugidemnão

Auth

/login, /register, /onboarding, /forgot-password, /reset-password. Intent e returnUrl são parâmetros/estado validados, nunca URL externa arbitrária.

Gestão

/management lista entidades. Contexto: /management/:entityType/:entityId. Módulos: dashboard, identity, categories/squad/matches/posts quando team; editions/regulation/registrations/fixtures quando championship; members quando torcida; wallet/sponsors onde permitido; managers/audit/settings em todas gerenciáveis.

Gestão usa ID, não slug, e revalida membership. Ação “Gerenciar” em página pública leva ao contexto correto; sem permission mostra 403 contextual.

Pagamentos e compartilhamento

Checkout/support/sponsor routes carregam target público seguro e payment token quando necessário. Share preview recebe cardId/target, não dados privados em query.

Fallbacks

404 público, 403 management, suspended, merged redirect, onboarding required e intent expired possuem rotas/estados dedicados. Notification target não executa mutation automaticamente; abre tela de confirmação.

Critérios de aceite

Toda tela descrita possui rota; paths públicos são estáveis; route builders compartilhados não importam framework; deep links preservam contexto; returnUrl é allowlisted; web/mobile mantêm equivalência funcional.