App de Treino — Força e Corrida
Eu treinava com uma planilha e corria com outro app. O corpo era um só, os dados não.
Empresa
Projeto próprio
Período
Set 2026 – Presente
Meu Papel
Produto, Design e Engenharia
Resultado
38
Identificando o problema real
Desde 2018 eu anoto meus treinos. Primeiro no Obsidian, depois numa planilha de Excel com série, repetição e carga. Funcionava, mas era como dirigir olhando só pelo retrovisor: eu sabia o que tinha feito, nunca o que fazer a seguir.
A corrida morava em outro lugar. O relógio mandava para o Strava, o Strava guardava os dados e nenhum dos dois sabia que eu tinha feito agachamento pesado no dia anterior.
Testei os apps do mercado. Eles resolviam bem o planejamento, mas o histórico ficava fraco ou atrás de paywall. E nenhum respondia à pergunta que eu fazia toda manhã: o que eu treino hoje sem atropelar o que treinei ontem?
O raciocínio de produto
A primeira decisão foi o que o app não seria. Não seria uma biblioteca com mil exercícios e vídeo. O centro seria o registro real do que aconteceu e a leitura disso ao longo do tempo.
Para unir força e corrida, escolhi uma linguagem visual que os dois entendem: o corpo. Um boneco que fica vermelho nos músculos treinados e esfria com o tempo. A regra é simples — até 3 séries, o músculo esfria em 3 dias; de 4 a 6, em 5 dias; 7 ou mais, em 7 dias. A corrida marca as pernas, sempre com intensidade menor que a musculação. Carga ficou de fora do cálculo: 60 kg no supino e 60 kg no leg press não dizem a mesma coisa.
O Strava não entrega o VO2máx do relógio. Em vez de depender de uma integração que não existe, o app calcula pela fórmula VDOT do Jack Daniels a partir do melhor pace recente, e aceita o valor do relógio se eu quiser corrigir.
A decisão que mais mudou o produto veio depois, treinando com ele. Na academia, com a respiração alta, tinha informação demais na tela. Separei o antes do durante: uma tela para preparar o treino e um Modo Treino no estilo player — uma série por vez, números grandes, um botão Feito e o descanso correndo em anel.
Da decisão à implementação
Next.js 16 com tRPC e Drizzle sobre MySQL, publicado como PWA para instalar na tela inicial do iPhone. Sem app nativo: a velocidade de publicar uma correção no mesmo dia valia mais que as APIs que eu perderia.
Os bugs mais importantes só apareceram no celular, dentro da academia. O iOS dava zoom em qualquer campo com fonte menor que 16px. O Safari suspendia o áudio do alarme de descanso depois de alguns segundos parado — o teste automatizado pulava o descanso e nunca pegou isso. E a Vercel roda em UTC: um treino feito às 23h caía no dia seguinte no calendário.
O sinal ruim da academia virou decisão de arquitetura. Antes, uma série registrada sem conexão sumia da tela. Agora ela fica numa fila no aparelho e sobe sozinha quando o sinal volta. Como o registro de série já era idempotente, enviar duas vezes não duplica nada.
Depois que amigos pediram para usar, o app ganhou contas por convite, onboarding, painel de admin e métricas de uso — tudo lido com consultas agregadas, sem expor dado pessoal de ninguém.
Treinos finalizados nas primeiras três semanas, por 8 pessoas que testam o app. Musculação virou rotina. Corrida quase não apareceu — e esse é o próximo problema a resolver.


