Pular para conteúdo

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/
  • 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 em atenvi-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) do tailwind.config.ts de atenvi-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/* do atenvi-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ão next 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).