Status: Approved · v2.1 · SPEC-ARCH-MOBILE-001
depends_on: SPEC-ARCH-FRONTEND-001, SPEC-UX-SHELL-001
used_by: IS-ZERO-00.3, IS-MVP-01.1, IS-POST-13.1
Arquitetura do aplicativo mobile
Estrutura Expo/React Native profissional, modular e coerente com as rotas e fluxos do RaizFC.
Rotas e features
Expo Router
Rotas vivem em apps/mobile/app; lógica de tela fica em src/features. Grupos (public), (auth) e (tabs) organizam layout, não autorização por si só.
app/
_layout.tsx
(tabs)/
index.tsx
search.tsx
games.tsx
notifications.tsx
profile.tsx
teams/[slug].tsx
players/[slug].tsx
matches/[matchId].tsx
management/[entityType]/[entityId]/...
Navegação
Tabs fixas: Início, Buscar, Jogos, Notificações e Perfil. Páginas públicas podem abrir via deep link sem login. Ações protegidas criam AuthIntent e navegam para auth modal/stack; após sucesso, retornam ao target.
Plataforma
Integrações nativas (share, secure storage, push, image capture) são adapters em apps/mobile/src/platform, não entram em packages compartilhados. O app suporta safe areas, teclado, back behavior e links HTTPS/app scheme.
UX
Mobile não é desktop espremido: formulários longos usam passos quando necessário, tabelas recebem representação em lista, bottom sheets são usados para contexto curto e ações destrutivas têm confirmação explícita.
Estado e ciclo de vida
- Hooks cancelam/ignoram respostas obsoletas.
- App resume revalida sessão e dados críticos, não tudo.
- Offline MVP mostra último estado quando seguro e erro claro; não enfileira mutations financeiras.
Performance
- FlatList/SectionList em feeds/listas grandes.
- Imagens com dimensões e placeholders.
- Evitar providers globais por feature.
- Não otimizar com memo sem medição.
Acessibilidade
- Touch targets mínimos, labels e ordem de foco.
- Dynamic text quando viável.
- Status sempre texto+cor.
- Back e modal behavior previsíveis.
Build e distribuição
No MVP de infraestrutura, o mobile participa do classificador de impacto e executa instalação, typecheck, testes e Expo export em ambiente reproduzível. Ele não é publicado pela Vercel e não compartilha secrets de web/API.
Builds assinados, EAS Build/Submit, Google Play tracks, TestFlight/App Store, versionamento e rollout pertencem a IS-POST-13.1. Mudança em contracts/UI/shared pode exigir novo build mobile; mudança isolada de web/API não deve gerar release mobile.
Critérios de aceite
- Deep links públicos funcionam.
- AuthIntent retorna ao contexto.
- Tabs preservam estado razoável.
- Nenhum código Next/DOM no mobile.