Files
HealthTracking/docs/superpowers/specs/2026-06-10-fightrate-rn-real-ble-no-mocks.md
T

2.8 KiB

FightRate RN — Real BLE / No Mocks Corrective Slice

Data: 2026-06-10
Status: implementado / APK enviado ao Telegram
Stack: React Native Community CLI bare, sem Expo

Problema

A primeira versão React Native enviada era instalável, mas não funcional como app de treino real:

  • usava dados de demonstração;
  • não escaneava BLE;
  • indicava estados como conectado/pronto sem sensor real;
  • gráficos não eram alimentados por amostras reais;
  • histórico e insights pareciam conteúdo estático;
  • navegação inferior estava visualmente fraca;
  • logo/ícone do projeto não aparecia na UI.

Objetivo desta fatia

Transformar a versão RN em uma base real de captura:

  1. Remover dados mockados da UI.
  2. Adicionar BLE real com react-native-ble-plx.
  3. Pedir permissões Android Bluetooth/localização.
  4. Escanear sensores com Heart Rate Service 180D.
  5. Conectar ao sensor encontrado.
  6. Monitorar Heart Rate Measurement 2A37.
  7. Parsear BPM real a partir do payload BLE.
  8. Atualizar BPM, média, pico e amostras em tempo real.
  9. Renderizar gráfico somente com amostras reais recebidas.
  10. Exibir histórico/insights como estados vazios honestos quando não houver sessão real.
  11. Melhorar bottom nav: ícones, barra flutuante, sem faixa preta atrás.
  12. Remover indicador READY do topo.
  13. Usar logo existente do projeto na UI.
  14. Gerar APK release e enviar ao Telegram.

Dependências aprovadas pela necessidade do pedido

  • react-native-ble-plx: BLE real no React Native bare.
  • react-native-svg: gráfico real leve e ícones SVG.
  • lucide-react-native: ícones para navegação/estado.

Critérios de aceite

  • App não mostra BPM mockado.
  • Tela de captura mostra estado de permissão/scan/conexão real.
  • Botão de captura dispara permissões e scanning BLE.
  • Se nenhum sensor for encontrado, a UI diz isso claramente.
  • Se sensor conectar, BPM vem do characteristic 2A37.
  • Gráfico só aparece depois de amostras reais.
  • Histórico não finge sessões inexistentes.
  • Insights não fingem análise sem dados.
  • APK release abre sem Metro.

Validação

cd FightRateRN
npm run typecheck
npm run lint
npm test -- --runInBand
npm audit --audit-level=moderate

Resultado:

tsc OK
ESLint: No issues found
Tests: 2 suites / 4 tests passed
found 0 vulnerabilities

Build Android release arm64:

cd FightRateRN/android
./gradlew assembleRelease -PreactNativeArchitectures=arm64-v8a

Resultado:

BUILD SUCCESSFUL
APK: FightRateRN/android/app/build/outputs/apk/release/app-release.apk
Tamanho: 29.7 MB
Telegram: enviado

Limitação ainda aberta

A conexão BLE real precisa ser validada no aparelho físico com a cinta Magene H003. O app agora escaneia/conecta/monitora BLE real, mas só o teste com o sensor confirma comportamento final de campo.