# 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 ```bash cd FightRateRN npm run typecheck npm run lint npm test -- --runInBand npm audit --audit-level=moderate ``` Resultado: ```text tsc OK ESLint: No issues found Tests: 2 suites / 4 tests passed found 0 vulnerabilities ``` Build Android release arm64: ```bash cd FightRateRN/android ./gradlew assembleRelease -PreactNativeArchitectures=arm64-v8a ``` Resultado: ```text 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.