12 puntos por GN⁺ 2025-06-19 | 1 comentarios | Compartir por WhatsApp
  • Incluye funciones para generar planes de entrenamiento, seguir el progreso y ofrecer una amplia base de datos de ejercicios
  • Nació a partir de la experiencia del fracaso previo de workout.lol, con el objetivo de convertirse en un proyecto evolutivo y sostenible para la comunidad open source
  • Usa una arquitectura basada en los principios de Feature-Sliced Design y Next.js, poniendo énfasis en la independencia por funcionalidad, la escalabilidad y la mantenibilidad del código
  • La base de datos de ejercicios se puede importar fácilmente desde archivos CSV e incluye información detallada como distintas características del ejercicio, videos y músculos objetivo principales
  • En adelante, planea ampliar continuamente sus funciones con base en la participación de la comunidad, incluyendo app móvil, insignias/gamificación, integración con wearables y foros comunitarios

Resumen y valor de Workout-Cool

  • Workout-Cool es una plataforma moderna de coaching fitness de código abierto que permite a los usuarios crear planes de entrenamiento personalizados, registrar su progreso y aprovechar ampliamente una rica base de datos de ejercicios (incluyendo descripciones, videos y más)
  • Un desarrollador que vivió de primera mano el abandono y cierre del proyecto workout.lol lo relanza como una plataforma fitness open source más sostenible y moderna para la comunidad de entrenamiento

Inicio del proyecto y motivación

  • Como uno de los principales contribuidores del proyecto workout.lol, enfrentó dificultades por el fracaso de la colaboración con un socio de videos y por los costos de licencias de video
  • Después de que el proyecto fue vendido a otra persona, fue descartado rápidamente, y aunque intentó comunicarse con el nuevo propietario durante más de 9 meses, no obtuvo respuesta
  • Decidió no dejar perder el valor del proyecto anterior y construir una nueva plataforma moderna mejorada de forma integral
  • Este proyecto no tiene un fin comercial. Representa una evolución que promete mantenimiento y desarrollo confiables para la comunidad open source

Filosofía operativa basada en la comunidad

  • Como desarrollador y al mismo tiempo usuario real, refleja directamente las funciones y experiencias que la comunidad necesita
  • Si fuiste usuario de workout.lol, eres bienvenido; si eres nuevo, puedes experimentar el valor de una plataforma fitness orientada al futuro
  • Cualquiera puede contribuir directamente y enviar propuestas de mejora

Base de datos de ejercicios e importación

  • El proyecto incluye una amplia base de datos de ejercicios
  • Mediante un formato CSV de ejemplo, es posible importar de forma personalizada información diversa de cada ejercicio, como id, nombre, descripción, URL de video, imagen, músculo objetivo principal y atributos
    • Ejemplos de columnas principales: id, name, name_en, description, description_en, full_video_url, full_video_image_url, introduction, slug, attribute_name, attribute_value, etc.
    • Ejemplos de tipos de atributos: TYPE(fuerza/cardio/pliometría/estiramiento), PRIMARY_MUSCLE, SECONDARY_MUSCLE, EQUIPMENT, MECHANICS_TYPE, etc.
  • Los datos pueden importarse de inmediato con un solo comando, lo que ofrece gran escalabilidad de datos

Arquitectura del proyecto

  • Basado en Next.js App Router con principios de Feature-Sliced Design (FSD)
    • Implementa una estructura independiente por funcionalidad y fácil de reutilizar
    • Separación clara de capas de dominio: shared → entities → features → widgets → app
    • Mantiene la consistencia entre la UI, la lógica de negocio y la capa de datos
  • Ejemplo de separación de archivos:
    • app/ - rutas y layouts de Next.js
    • processes/ - flujos de negocio compuestos
    • widgets/ - UI componible (por ejemplo, Sidebar, Header)
    • features/ - unidades principales (autenticación, gestión de ejercicios, etc.)
    • entities/ - usuario, ejercicio, workout, etc.
    • shared/ - código y tipos comunes
    • styles/ - CSS global/tema

Desarrollo y despliegue

  • Requiere Node.js 18+, PostgreSQL (con Docker o instalación directa) y pnpm o npm
  • Después de clonar, se instalan las dependencias, se configuran las variables de entorno, se prepara la base de datos (automática o manualmente) y se accede a http://localhost:3000 desde el navegador
  • También es posible ejecutar directamente las migraciones de base de datos y el servidor de desarrollo
  • Compilación de imagen Docker y ejecución del contenedor (próximamente)

Funciones previstas

  • Agregar ejercicios/videos
  • App móvil (basada en React Native)
  • Gamificación (sistema de insignias, etc.)
  • Estadísticas avanzadas de progreso y visualización
  • Integración con wearables (relojes/rastreadores)
  • Soporte multilingüe
  • Autenticación OAuth (Google, Apple, etc.)
  • Foro comunitario integrado

1 comentarios

 
GN⁺ 2025-06-19
Comentarios en Hacker News
  • Me dio una sensación curiosa ver mi app workout.lol aquí
    Se la vendí a una persona, pero luego la dejó totalmente abandonada
    Le mandé varios mensajes diciendo que si necesitaba soporte me contactara, pero nunca recibí respuesta
    Aun así, me da muchísimo gusto ver que la están manteniendo otra vez
    La mejora del UI también está excelente, gran trabajo
  • ¡Es Vincenius!
    No te imaginas lo feliz que me puse al ver tu nombre aparecer
    Yo también pasé por esa sensación de ver un proyecto detenerse sin sacar nada de eso y que se te rompa un poco el corazón
    Eso fue justo lo que al final me empujó a rehacerlo todo desde cero, manteniendo la mentalidad abierta que mostraste cuando lo empezaste
    Gracias por elogiar el UI, viniendo de ti significa mucho
    Si alguna vez quieres volver, eres bienvenido cuando quieras
    Tus ideas, opiniones o simplemente tu presencia ya significan mucho
  • Esto está muy bueno
    Estoy trabajando en una API de calendarización automática que se integra con Apple CalDAV(iCal)
    Estoy construyendo funciones de gestión de agenda centradas en objetivos (usando Google ORTools para calcular muy rápido un modelo gigantesco de restricciones CP-SAT; incluso un año completo se procesa en menos de 5 segundos)
    También incluye una función de alimentación alineada con objetivos de nutrición
    La verdad es que quería incluir sí o sí un sistema así de planes de ejercicio/entrenamiento, pero ni idea tenía de qué usar
    Ahora ya tengo clarísimo qué usar
    Gracias por crear este proyecto
  • Me pregunto si alguien del sector habrá comprado eso para bloquear una alternativa gratuita
    Me dan ganas de ver qué futuro le espera a este proyecto
  • A mí me sale el mensaje "error loading exercises"
    También me da curiosidad saber qué opinan del proyecto wger
    https://github.com/wger-project es una plataforma autohospedada de fitness/ejercicio/nutrición basada en FLOSS con licencia AGPL
    Debe tener como casi 10 años; está basada en una app de Django y también tiene app oficial en Flutter, así que se puede usar en Android/iOS/Windows/Linux/macOS
    Soporta varios usuarios, incluso puede servir para administrar un gimnasio
    body.build es un proyecto FLOSS más reciente, basado en navegador y enfocado en construir programas de entrenamiento con pesas
    El autor de body.build también contribuye a wger
    Después de muchos intentos y errores, yo ya uso wger con buenos resultados en mi homelab
    Hay bastantes cosas que considerar en el proceso de autohospedaje, pero funciona bien
    La desventaja más grande es lo limitado de la base de datos de ejercicios, aunque por suerte los contribuidores la van ampliando poco a poco
    Si alguien puede aportar datos de ejercicios (y material multimedia de ejercicios), seguro se lo agradecerían mucho en este proyecto AGPL
  • Probé Wget hace poco y por desgracia no lo puedo recomendar
    La UX del sitio web es pésima y la app móvil (en iOS) está llena de bugs
    Cada vez que intento iniciar un ejercicio, cambiar el peso o registrar una sesión, se cae o se congela, y además me cierra la sesión constantemente
    Ahora estoy usando LiftLog, que sí soporta todo lo que quiero y además es FOSS
    https://github.com/LiamMorrow/LiftLog
    Me sorprende que, aunque fitness y entrenamiento con pesas son hobbies tan comunes hoy en día, casi no haya apps no comerciales que sean buenas y estén bien mantenidas
    Esa es la conclusión a la que llegué después de probar personalmente decenas de proyectos en Github
  • Me sale el mismo error
  • Llevo como 5 años entrenando con pesas y me da gusto ver una herramienta de código abierto tan bien armada
    Cuando ya tienes experiencia, más importante que las funciones de la app es qué tan constante eres registrando todo para manejar la sobrecarga progresiva
    Esta app es una buena opción para que un principiante empiece
    Pero para que se use más ampliamente, sí o sí necesita dos cosas
  1. Una app móvil (o un PWA; el PWA que hice yo también me parece más que suficiente, al nivel de una app nativa)
  2. Una función para guardar y administrar rutinas específicas por largos periodos
  • Idealmente debería ser posible exportar y compartir los datos entre varias UIs
    https://json-schema.app/view/#?url=https%3A%2F%2Fgist.githubusercontent.com%2Fgavmor%2Fb74c4746aa9f3f63b0f50863a5e62d52%2Fraw%2F01318d1107f67ac83387a905d6556736fa7797ff%2Flifting.json
  • Lo escribo después de probarla, y no tengo ninguna intención de menospreciar al OP
    No estoy de acuerdo con que esta app sea una buena elección para principiantes
    Aplaudo el esfuerzo, pero la lista de ejercicios recomendados me preocupa un poco
    Por ejemplo, si eliges “espalda/bíceps”, salen 9 ejercicios sin ningún orden
    No se nota consideración por el orden o la organización del entrenamiento; un compound lift aparece en medio, o hasta sale chin-up tres veces
    No hay cálculo de 1RM para repeticiones/series/peso
    Y recomienda bro splits poco ortodoxos, haciéndolo todo todavía más disperso
    Me da la impresión de que una app PPL mínima basada en equipamiento podría salir mucho mejor que esto
  • Se siente muy bien que alguien con experiencia en gimnasio lo valide
    A mí me pasa igual: con el tiempo lo importante de verdad termina siendo la constancia y registrar el progreso (en mi caso, más por salud mental, así que ahora me enfoco más en revisar mi estado que en el rendimiento)
    Guardar rutinas y hacer seguimiento a largo plazo está en el roadmap
    Por eso la arquitectura de "workout session" está diseñada completamente distinto a la app anterior
    Quiero que los usuarios puedan crear bloques de entrenamiento individuales y que la experiencia de reutilizarlos, compartirlos, analizarlos y hacerlos evolucionar sea la mejor posible
    También me gustaría escuchar cómo abordaste la gestión de rutinas en el PWA que hiciste
    Parece que recorrimos caminos parecidos, así que de verdad me interesaría que lo compartieras
  • Si te interesa el origen de los datos, aquí van un par de proyectos que podrían servirte de referencia
    https://wrkout.xyz/ (API abierta de base de datos de ejercicios con imágenes/videos)
    https://github.com/wrkout/exercises.json (dataset open source de ejercicios)
    Te recomiendo aprovecharlos si los necesitas
  • Ya había visto wrkout.xyz antes y de verdad es un proyecto muy bueno
    Esta vez, para evitar con claridad cualquier problema de licencia relacionado con los videos, armé el dataset completamente desde cero con un socio
    Así tengo control total sobre los datos para ajustar atributos, traducciones y todo lo que haga falta
    Aun así, me da muchísimo gusto ver que están saliendo varios proyectos abiertos en este espacio
    Y si ambas comunidades pueden crecer, me encantaría explorar sinergias
    Los DM son bienvenidos
  • Esto sí es una contribución de verdad
    No solo aventaste una idea: ya reuniste el dataset para que hasta un principiante pueda empezar de inmediato
    De verdad, muchas gracias
  • La verdad, la app está mejor de lo que esperaba
    Lo que yo quisiera es una función que recomiende peso/número de repeticiones por ejercicio
    Podrían tomar como referencia el programa de fitness llamado '100 Pushups'
  • Una prueba máxima de repeticiones como castigo (por ejemplo, 8 pushups)
  • La app genera una rutina (3, 4, 3, 3, 5, etc., descansando 2 minutos y repitiendo)
  • Recomienda el número de repeticiones de forma progresiva y ajustable según el nivel del usuario
  • Y lo va guiando para que alrededor de la semana 6 logre llegar a 100
    Si te interesa, también con gusto puedo hablar sobre el UI
  • Si algún día quieres dejar el backend, integrar AT Protocol también podría ser una idea
    Todos los datos del usuario se guardarían en su PDS, así que no haría falta un servidor aparte
    Aunque el proyecto vuelva a quedar abandonado, los datos seguirían funcionando para siempre
  • Me encanta la idea
    Conozco esa app; es súper simple y su progresión adaptativa de verdad motiva muchísimo a los principiantes
    Me encantaría discutir el UI para implementar rutinas autorreguladas y progresivas
    Primero voy a pensar algún algoritmo (aunque sea tosco), así que mándame DM
  • La app se ve bien, pero me dio un error al cargar los ejercicios
    0:{"a":"$@1","f":"","b":"eETmgndxtv4Ar0i8Wync1"}
    1:{"serverError":"An unexpected error occurred."}
    También comparto el código de la solicitud (con encabezados detallados e información)
  • Gracias por el reporte tan detallado
    El aumento repentino de tráfico de HN dejó el servidor destruido más de lo esperado
    Pronto haré estabilización y corrección de bugs
    Gracias otra vez por probarlo y por el feedback
  • Tuve varios problemas técnicos, y eso se entiende en un proyecto nuevo
    Pero en lo fundamental, el sistema de recomendación de ejercicios no está considerando los principios clave del diseño de programas de fitness
    En su estado actual, me cuesta recomendarlo para diseñar programas de entrenamiento
    Creo que sería mejor enfocarse menos en generar rutinas y más en importar registros o plantillas de rutinas ya consolidadas (vi que ya mostraste interés por eso)
    Lista de los principales problemas que encontré
  1. Quería un entrenamiento de cuerpo completo y me recomendó 33 ejercicios en una sola sesión: irreal
  2. La selección de ejercicios asigna al azar solo 3 por músculo, ignorando músculos objetivo múltiples y una distribución adecuada del volumen
  3. También recomienda con frecuencia ejercicios poco conocidos o ineficientes
  4. Recomienda equipo que no tengo; yo entreno en casa, así que necesito excluir por completo las máquinas
  5. Recomienda equipo de marcas desconocidas
  6. Aunque cambies la selección de equipo, la recomendación de ejercicios se queda igual
  7. No puedo borrar ejercicios recomendados ni agregar ejercicios nuevos
  • Opino algo parecido
    El UI y las explicaciones están realmente bien, pero la selección de ejercicios (cuando sí aparece) es ambigua o poco razonable
    ¿Qué tal si metes primero en la base de datos todos los ejercicios estándar primarios/secundarios (barra, mancuernas, máquina) y dejas que los usuarios armen sus propias rutinas?
    También estaría bien tener opciones para sustituir ejercicios concretos
    Solo después de tener todo eso listo implementaría la generación de rutinas, y estaría genial que entrenadores reales pudieran dar feedback
    El equipamiento disponible debería ser simple/estándar, evitando en lo posible máquinas de marca
  • Muchas gracias de verdad por dejar un feedback tan cuidadoso
    Este tipo de opiniones detalladas ayudan muchísimo, sobre todo en una etapa tan temprana
    La lógica del programa de ejercicios ahorita es realmente muy básica
    Todavía falta incorporar principios de entrenamiento como volumen, patrones de movimiento, ciclos de recuperación y la diferencia entre compound e isolation
    La versión actual de verdad es más para "descubrir" cosas, no es para nada un coach inteligente
    Definitivamente tengo que dejar eso claro en el UI
    Respondiendo a tus puntos concretos
  1. Lo de recomendar 33 ejercicios fue totalmente excesivo (jaja)
  2. Sí, tal cual: ahorita solo recomienda 3 por músculo casi a ciegas; luego reforzaré la lógica
  3. Ya estoy agregando metadata para clasificarlos como compound/isolation, músculos principales/secundarios/patrones de movimiento/calidad de resistencia, además de etiquetas de popularidad
  4. También estoy pensando en agregar una opción para excluir por completo cierto equipamiento, como las máquinas
    Entiendo perfectamente la necesidad de decir “tengo mancuernas y barra de dominadas, pero no quiero cables ni máquinas”, así que voy a hacer ese UI más específico
  5. OK
  6. Hay un bug por el que la lista no cambia aunque modifiques el equipo; lo arreglaré pronto
    (Por ahora hay que repetirlo 2 veces, es un problema de renderizado)
  7. Pronto habrá soporte para editar la rutina completa
    Quiero mejorarlo siguiendo buenos principios, y si puedes, me encantaría contar aunque sea con tus ideas para orientar la dirección
  • Otras personas ya mencionaron la importancia de la “corrección de postura”, pero me pregunto si existe alguna tecnología open source de computer vision que revise la postura/la forma
    Me interesaría todavía más si fuera una solución que pueda desplegarse y usarse directamente en hardware de consumo
  • Estaría mejor si elegir equipamiento/músculos no fuera obligatorio
    Por ejemplo, yo tengo una barra de dominadas, pero no sé qué músculos puedo entrenar con eso
    Tal vez sería mejor un enfoque de filtros tipo “fácil para principiantes”
  • La verdad yo tampoco había pensado en eso, pero el flujo actual exige demasiado conocimiento desde el principio
    Otras personas también me dieron feedback parecido
    Voy a volver opcionales los filtros y planeo agregar recomendaciones como "amigable para principiantes", "ejercicios populares" y "calistenia"
    Gracias por mencionarlo
  • ¿Pero entonces no bastaría con elegir solo barra de dominadas como equipamiento?
  • Como principiante, lo primero que sentí fue que la UI para elegir músculos es vistosa pero al mismo tiempo confusa
    En el onboarding inicial es obligatorio elegir músculos, y para un novato que no sabe qué rutina trabaja qué músculos, eso se vuelve una barrera de entrada
    Más o menos entiendo "push", "pull" y "legs", pero los nombres concretos de los músculos se sienten ajenos
    Al final, parece una app hecha solo para gente que va a estudiar anatomía
    Hace falta pensar en una forma de que entrar sea un poco más fácil
    Por ejemplo: grupos musculares recomendados o presets
  • Gracias por la sinceridad
    El onboarding actual asume demasiado conocimiento (más del que imaginaba)
    Los principiantes no quieren saber de "deltoides posteriores" o "dorsal ancho"; solo quieren ponerse fuertes y verse mejor
    En la próxima actualización
  • La selección de músculos será opcional (o se podrá omitir)
  • Habrá presets para principiantes (cuerpo completo, tren superior, etc.)
  • Y presets con etiquetas de ayuda como "pecho + tríceps (push)", "espalda + bíceps (pull)", etc.
    La meta es crear una experiencia amigable que te deje empezar de inmediato sin tener que estudiar anatomía desde el inicio
    Tu feedback ayuda muchísimo de verdad
    Te deseo lo mejor en tu camino fitness
  • "Push" y "pull" puede que se sientan complicados, pero si no sabes qué es "legs", quizá ya sí es demasiado desconocimiento (broma)