Pitch: Show TabNews: Criei um app 100% offline em React Native + MMKV para comparar preços no mercado (Cerveja) e combustível por Cidade/Estrada
Fala, pessoal do TabNews! Tudo bem?
Sabe aquele momento clássico no corredor do supermercado em que você está segurando uma lata de 350ml, um latão de 473ml ou uma garrafa de 600ml tentando fazer conta de cabeça para descobrir qual tem o litro mais barato (e o 4G/5G simplesmente não pega no fundo da loja)?
E no posto de gasolina: a famosa "regra dos 70%" entre Etanol e Gasolina já não reflete a realidade de muitos motores modernos, que têm rendimentos bem diferentes no trânsito da Cidade e na Estrada
Para resolver essas dores do dia a dia de forma imediata, desenvolvi e acabei de lançar a versão v1.3.0 do Qual Levar? na Google Play Store.
🛠️ O que o app resolve na prática?
- Modo Mercado (Volume, Peso, Unidades e Metros):
- Converte automaticamente escalas (
ml ↔ L,g ↔ kg,meun) e já traz presets rápidos das embalagens mais comuns (350ml,473ml,600ml,1L,2L). - Pacotes compostos (3 dimensões): Resolve o cálculo de fardos e pacotes de papel higiênico (
Qtd de Pacotes×Rolos/Itens no Pacote×Metragem/Medida por item), mostrando o custo real por metro ou litro e a porcentagem exata de economia.
- Converte automaticamente escalas (
- Modo Combustível (Padrão 70% ou Consumo Real em Cidade/Estrada):
- Você pode usar a regra rápida dos 70% ou cadastrar o consumo real do seu carro (
km/Lno Etanol e na Gasolina separados por Cidade e Estrada). - O app calcula a paridade exata do seu motor, o preço máximo que o etanol compensa na bomba e compara o Custo por Km Rodado (
R$ / km) lado a lado.
- Você pode usar a regra rápida dos 70% ou cadastrar o consumo real do seu carro (
- Cofre de Economia Acumulada:
- Toda vez que você salva uma comparação no histórico, o app soma a economia financeira real em Reais (
R$) que você deixou de gastar ao escolher a opção mais vantajosa.
- Toda vez que você salva uma comparação no histórico, o app soma a economia financeira real em Reais (
⚙️ Decisões de Arquitetura e Stack Técnica
Como o objetivo era criar um utilitário que abrisse instantaneamente com uma mão só na fila do mercado, tomei algumas decisões técnicas específicas:
- React Native (0.86) em Bare Workflow + TypeScript: Gerenciamento direto das pastas nativas visando performance máxima e inicialização rápida.
- 100% Offline-First e Zero Coleta de Dados: O app não faz nenhuma chamada de API para funcionar, não exige login e não coleta nenhum dado pessoal.
- Persistência Síncrona com
react-native-mmkv: Em vez doAsyncStoragetradicional, usei MMKV para gravar histórico, preferências de tema (Light/Dark Mode com alto contraste para leitura sob luz do sol), perfil de consumo do veículo e o cofre de economia com leitura instantânea em memória. - Qualidade e Precisão Matemática: Tratamento de ponto flutuante (IEEE 754) para evitar dízimas em custos por grama/metro e suíte com 76 testes automatizados no Jest cobrindo todas as regras de negócio e conversões.
- Monetização Ética (Sem estragar a UX): Apps utilitários costumam pecar pelo excesso de anúncios que travam a tela. No Qual Levar?, implementei um sistema onde o usuário pode assistir voluntariamente a 1 vídeo curto (Rewarded Ad) e ganhar 24 horas contínuas 100% livre de anúncios (ocultando até o banner inferior para liberar mais área de tela).
🤝 Pedido de Feedback para a Comunidade
Estou buscando feedbacks sinceros de vocês sobre a usabilidade, performance em diferentes aparelhos Android e ideias para os próximos passos do roadmap (como calculadora de promoções "Leve X Pague Y" ou leitura de etiquetas de gôndola via OCR offline).
Quem puder baixar, testar no celular e deixar um feedback aqui nos comentários (ou uma avaliação lá na Play Store para ajudar no ranqueamento inicial), vai dar uma força gigante para o projeto!
👉 Link na Google Play Store: https://play.google.com/store/apps/details?id=br.tec.kas.quallevar
Muito obrigada, pessoal! Qualquer dúvida sobre a implementação do MMKV, estrutura dos testes ou configuração do Bare Workflow, é só mandar nos comentários!