Pular para o conteúdo principal

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]/...

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.