Status: Approved · v2 · SPEC-ARCH-ROUTING-001
depends_on: SPEC-UX-ROUTES-001, SPEC-ARCH-STATE-001
used_by: IS-ZERO-00.3, IS-MVP-02.3, IS-MVP-16.1
Navegação, rotas e deep links
Mapa técnico de rotas consistente entre web e mobile, preservando contexto e URLs públicas.
Modelo
Princípios
Paths públicos são estáveis e preferem slugs; gestão usa IDs e exige auth/permission. packages/shared fornece route builders conceituais sem importar Expo Router ou Next navigation.
routes.team.public(slug)
routes.match.public(matchId)
routes.management.team(teamId, "squad")
routes.auth.login({ intentId, returnUrl })
Deep links
URLs HTTPS https://raizfc.com.br/... são canônicas. Mobile associa essas rotas quando instalado; scheme raizfc:// é fallback interno. Links de notificação validam target atual antes de abrir ação.
Guards
Route guard melhora UX, mas autorização real é backend. Estados: anonymous → auth contextual; onboardingRequired → onboarding; unauthorized manager → 403 contextual; merged → canonical redirect; suspended → blocked page.
Parâmetros e segurança
- ReturnUrl é interno/allowlisted.
- Slug não substitui ID em mutations de gestão.
- Query filters são serializados por helper.
- Targets de notification não executam ações automaticamente.
Critérios de aceite
- Toda rota UX possui implementação planejada web/mobile.
- Builders compartilhados sem framework.
- Deep links anônimos abrem páginas públicas.
- AuthIntent preserva destino.