12 pontos por GN⁺ 2025-06-19 | 1 comentários | Compartilhar no WhatsApp
  • Inclui recursos de criação de planos de treino, acompanhamento de progresso e uma ampla base de dados de exercícios
  • Foi iniciado com base na experiência do fracasso anterior do workout.lol e tem como objetivo ser um projeto evolutivo sustentável para a comunidade open source
  • Usa uma arquitetura baseada nos princípios de Feature-Sliced Design e em Next.js, enfatizando independência por funcionalidade, escalabilidade e facilidade de manutenção do código
  • A base de dados de exercícios pode ser importada facilmente por arquivos CSV e inclui detalhes como várias características do exercício, vídeos e músculos-alvo principais
  • No futuro, pretende expandir continuamente os recursos com base na participação da comunidade, incluindo aplicativo mobile, badges/gamificação, integração com wearables e fórum da comunidade

Visão geral e valor do Workout-Cool

  • Workout-Cool é uma plataforma moderna open source de coaching fitness que permite ao usuário criar planos de treino personalizados, registrar seu progresso e usar amplamente uma rica base de dados de exercícios (com descrições, vídeos etc.)
  • Um desenvolvedor que vivenciou diretamente o abandono e encerramento do projeto workout.lol o recriou como uma plataforma open source de fitness mais sustentável e moderna para a comunidade de treino

Início do projeto e motivação

  • Como principal contribuidor do projeto workout.lol, enfrentou dificuldades como falha na colaboração com parceiros de fornecimento de vídeos e problemas com custos de licenciamento de vídeos
  • Depois que o projeto foi vendido a outra pessoa, ele foi rapidamente descontinuado; por mais de 9 meses houve tentativas de comunicação com o novo proprietário, sem resposta
  • Decidiu construir uma nova plataforma moderna, com melhorias em todo o conjunto, para não deixar o valor do projeto anterior se perder
  • Este projeto não tem objetivo comercial. Ele representa uma evolução que promete manutenção e desenvolvimento confiáveis para a comunidade open source

Filosofia de operação baseada na comunidade

  • Como desenvolvedor e também usuário real, reflete diretamente as funcionalidades e experiências de que a comunidade precisa
  • Quem já usou o workout.lol é bem-vindo, e novos usuários podem experimentar o valor de uma plataforma fitness voltada para o futuro
  • Qualquer pessoa pode contribuir diretamente e enviar sugestões de melhoria

Base de dados de exercícios e importação

  • O projeto vem com uma rica base de dados de exercícios
  • Em formato CSV de exemplo, é possível importar de forma personalizada várias informações de cada exercício, como id, nome, descrição, URL de vídeo, foto, músculo-alvo principal e atributos
    • Exemplos de colunas principais: id, name, name_en, description, description_en, full_video_url, full_video_image_url, introduction, slug, attribute_name, attribute_value etc.
    • Exemplos de tipos de atributo: TYPE (força/cardio/pliometria/alongamento), PRIMARY_MUSCLE, SECONDARY_MUSCLE, EQUIPMENT, MECHANICS_TYPE etc.
  • Os dados podem ser importados imediatamente com um comando de uma linha, oferecendo grande escalabilidade para expansão da base

Arquitetura do projeto

  • Baseado em Next.js App Router com aplicação dos princípios de Feature-Sliced Design (FSD)
    • Implementa uma estrutura independente por funcionalidade e fácil de reutilizar
    • Separação clara das camadas de domínio: shared → entities → features → widgets → app
    • Mantém a consistência entre UI, lógica de negócio e camada de dados
  • Exemplo de separação de arquivos:
    • app/ - rotas e layouts do Next.js
    • processes/ - fluxos de negócio complexos
    • widgets/ - UI componível (ex.: Sidebar, Header)
    • features/ - unidades principais (autenticação, gerenciamento de exercícios etc.)
    • entities/ - usuário, exercício, workout etc.
    • shared/ - código e tipos compartilhados
    • styles/ - CSS global/tema

Desenvolvimento e deploy

  • Requer Node.js 18+, PostgreSQL (via Docker ou instalação direta) e pnpm ou npm
  • Após clonar, instalar as dependências, configurar variáveis de ambiente, preparar o banco de dados (automático ou manual) e acessar http://localhost:3000 no navegador
  • Também é possível executar manualmente as migrações do banco de dados e iniciar o servidor de desenvolvimento
  • Build da imagem Docker e execução de contêiner (planejado)

Recursos planejados

  • Adição de exercícios/vídeos
  • Aplicativo mobile (baseado em React Native)
  • Gamificação (sistema de badges etc.)
  • Estatísticas avançadas de progresso e visualização
  • Integração com wearables (relógios/trackers)
  • Suporte multilíngue
  • Autenticação OAuth (Google, Apple etc.)
  • Fórum da comunidade integrado

1 comentários

 
GN⁺ 2025-06-19
Comentários do Hacker News
  • É uma sensação curiosa ver meu app workout.lol aqui
    Vendi o app para uma pessoa, mas ela acabou simplesmente abandonando tudo
    Mandei várias mensagens dizendo para entrar em contato se precisasse de suporte, mas nunca recebi uma resposta sequer
    Mesmo assim, fico realmente muito feliz em ver que ele está sendo cuidado de novo
    As melhorias na UI também ficaram excelentes, trabalho incrível
  • É o Vincenius!
    Você nem imagina o quanto fiquei feliz ao ver seu nome aparecer
    Eu também senti aquele aperto de ver o projeto parado sem ir a lugar nenhum
    No fim, foi isso que me levou a jogar tudo fora e reconstruir, mantendo a abertura que você mostrou quando começou
    Valeu pelo elogio à UI, vindo de você isso significa muito
    Se algum dia quiser voltar, será sempre bem-vindo
    Suas ideias, opiniões ou simplesmente sua presença já têm muito valor
  • Isso é muito legal
    Estou trabalhando numa API de agendamento automático de calendário integrada com Apple CalDAV (iCal)
    Estou criando um recurso de gestão de agenda orientado por metas (usando Google ORTools para calcular muito rápido um modelo enorme de restrições CP-SAT, processando até 1 ano em menos de 5 segundos)
    Também inclui uma função de dieta alinhada a metas nutricionais
    Na verdade, eu queria muito colocar um sistema de plano de treino assim, mas não fazia ideia do que usar
    Agora finalmente ficou claro o que usar
    Obrigado por criar este projeto
  • Fico me perguntando se não foi alguém do setor que comprou justamente para barrar uma alternativa gratuita
    Agora quero acompanhar para ver que futuro este projeto vai ter
  • Para mim aparece a mensagem "error loading exercises"
    Também queria saber sua opinião sobre o projeto wger
    https://github.com/wger-project é uma plataforma FLOSS self-hosted de gestão de fitness/exercícios/nutrição sob licença AGPL
    Acho que já existe há quase 10 anos; é baseada em um app Django e também tem app oficial em Flutter, então pode ser usada em Android/iOS/Windows/Linux/macOS
    Suporta múltiplos usuários e pode até ser usada para administrar academias
    body.build é um projeto FLOSS mais novo, baseado no navegador e focado em montar programas de musculação
    O autor do body.build também contribui para o wger
    Depois de muita tentativa e erro, hoje uso o wger com sucesso no meu homelab
    Há vários pontos a considerar no self-hosting, mas funciona bem
    A maior desvantagem é a abrangência do banco de dados de exercícios, mas felizmente os contribuidores vêm expandindo isso aos poucos
    Se alguém puder contribuir com dados de exercícios (e mídia de exercícios), esse projeto AGPL certamente vai agradecer
  • Usei o Wget recentemente e infelizmente não posso recomendar
    A UX do site é péssima e o app mobile (no iOS) está cheio de bugs
    Toda vez que tento começar um exercício, ajustar peso ou registrar uma sessão, ele trava, fecha ou me desloga repetidamente
    Agora estou usando o LiftLog, que tem tudo o que eu quero e é FOSS
    https://github.com/LiamMorrow/LiftLog
    É curioso como fitness e musculação são hobbies tão comuns hoje em dia e, ainda assim, quase não existem apps não comerciais realmente bons e bem mantidos
    Essa foi a conclusão a que cheguei depois de testar pessoalmente dezenas de projetos no Github
  • Tive o mesmo erro
  • Faço musculação há uns 5 anos, então fico satisfeito em ver uma ferramenta open source bem montada
    Depois que você ganha experiência, o mais importante não é tanto o que o app faz, mas o quão consistentemente você registra tudo para gerenciar a sobrecarga progressiva
    Este app é uma boa escolha para iniciantes começarem
    Para ter adoção mais ampla, duas coisas são indispensáveis
  1. Um app mobile (ou PWA; o PWA que eu mesmo fiz já é mais que suficiente, no nível de um app nativo)
  2. Um recurso para salvar e gerenciar uma rotina de treino específica por longos períodos
  • Idealmente, os dados deveriam poder ser exportados e compartilhados entre várias UIs
    https://json-schema.app/view/#?url=https%3A%2F%2Fgist.githubusercontent.com%2Fgavmor%2Fb74c4746aa9f3f63b0f50863a5e62d52%2Fraw%2F01318d1107f67ac83387a905d6556736fa7797ff%2Flifting.json
  • Estou escrevendo isso depois de testar, e não quero de forma alguma diminuir o OP
    Não concordo que este app seja uma boa opção para iniciantes
    Aplaudo o esforço, mas a forma como os exercícios são recomendados me preocupa
    Ex.: se você escolhe "costas/bíceps", aparecem 9 exercícios de forma desordenada
    Não há cuidado com a ordem nem com a organização dos exercícios; um compound lift pode aparecer no meio, ou chin-up surgir três vezes
    Não há cálculo de 1RM ligado a repetições/séries/peso
    Também recomenda bro split em vez de algo mais sólido, o que deixa tudo ainda mais disperso
    Fiquei com a impressão de que um app PPL mínimo, baseado em equipamento, poderia ficar bem melhor que isso
  • É realmente muito bom receber esse tipo de validação de alguém com experiência em academia
    Também acho que, com o tempo, o que realmente importa é consistência e registro de progresso (no meu caso, mais para cuidar do mental do que para desempenho, então hoje foco mais em acompanhar meu estado)
    Salvar rotinas e fazer acompanhamento de longo prazo já estão no roadmap
    Por isso a arquitetura de "workout session" foi desenhada de forma totalmente diferente do app antigo
    Quero permitir que o usuário crie blocos de treino individuais e ter a melhor experiência possível para reutilizar, compartilhar, analisar e evoluir isso
    Se puder, adoraria ouvir como você abordou esse gerenciamento de rotinas no PWA que fez
    Parece que seguimos caminhos parecidos, então eu realmente gostaria de ouvir como você fez
  • Se tiver curiosidade sobre fontes de dados, aqui vão alguns projetos que podem servir de referência
    https://wrkout.xyz/ (API aberta de banco de dados de exercícios com imagens/vídeos)
    https://github.com/wrkout/exercises.json (dataset open source de exercícios)
    Recomendo usar se for útil
  • Já tinha visto o wrkout.xyz antes, é um projeto realmente incrível
    Desta vez, para evitar com clareza qualquer problema de licença ligado a vídeos, eu e meu parceiro montamos o dataset completamente do zero
    Assim temos controle total dos dados para ajustar atributos, traduções etc. do jeito que quisermos
    Mas fico muito feliz em ver vários projetos abertos surgindo nessa área
    E, se der para as duas comunidades crescerem, eu adoraria buscar alguma sinergia
    DMs são bem-vindas
  • Isso sim é contribuição de verdade
    Não é só jogar ideias, você já reuniu um dataset inteiro para que até iniciantes possam começar de imediato
    Muito obrigado mesmo
  • Sinceramente, este app é melhor do que eu esperava
    O que eu gostaria é de um recurso que recomendasse carga/repetições por exercício
    Pode valer a pena olhar o programa de fitness "100 Pushups" como referência
  • Você faz o máximo de repetições como punição/teste (ex.: 8 flexões)
  • O app gera uma agenda (3, 4, 3, 3, 5 etc., descansando 2 minutos e repetindo)
  • O app recomenda as repetições de forma progressiva e adaptativa conforme o nível do usuário
  • Lá pela 6ª semana, ele te conduz para chegar a 100
    Se tiver interesse, também topo discutir a UI
  • Se quiser desistir do backend, integrar com o AT Protocol também pode ser uma ideia
    Todos os dados do usuário ficariam armazenados no PDS, sem necessidade de servidor separado
    Mesmo que o projeto volte a ser abandonado, os dados continuariam funcionando para sempre
  • Adorei totalmente a ideia
    Conheço esse app, ele é realmente simples, e essa progressão adaptativa é especialmente ótima para motivar iniciantes
    Quero muito discutir a UI para implementar uma rotina autorregulada e progressiva
    Primeiro vou pensar em um algoritmo (meio tosco) e então me manda DM
  • O app parece bom, mas houve um erro no processo de carregar exercícios
    0:{"a":"$@1","f":"","b":"eETmgndxtv4Ar0i8Wync1"}
    1:{"serverError":"An unexpected error occurred."}
    Também compartilho o código da requisição (incluindo cabeçalhos detalhados e informações)
  • Obrigado pelo relatório detalhado
    Com o pico de tráfego vindo do HN, o servidor foi destruído além do esperado
    Vou estabilizar tudo e corrigir os bugs em breve
    Obrigado mais uma vez por testar e pelo feedback
  • Tive vários problemas técnicos, o que é compreensível para um projeto novo
    Mas, no fundo, o sistema de recomendação de exercícios não considera os fundamentos de design de programas de treino
    No estado atual, é difícil recomendar o uso para montar programas de treino
    Talvez fosse melhor focar menos em geração de rotina e mais em registro de treino já consolidado/importação de templates de rotina (também vi que você já demonstrou interesse nisso)
    Principais problemas que encontrei
  1. Eu queria um treino de corpo inteiro, mas foram recomendados 33 exercícios numa única sessão — irreal
  2. A seleção de exercícios distribui aleatoriamente só 3 por músculo, ignorando alvos multiarticulares e distribuição adequada de volume
  3. Exercícios pouco conhecidos ou ineficientes são recomendados com frequência
  4. Também foram recomendados equipamentos que eu não tenho; treino em home gym, então preciso excluir totalmente máquinas
  5. Foram recomendados equipamentos de marca pouco familiares
  6. Mesmo mudando a seleção de equipamento, as recomendações de exercício permanecem iguais
  7. Não consigo remover exercícios recomendados nem adicionar novos
  • Tenho uma opinião parecida
    A UI e as explicações estão realmente muito boas, mas a seleção de exercícios, quando aparece, é vaga ou pouco racional
    Que tal colocar no banco de dados todos os exercícios padrão primários/secundários (barra, halter, máquina) e deixar os usuários montarem as próprias rotinas?
    Também seria bom ter opções para substituir exercícios específicos
    Depois que isso estiver pronto, aí sim implementar geração de rotina, e seria ótimo se treinadores de verdade pudessem dar feedback
    Os equipamentos disponíveis deveriam ser simples/padrão, evitando ao máximo máquinas de marca
  • Muito obrigado de coração por deixar um feedback tão cuidadoso
    Esse tipo de opinião detalhada ajuda especialmente muito nessa fase inicial
    A lógica de programação de treino ainda está realmente muito básica
    Ainda falta incorporar princípios de treino como volume, padrões de movimento, ciclo de recuperação, compound/isolation
    A versão atual é mesmo para "descoberta", não é nem de longe um coach inteligente
    Preciso deixar isso claro na UI
    Respondendo aos pontos específicos
  1. Recomendar 33 foi total overkill (risos)
  2. Sim, no momento só estou jogando 3 por músculo sem muita lógica; vou reforçar isso
  3. Estou adicionando metadados como classificação em compound/isolation, músculos principais/secundários/padrão de movimento/qualidade de resistência e tags de popularidade
  4. Também estou pensando em adicionar uma opção para excluir totalmente certos equipamentos, como máquinas
    Entendo perfeitamente a necessidade de quem tem halteres e barra fixa, mas não quer usar cabo nem máquina; vou detalhar melhor essa parte da UI
  5. OK
  6. Há um bug em que a lista não muda mesmo quando você altera o equipamento; vou corrigir em breve
    (No momento precisa repetir 2 vezes, problema de renderização)
  7. Em breve haverá suporte para edição da rotina inteira
    Quero melhorar isso com base em bons princípios e, se possível, adoraria contar com suas ideias para ajudar a definir a direção
  • Outras pessoas mencionaram a importância de "corrigir a postura"; queria saber se existe alguma tecnologia open source de computer vision que faça checagem de postura/forma
    Tenho ainda mais interesse se for uma solução que possa ser implantada e usada diretamente em hardware de consumo
  • Seria melhor se a seleção de equipamento/músculo não fosse obrigatória
    Por exemplo, eu tenho uma barra fixa, mas não sei quais músculos posso treinar com ela
    Talvez um filtro do tipo "fácil para iniciantes" funcione melhor
  • Eu realmente não tinha pensado nisso, mas o fluxo atual exige conhecimento demais logo no começo
    Outras pessoas também deram feedback parecido
    Vou tornar as opções de filtro opcionais e adicionar recomendações como "iniciante", "exercícios populares", "calistenia" etc.
    Obrigado por apontar isso
  • Então não bastaria selecionar só barra fixa como equipamento?
  • Como iniciante, a primeira coisa que senti foi que a UI de seleção de músculos é ao mesmo tempo chamativa e confusa
    No onboarding inicial, a seleção de músculos é obrigatória, e para um iniciante que não sabe quais rotinas trabalham quais músculos, isso vira uma barreira de entrada
    Eu até entendo por alto "push", "pull" e "legs", mas nomes específicos de músculos já me soam estranhos
    No fim, este app parece feito só para quem está disposto a estudar anatomia
    Vale pensar em formas de facilitar um pouco mais a entrada
    Ex.: grupos musculares recomendados, presets
  • Obrigado pela sinceridade no feedback
    O onboarding atual pressupõe conhecimento demais (mais do que eu imaginava)
    Quem está começando não quer saber de "deltoide posterior" ou "latíssimo do dorso", só quer ficar mais forte e ter um corpo melhor
    Na próxima atualização vou incluir
  • seleção de músculos como opcional (ou possibilidade de pular)
  • presets para iniciantes (corpo inteiro, parte superior etc.)
  • presets com rótulos de ajuda como "peito + tríceps (push)", "costas + bíceps (pull)" etc.
    O objetivo é criar uma experiência amigável em que a pessoa possa começar na hora, sem precisar estudar anatomia antes
    Seu feedback ajuda muito mesmo
    Torço pela sua jornada no fitness
  • "Push" e "pull" podem parecer difíceis, mas se a pessoa não souber o que é "legs", aí talvez esteja por fora demais (brincadeira)