Ir para o conteúdo

Mobile - Estado Atual (2026-03-09)

Este documento consolida o estado real do app mobile em billings-ease-mobile na data 2026-03-09.

Atualização incremental (2026-03-09)

  • não foram detectadas mudanças de código no repositório billings-ease-mobile neste ciclo;
  • portanto, navegação, serviços, autenticação e lacunas arquiteturais documentadas continuam vigentes.

Fonte de verdade

  1. Navegação: src/navigation/AppNavigator.tsx e src/navigation/MainTabs.tsx
  2. Autenticação: src/contexts/AuthContext.tsx
  3. Camada de API: src/services/api.ts + src/services/**
  4. Telas: src/screens/**

Stack em operação

  • Expo ~54.0.25
  • React Native 0.81.5
  • React 19.1.0
  • React Navigation 6.x
  • TanStack Query 5.x
  • Axios
  • Expo Secure Store
  • Google Sign-In (@react-native-google-signin/google-signin)

Stack não autenticado

  • Login
  • Register
  • ForgotPassword
  • ResetPassword

Stack autenticado

  • MainTabs
  • Onboarding

Cliente:

  • Courses, CourseDetail
  • CycleDetails, CycleChart, CycleAnalysis
  • DailyRegister, HealthInfo
  • Payment, PaymentConfirmation
  • SelectProfessional, ProfessionalDetails

Profissional:

  • ManageAppointments
  • PatientCycles, PatientCycleDetails
  • PaymentInfo
  • Inbox

Admin:

  • Users
  • Plans
  • Promotions

Comuns:

  • ChatDetail
  • Appointments
  • Notifications
  • Accounts
  • Subscriptions

Tabs

  • Dashboard (todos)
  • Cycles (client)
  • Patients (professional)
  • Chat (todos)
  • Profile (client usa ClientProfile, demais usam Profile)

Serviços e integração backend

  • cliente HTTP central em src/services/api.ts
  • interceptor injeta JWT de expo-secure-store
  • reset de token ao receber 401
  • serviços organizados por domínio em src/services/{auth,client,professional,...}

Autenticação

  • login por email/senha (POST /auth/login)
  • login Google mobile (POST /auth/oauth/mobile/google)
  • recuperação de sessão via GET /users/me

Lacunas de arquitetura frente ao web

  1. Mobile ainda não adota arquitetura modules/submodules equivalente ao web.
  2. Não há gate de dependência por camada como no web (check:deps:modules:strict).
  3. Controle de módulos efetivos (/users/me/modules) ainda não é eixo principal de navegação no app.

Direção recomendada

  1. Introduzir guardas de módulo no mobile alinhados ao backend.
  2. Evoluir organização para fronteiras de domínio mais explícitas.
  3. Formalizar testes e gates arquiteturais no pipeline do app.