IvánDíazLab

JoGym: tu gimnasio, desde el celular.

Miembros, pagos y entradas por QR. El gimnasio, desde el celular.

Captura real del proyecto: JoGym.
JoGymCaptura real del proyecto

React 18 · Vite 5 · MUI 6 · Tailwind · vite-plugin-pwa · html5-qrcode · Express 5 · PostgreSQL 17 · JWT en cookie · web-push

Hecho. Y comprobado.

v1.5.0
versión en producción, verificable desde el servicio
10-ago-2026
fecha de entrada en producción
QR
check-in de miembros desde el teléfono
GDPR
purga de datos personales a petición
Cómo está construido.Decisiones, evidencia y detalles

Ficha técnica

Cliente
JoGym (gimnasio en México)
En producción
Desde el 10 de agosto de 2026
Estado
v1.5.0, con la versión desplegada verificable desde el propio servicio
Rol
Producto, construcción, despliegue y operación
Alcance
Miembros, pagos, check-in por QR, métricas, morosidad, recordatorios y purga de datos

Contexto

El negocio es un gimnasio que llevaba miembros, pagos y asistencia entre libretas y hojas de cálculo. Cada mes había que reconstruir a mano quién estaba al corriente, y la respuesta variaba según quién la reconstruyera.

Quien iba a usar el sistema todos los días no es una persona técnica y trabaja de pie, en el mostrador, con gente esperando. Eso descartaba cualquier solución que exigiera una computadora, una capacitación larga o un manual.

El encargo incluía además algo que no siempre se pide y aquí sí: poder borrar los datos personales de un miembro cuando lo solicite.

El problema

Si el sistema no cabe en el mostrador, no se usa; y si no se usa, el control vuelve a la libreta.

La mayor amenaza para un sistema de gestión pequeño no es un fallo técnico, es el abandono. Cualquier fricción —abrir la laptop, esperar una carga, buscar un registro entre pestañas— hace que la persona vuelva al papel el día que hay prisa. Y el día que hay prisa es todos los días.

El segundo problema era el de la confianza en lo desplegado. Cuando alguien reporta que «algo no funciona como ayer», hace falta saber con certeza qué versión está corriendo en ese momento, y no deducirlo.

Y el tercero fue de infraestructura: la publicación del sitio pasa por un túnel administrado de forma remota, donde la configuración local no tiene ningún efecto. Editar el archivo que parece el correcto no cambia nada, y el síntoma es un servicio sano que sencillamente no aparece.

Decisiones clave

Aplicación instalable, no sitio web

Se construyó como PWA instalable, con lectura de códigos QR desde la cámara del teléfono y notificaciones push nativas del navegador.

Porque el uso real ocurre de pie y con una mano. Una aplicación que vive en la pantalla de inicio del teléfono se abre en un segundo; un enlace guardado en el navegador, no se abre.

La versión desplegada se puede preguntar

El servicio expone su versión y el sistema mantiene un registro de cambios disciplinado, con versionado semántico, que se corresponde con lo que está corriendo.

Sin eso, diagnosticar es adivinar. Poder preguntar «¿qué versión eres?» y recibir una respuesta fiable convierte una discusión sobre impresiones en una comprobación de treinta segundos.

Borrar de verdad cuando alguien lo pide

Existe una purga de datos personales de un miembro, pensada como derecho del titular y no como una limpieza técnica.

En un negocio pequeño los datos de la gente se acumulan sin plan y nadie sabe dónde quedaron. Construir la salida desde el principio evita tener que improvisarla el día que alguien la reclama.

Aprender cómo se publica de verdad el servicio

La publicación pasa por un túnel administrado en remoto: la configuración local no publica nada y hay que modificarla por su interfaz de administración, respaldando antes el estado actual.

Es la clase de detalle que no aparece en ninguna guía y cuesta una tarde entera la primera vez. Quedó documentado en el procedimiento de despliegue para que la segunda vez cueste cinco minutos.

Un día en el mostrador

Todo el flujo diario cabe en un teléfono: el miembro llega, se registra, el sistema sabe si está al corriente y quién debe.

  1. Check-in por QR

    El miembro escanea y queda registrado, sin libreta ni hoja de cálculo.

  2. Estado de la membresía

    El sistema sabe quién está al corriente y desde cuándo.

  3. Morosidad y recordatorios

    Los avisos salen por WhatsApp y por notificación push, sin perseguir a nadie de memoria.

  4. Métricas del negocio

    Asistencia y estado de las membresías, para decidir con datos y no con impresiones.

  5. Purga a petición

    Los datos personales de un miembro se pueden eliminar cuando lo pide.

La solución

La interfaz es React con Vite, empaquetada como PWA instalable, con lectura de códigos QR en el navegador. El backend es Express sobre PostgreSQL, con sesión por token en cookie y notificaciones push.

Las funciones cubren el ciclo completo del gimnasio: alta y baja de miembros, registro de pagos, check-in por QR, seguimiento de morosidad, recordatorios por WhatsApp, métricas de asistencia y purga de datos personales a petición.

La disciplina de entrega es tan importante como el código: registro de cambios con versionado semántico y versión consultable en el servicio, para que cada despliegue sea verificable en vez de anunciado.

Resultados

  • En producción desde el 10 de agosto de 2026, en uso diario para el control de miembros y pagos.
  • v1.5.0 desplegada, con la versión en ejecución verificable desde el propio servicio.
  • Check-in por código QR desde el teléfono, sin computadora en el mostrador.
  • Recordatorios de cobranza por WhatsApp y notificaciones push, y purga de datos personales a petición del miembro.
  • El rediseño visual completo se produjo con apoyo de una herramienta de diseño asistida por IA.

Lo que aprendí

Que en software para negocios pequeños, la competencia no es otro sistema: es la libreta. Y la libreta gana siempre que la aplicación tarde más de unos segundos en estar lista.

Que un registro de cambios sirve para algo solo si se puede contrastar con lo desplegado. Mientras la versión no sea consultable, el changelog es una intención.

Y que la infraestructura ajena tiene reglas invisibles. Descubrir que la configuración local del túnel no publica nada costó tiempo una vez; escribirlo en el procedimiento hizo que no volviera a costarlo.

Tu operación también puede dar el salto.

PlatiquemosVer más proyectos