Guia — atenvi-app
App mobile nativo do profissional em React Native + Expo (TypeScript).
Estrutura de pastas
src/
app/ ← Expo Router (file-based routing)
(auth)/
login.tsx
(tabs)/
agenda.tsx
comissao.tsx
perfil.tsx
components/ ← componentes locais do app
hooks/
lib/
api/ ← funções de fetch para TanStack Query
utils/
stores/ ← Zustand stores
types/
Navegação
- Expo Router (file-based), mesma convenção de rotas do Next.js App Router
- Grupos
(auth)e(tabs)seguindo o padrão de route groups já usado ematenvi-web
Estado
- TanStack Query para server state (compatível com React Native) — mesmas query keys de
atenvi-web:['<resource>', <id>?] - Zustand para UI state — mesma regra: sem server state no store
Componentes
atenvi-ui(Storybook/Tailwind/web) não é consumível diretamente em React Native — sem DOM- Componentes nativos próprios em
src/components/; reaproveitar apenas tokens de design (cores, espaçamento, tipografia) dotailwind.config.tsdeatenvi-ui, não os componentes - Decisão de usar NativeWind (Tailwind em RN) ou StyleSheet puro: em aberto, decidir ao iniciar o repo
API
- Consome os mesmos endpoints REST
/api/v1/*doatenvi-bff, documentados via Swagger (ADR-0008) — sem contrato paralelo - Auth: mesmo fluxo JWT + refresh token do web (ADR-0005), token persistido via
expo-secure-store
Testes
- Apenas unit por ora — Jest +
jest-expo(não Vitest: sem suporte maduro ao Metro bundler) - Sem e2e mobile no MVP (Detox/Maestro fora de escopo)
CI/CD
- Build via EAS (
eas build), nãonext build/nest build - GitHub Actions dispara EAS via
expo/expo-github-action - Deploy = submissão à store ou EAS Update, não deploy de servidor web (ver ADR-0011)
Escopo (P0 do MVP, ver docs/business.md)
Agenda do dia, notificação push de novo agendamento, bloqueio rápido de horário, confirmar atendimento concluído, comissão do dia/mês, login, lembrete 30min antes, histórico de atendimentos, disponibilidade semanal, notificação de cancelamento.
Construído depois de atenvi-bff + atenvi-web validarem os fluxos core com o tenant piloto
(ver ordem de execução em docs/business.md).