2.8 KiB
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:
- Remover dados mockados da UI.
- Adicionar BLE real com
react-native-ble-plx. - Pedir permissões Android Bluetooth/localização.
- Escanear sensores com Heart Rate Service
180D. - Conectar ao sensor encontrado.
- Monitorar Heart Rate Measurement
2A37. - Parsear BPM real a partir do payload BLE.
- Atualizar BPM, média, pico e amostras em tempo real.
- Renderizar gráfico somente com amostras reais recebidas.
- Exibir histórico/insights como estados vazios honestos quando não houver sessão real.
- Melhorar bottom nav: ícones, barra flutuante, sem faixa preta atrás.
- Remover indicador
READYdo topo. - Usar logo existente do projeto na UI.
- 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.