Proyecto · aplicación en uso

Garage GymPereyra

Un registro de entrenamiento de powerlifting que se usa todas las semanas en el gimnasio: carga la rutina, anota cada serie y muestra si el trabajo de los últimos dos meses sirvió de algo. Toda la app es un único archivo HTML — sin servidor, sin cuentas y sin conexión.

La rutina llegaba en PDF y el progreso no llegaba a ningún lado.

El entrenador manda un programa de varias semanas en una planilla. A partir de ahí cada serie se anota en papel o en las notas del teléfono, y la pregunta que importa —¿estoy levantando más que hace dos meses?— no tiene respuesta sin sentarse a sumar a mano.

El problema

Anotar es fácil. Leer lo anotado, no.

Una app de gimnasio comercial resuelve esto pidiendo una cuenta, una suscripción y conexión en un subsuelo donde no hay señal. Y ninguna entiende el programa que ya escribió el entrenador: hay que volver a cargarlo ejercicio por ejercicio.

El caso real es más chico y más terco que eso: un atleta, un gimnasio, un teléfono que a veces se queda sin datos.

La respuesta

Un archivo que se abre y funciona.

La app entera —interfaz, lógica, tipografías, logo y el lector de PDF— vive dentro de un solo .html. Se manda por WhatsApp, se toca, y ya está andando: sin instalar, sin registrarse y sin red.

Los entrenamientos quedan en el propio teléfono. No hay servidor al que mandarlos, así que no hay nada que se pueda caer, filtrar ni cobrar.

Cuatro pantallas: entrenar, revisar, medir y respaldar.

Estas capturas son de la demostración que se abre más abajo, con dos meses de entrenamientos cargados. Los datos son de ejemplo; la app y los cálculos son los de verdad.

Pantalla Entrenar: el día de la rutina con las series previstas ya cargadas y el volumen del día.
Entrenar El día que toca, con las series que prescribe la rutina ya precargadas: solo se corrige lo que salió distinto. Los porcentajes se convierten a kilos con el máximo de esa semana. Volumen en vivo · cronómetro · borrador si se bloquea el teléfono
Pantalla Historial: gráfico de evolución del tonelaje y la lista de las 31 sesiones guardadas.
Historial Todas las sesiones guardadas, agrupadas por mes y filtrables por movimiento, con la evolución del tonelaje total y el de cada básico por separado. 31 sesiones · 320.688 kg movidos
Pantalla Progreso: curva de 1RM estimado de la sentadilla, con el récord y el cambio porcentual del bloque.
Progreso La pregunta que motivó todo. Por ejercicio: peso máximo, 1RM estimado, volumen y repeticiones. Y qué categorías estás dejando de lado sin darte cuenta. Gráficos en SVG, dibujados a mano, sin librerías

Las decisiones que la mantienen en un solo archivo.

El proyecto se escribe en carpetas —19 módulos JavaScript y 4 hojas de estilo— y un script de armado lo comprime todo en un .html que no le pide un solo byte a la red.

Cero dependencias de red

Las tipografías y el logo van en base64 dentro del archivo. Nada de CDN: en un gimnasio sin señal, una fuente que no carga es una app que se ve rota.

El formato de rutina es el contrato

Un JSON documentado y versionado. Todo lo que entra —archivo, texto pegado, PDF o el editor manual— se convierte a esa forma y se valida en un solo lugar.

La planilla del entrenador se lee sola

Un lector propio interpreta el PDF con el formato del entrenador y lo convierte en rutina. Para los demás, la app genera un prompt listo para pegarle a una IA.

Los gráficos se dibujan a mano

SVG generado por la propia app: unos cientos de líneas contra los cientos de kilobytes de una librería de gráficos. En un archivo que se manda por WhatsApp, el peso es una funcionalidad.

El respaldo es el mismo archivo

Exportar los datos y respaldar la app son la misma operación: un JSON que se vuelve a importar entero. En Chrome se engancha a un archivo real y se reescribe solo.

Bilingüe, porque el entrenador lo es

Toda la interfaz está en español e italiano y se cambia en el momento. Los nombres de ejercicios se reconocen en los dos idiomas al importar.

La demostración

Abrila y tocá lo que quieras.

Se abre con un bloque de fuerza de ocho semanas ya entrenado, para que el historial y los gráficos tengan algo que mostrar desde el primer segundo. Queda un día sin cargar: se puede completar y guardar.

Qué son esos datos

El atleta y sus 31 entrenamientos son inventados: sirven para que la app se vea usada, no para representar a nadie. La app te lo avisa al abrir.

Todo queda en tu navegador y no viaja a ningún servidor — es la misma app del gimnasio, servida desde acá. Si la recargás, sigue donde la dejaste; si querés empezar de cero, Datos → Borrar todo.