Status: Approved · v2 · SPEC-ARCH-WEB-001
depends_on: SPEC-ARCH-FRONTEND-001, SPEC-UX-ROUTES-001
used_by: IS-ZERO-00.3, IS-MVP-01.1
Arquitetura da aplicação web
Next.js para páginas públicas indexáveis e gestão responsiva, compartilhando contratos, services e UI.
App Router e renderização
Next.js App Router
Rotas públicas priorizam SEO, metadata, canonical URL e compartilhamento. Componentes de servidor podem buscar dados públicos diretamente por um server-side service adapter, mas a lógica continua no service e respeita contracts; componentes client usam hooks.
apps/web/app/
layout.tsx
page.tsx
teams/[slug]/page.tsx
players/[slug]/page.tsx
matches/[matchId]/page.tsx
championships/[slug]/page.tsx
management/...
Renderização
- Páginas públicas: SSR/ISR quando API real estiver disponível; mock mode pode renderizar de forma determinística.
- Gestão e sessão: client/server boundary explícita; dados privados nunca ficam em static output.
- Metadata usa DTO público e fallback RaizFC.
Responsividade
Breakpoints derivam dos tokens. Desktop usa largura máxima, side navigation e tabelas apenas onde agregam densidade. Mobile web mantém a mesma hierarquia do app, sem aparência infantil ou cards excessivamente grandes/coloridos.
SEO
- Title/description/canonical por entidade.
- Open Graph usa share card/fallback oficial.
- Draft/private/suspended não são indexados.
- Merged usa redirect canônico.
- Structured data apenas quando semanticamente correto.
Segurança
- Dados privados não entram em HTML público.
- Cookies e headers seguem ambiente.
- Return URLs allowlisted.
- Server logs não incluem tokens.
Critérios de aceite
- Public pages renderizam sem login.
- Metadata correta.
- Mock mode e API mode usam mesma service contract.
- Gestão não vaza em cache público.