1

Pitch: fiz um bloqueador de apps que cobra flexões (sem câmera)

Fala, galera! Sou um dev americano escrevendo em português (talvez meio torto, me perdoem kkkk). Só pra deixar claro desde o começo: o app é meu.

O problema

Eu precisava dar um limite no meu uso do celular e baixei um daqueles apps de "faz flexão pra desbloquear o Instagram". Amei a ideia! Só não curtia ter que montar o celular pra câmera me filmar fazendo flexão. Era chato demais, e um mico quando o pessoal me via fazendo flexão no posto de gasolina kkkk.

A solução

Fiz o HonorFit: a mesma ideia, só que no sistema de honra. Você escolhe os apps que quer travar, e pra ganhar tempo neles faz flexões, abdominais, agachamentos (ou o exercício que quiser). Sem câmera, sem conta, nada sai do celular. Se você trapacear, só engana você mesmo.

Não é pra todo mundo, mas tô usando faz uns meses e curtindo muito.

Como fiz

  • Stack: Expo + React Native, um código só pra iOS e Android, traduzido pra 15 idiomas (inclusive pt-BR).
  • iOS: API de Tempo de Uso da Apple (FamilyControls, DeviceActivity e ManagedSettings) via react-native-device-activity. O usuário escolhe os apps no seletor do próprio sistema e o app só recebe tokens opacos, então nem eu sei quais apps você bloqueou. O saldo de tempo vira thresholds do DeviceActivity, e quando zera o ManagedSettings coloca a tela de bloqueio (shield).
  • Android: módulo nativo em Kotlin com um foreground service que usa o UsageStats pra ver qual app está aberto e desenha uma tela de bloqueio por cima (overlay). Tem um watchdog e um BootReceiver pra ele não morrer quando o sistema mata o processo.
  • Bugs que me pegaram no iOS:
    • Nome de evento do DeviceActivity não pode ter _: a lib separa a chave por underscore e o nome volta cortado (used_7 vira used).
    • Se o início do intervalo for "agora", o iOS entende que já passou e só começa a monitorar amanhã. Nenhum threshold dispara. Solução: começar o intervalo uns 15 minutos no passado.
    • No iOS 26 aparecem thresholds "fantasmas" que disparam sem uso nenhum (celular parado no bolso e de repente "acabou seu tempo"). Contornei ignorando eventos que chegam cedo demais pra serem possíveis.
    • O botão da tela de bloqueio não consegue abrir o app (limitação da Apple), então a extensão de shield manda uma notificação quando aparece, e é ela que leva de volta pro app.
  • Privacidade: sem conta, sem servidor, sem analytics. Tudo fica no aparelho.

Modelo

Grátis, com um Pro opcional (dá pra comprar uma vez só, sem assinatura). E em novembro tem o "Desafio Novembro Sem Scroll" como evento dentro da App Store, se alguém quiser fazer junto.

Grátis no iPhone e Android: https://honorfitapp.com/get/?c=tabnews-br

Qualquer feedback é bem-vindo, até crítica! Principalmente: qual proporção de repetições por minuto parece justa pra vocês?

Carregando publicação patrocinada...