Todo lo que necesitás saber para configurar y aprovechar al máximo la plataforma.
Desde el primer WOD hasta la gestión de múltiples sedes.
Primeros pasos
¿Cómo empezar?
GymFlow se activa en minutos. Seguí estos pasos para tener tu primera clase
lista.
01
Registrá tu gimnasio
Ingresá a gymflow.com.ar/registro, completá los datos de tu
gimnasio y elegí tu plan. En menos de 2 minutos tenés acceso completo con 30 días de
prueba gratuita.
02
Configurá tu sala
En Configuración → Salas, creá tu primera sala y copiá el
link de display. Ese link lo abrís en el TV del gym para mostrar la pantalla a los
alumnos.
03
Armá tu primer WOD
Desde el Constructor de sesiones, creá bloques de
ejercicio con duración, descanso y modalidad. Podés guardarlos y reutilizarlos.
04
Ejecutá la clase
Abrí el Panel en vivo, asigná la sala, y arrancá. El
cronómetro, la música y la pantalla de los alumnos se sincronizan solos.
05
Invitá a tus alumnos a la app
Compartiles el código del gym. Los alumnos descargan la
app GymFlow de Google Play, ingresan el código y ya pueden reservar, hacer check-in
y ver su progreso.
Arquitectura
El ecosistema de 3 capas
GymFlow conecta tres actores en tiempo real. Todo sincronizado via
WebSocket, sin recargas ni apps de terceros.
🖥️
Panel del Instructor
El instructor controla todo desde su celular, tablet o PC.
Arma el WOD, controla el cronómetro, la música y los bloques en tiempo real.
📺
Pantalla de Sala
El TV del gym muestra en tiempo real el ejercicio actual, la
cuenta regresiva, la animación del movimiento y el bloque siguiente.
📱
App del Alumno
Los alumnos reservan clases, hacen check-in por QR, ven su
historial de asistencia y calculan su RM personal desde la app.
🔄
Sincronización en tiempo real
Toda la comunicación entre las tres capas ocurre via
WebSocket. El cambio de bloque del instructor se refleja en el TV y la app en
milisegundos.
Panel del Instructor
Constructor de WODs Todos los planes
Armá sesiones con bloques de ejercicio modulares. Cada bloque tiene
configuración independiente de tiempo, modalidad y ejercicio.
📦
Bloques de ejercicio
Cada bloque tiene: nombre, ejercicio, duración, series,
descanso y modalidad (Tabata, AMRAP, EMOM, circuito, tiempo libre).
🔀
Reordenar y duplicar
Arrastrá los bloques para reordenarlos. Duplicá un bloque con
un click para crear variaciones rápidamente.
💾
Sesiones guardadas
Las sesiones quedan guardadas para siempre. Reutilizalas,
editalas o clonalas para la próxima semana.
👥
Biblioteca compartida
Los instructores del mismo gimnasio comparten su biblioteca
de sesiones. El conocimiento queda en la institución, no en el celular de alguien.
💡
Tip: Podés usar el generador de IA para armar el WOD completo en segundos.
En la sección de IA explicamos cómo configurarlo.
Panel del Instructor
Prescripción de cargas Todos los planes
Definí el peso a trabajar por ejercicio y por ronda, con curvas de
progresión y tres niveles de dificultad que se muestran en tiempo real en la pantalla de sala.
Curvas de progresión
disponibles
Tipo
Descripción
Ideal para
🔒 Fija
El mismo peso en todas las rondas
Trabajo técnico, máximas sostenidas
↑ Progresiva
Sube linealmente del inicio al fin
Fuerza, calentamiento progresivo
↓ Descendente
Baja con cada ronda
Alta carga inicial, fatiga controlada
△ Pirámide
Sube hasta el pico y vuelve a bajar
Hipertrofia, máximo en el centro
〜 Wave
Ondas de 3 rondas que escalan
Potenciación del sistema nervioso
✎ Manual
Vos ingresás los pesos ronda por ronda
Programas específicos o test de fuerza
Niveles de dificultad (Fácil / Medio /
Difícil)
Para grupos heterogéneos
podés definir tres bandas de carga por ejercicio. Cada nivel sigue la misma curva pero con sus
propios valores de inicio y fin.
🟢
Fácil
Para alumnos principiantes, personas que vuelven de lesión o
cualquiera que ese día priorice calidad de movimiento sobre intensidad.
🟡
Medio
La referencia estándar para un alumno intermedio con buena
técnica. Si solo cargás un nivel, usá este.
🔴
Difícil
Para alumnos avanzados que dominan el patrón de movimiento y
buscan un estímulo de fuerza real.
⚖️
Redondeo automático: los pesos calculados se redondean al múltiplo de 2.5
kg más cercano (el incremento mínimo con discos estándar). Si la progresión da 72.3 kg, el
sistema muestra 72.5 kg. Los tipos Manual y Fijo no se redondean.
📺
Los tres niveles se muestran simultáneamente en la pantalla de sala y en
el panel del instructor, actualizados ronda a ronda en tiempo real. No hay que recordar nada
— el sistema lo calcula y lo muestra solo.
Panel del Instructor
Biblioteca de ejercicios Todos los
planes
Catálogo integrado de ejercicios con nombre, descripción, grupo muscular y
animación de movimiento. Disponible para todos los instructores del gym.
🔍
Búsqueda y filtros
Buscá ejercicios por nombre o filtrá por grupo muscular
(piernas, core, brazos, etc.) para encontrar rápido el ejercicio que necesitás.
🕺
Animaciones de movimiento
Cada ejercicio incluye una figura animada que muestra la
técnica de ejecución. La misma animación se proyecta en la pantalla de sala durante la
clase.
📦
Reutilización en WODs
Al crear un bloque en el Constructor, elegís el ejercicio
directamente desde la biblioteca. Todos los instructores del gym acceden a los mismos
ejercicios.
⚖️
Peso sugerido por nivel NUEVO
Al crear o editar un ejercicio, podés definir el peso
recomendado en 3 niveles: 🟢 Fácil, 🟡 Medio y
🔴 Difícil. Si dejás vacío, se entiende que es bodyweight (sin carga).
Estos valores se usan como punto de partida en el Builder y el generador IA.
💡
Los 50 ejercicios base del sistema ya vienen con pesos sugeridos realistas (barra sola para
fácil, KB estándar, etc.). Al agregar un ejercicio al Builder, los pesos se precargan
automáticamente. Siempre son editables.
Panel del Instructor
Sesiones compartidas Plan
Instructor
Los instructores del Plan Instructor pueden compartir sus sesiones WOD
directamente con sus alumnos. Los alumnos reciben acceso a una sesión interactiva desde la app.
📤
Compartir con clientes
El instructor selecciona una sesión guardada y la comparte
con clientes seleccionados. Ellos reciben el WOD en la app para verlo a su ritmo.
📥
Vista del instructor compartidor
En Sesiones compartidas conmigo el
instructor ve las sesiones que colegas del gym compartieron con él, y puede ejecutarlas
directamente.
ℹ️
Plan Gimnasio: la biblioteca es compartida entre todos los instructores
del gym. En el Plan Instructor, el share es individual entre instructor y sus clientes
específicos.
Panel del Instructor
Plan Personal de Entrenamiento (PT) Todos los
planes
Armá rutinas individuales y completamente personalizadas para cada alumno.
A diferencia del WOD grupal, el Plan PT es exclusivo para ese cliente: días, bloques,
ejercicios, series, repeticiones, peso y tiempo de descanso por separado.
📋
Planes por alumno
Cada plan se crea para un alumno específico. Definís el
nombre, la duración en semanas, los días por semana y las fechas de inicio y fin
(calculadas automáticamente).
🗓️
Días y bloques
Dentro de cada plan podés agregar los días que quieras (Día
1, Día 2…). Dentro de cada día, armás bloques de ejercicio: simples o en superserie.
⚡
Superseries A+B
Combiná dos o más ejercicios en superserie: se ejecutan sin
descanso entre ellos. Cada ejercicio de la superserie lleva su propia tabla de sets.
📊
Sets con detalle completo
Por cada ejercicio definís sets individuales con reps, peso,
unidad (kg/lb/%/bw) y tiempo de descanso. Podés clonar el último set para agilizar la
carga.
📚
Biblioteca de ejercicios
El builder usa la biblioteca completa del sistema (ejercicios
base + los que crea el instructor). Los nombres se muestran en inglés con su traducción
al español.
📱
El alumno lo ve en la app
Una vez armado el plan, el alumno lo visualiza desde la app
en Mi Plan PT. Puede navegar por cada día, ver los ejercicios con sus
series, pesos y descansos.
Flujo de trabajo
Paso
Acción
Dónde
1
Ir a Planes PT en el menú del instructor
Panel web
2
Crear nuevo plan: seleccionás el alumno, semanas y fechas
Botón "+ Nuevo Plan"
3
Abrir el builder del plan y agregar días
Botón "Abrir Builder"
4
Dentro de cada día, agregar bloques simples o superseries
Barra inferior del builder
5
Seleccionar ejercicios de la biblioteca y configurar sets
Panel lateral o modal picker
6
El alumno abre la app y accede desde Mi Plan PT
App GymFlow del alumno
💡
La fecha de fin se calcula automáticamente al ingresar la fecha de inicio
y la cantidad de semanas. También podés editarla manualmente si necesitás ajustar.
ℹ️
El Plan PT es distinto a las Sesiones Compartidas. Las sesiones compartes
un WOD de clase a varios alumnos. El Plan PT es una rutina individual, exclusiva para un
alumno específico, con progresión semanal.
Panel del Instructor
Plantillas de Plan PT Todos los planes
Creá plantillas reutilizables de rutinas PT. En lugar de armar cada plan
desde cero, definís la estructura de días y ejercicios una sola vez y la aplicás a cualquier
alumno.
🗂️
Plantillas de equipo
Las plantillas son compartidas entre todos los instructores
del gimnasio. Un instructor crea "Fuerza 3 días" y cualquier colega puede usarla para
asignarla a sus alumnos.
⚡
Misma estructura del builder PT
Las plantillas usan exactamente el mismo editor que los
planes individuales: días, bloques, superseries y sets con reps/peso/descanso. Todo lo
que sabés del builder PT aplica acá.
🚀
Aplicar con un click
Al crear un nuevo plan PT para un alumno, podés elegir una
plantilla como punto de partida. Todos los días y ejercicios se copian al plan y podés
ajustar lo que necesites.
💡
Tip: Usá plantillas para tus programas más populares: Fuerza Hipertrofia
4x, Funcional 3 días, Rehabilitación baja carga. Una vez creadas, asignarlas a nuevos
alumnos tarda segundos.
Panel del Instructor
Planes Nutricionales Todos los planes
Creá y asigná planes de alimentación individuales a cada alumno. Definís
targets calóricos y de macros, estructurás las comidas del día y cargás los alimentos desde la
biblioteca. El alumno lo consulta desde la app GymFlow.
🎯
Targets y objetivos
Al crear el plan definís el objetivo (déficit calórico,
mantenimiento, superávit, definición, volumen, salud general) y los targets diarios:
calorías totales, proteínas, carbohidratos y grasas en gramos.
🍽️
Estructura de comidas automática
Al crear el plan, un checkbox crea automáticamente las
comidas base: Desayuno, Media Mañana, Almuerzo, Merienda y Cena.
También podés agregar Colación, Pre-entreno, Post-entreno y las que necesités desde el
builder.
📊
Macros en tiempo real
El builder muestra una barra de macros en el header que se
actualiza en tiempo real: kcal total / target, proteínas, carbos y grasas. La barra de
calorías se colorea en verde cuando alcanzás el target, y en rojo si lo superás.
📱
Visible en la app del alumno
El plan activo es visible para el alumno en la app GymFlow en
la sección Mi Nutrición, con todas las comidas, alimentos, cantidades y
macros por comida.
⏸
Activar / Pausar
Los planes tienen estado Activo o
Inactivo. Solo el activo es visible al alumno. Podés pausar un plan y
activar otro sin perder nada. Los planes inactivos quedan guardados y se pueden
reactivar.
✏️
Cantidades editables en el builder
Cada alimento muestra un campo de gramos editable
directamente en la lista. Al modificar la cantidad, los macros de esa comida y el total
del plan se recalculan al instante sin recargar la página.
Flujo de trabajo
Paso
Acción
Dónde
1
Ir a Nutrición → Planes en el menú del instructor
Panel web
2
Crear nuevo plan: elegís alumno, nombre, objetivo y targets de kcal/macros
Botón "+ Nuevo Plan"
3
Activar el checkbox para crear la estructura de comidas base (o agregar comidas
manualmente después)
Modal de creación
4
En el builder, en cada comida hacés clic en "+ Alimento" para
buscar en la biblioteca por nombre o categoría
Builder del plan
5
Ajustás la cantidad en gramos de cada alimento directamente en la lista
Campo editable en el builder
6
Cuando los macros estén listos, activás el plan con ▶ Activar
Listado de planes
7
El alumno abre la app y accede desde Mi Nutrición
App GymFlow del alumno
💡
El picker de alimentos tiene filtro por categoría: Carnes, Pescados, Lácteos, Cereales,
Frutas, Suplementos, etc. Si el alimento no está en la base, podés ingresarlo manualmente
con solo el nombre desde el mismo picker sin cerrar el builder.
ℹ️
Una vez creado el plan, el sistema redirige directamente al builder. Si usaste el checkbox
de comidas base, ya aparecen Desayuno, Media Mañana, Almuerzo, Merienda y Cena listas para
cargar alimentos.
Panel del Instructor
Biblioteca de Alimentos Todos los planes
Catálogo centralizado de alimentos con su tabla nutricional por cada 100g.
Incluye una base de datos global pre-cargada con los alimentos más comunes, más la posibilidad
de agregar alimentos personalizados del gym.
🌍
Base global pre-cargada
GymFlow incluye cientos de alimentos comunes ya cargados:
proteínas, carbohidratos, grasas, frutas, verduras, lácteos y más. Disponibles para usar
de inmediato sin configuración.
➕
Alimentos del gimnasio
Agregá alimentos específicos de tu gym: suplementos propios,
recetas del plan de nutrición del gym, marcas que usás con tus alumnos. Están
disponibles solo para tu gimnasio.
🔍
Búsqueda rápida
Al armar el plan nutricional, buscás el alimento por nombre y
lo agregás con la cantidad en gramos. Los macros se calculan al instante
proporcionalmente a la porción ingresada.
📊
Por cada 100g
Cada alimento tiene registrado: calorías, proteínas,
carbohidratos, grasas y fibra por cada 100g. Al ingresar la cantidad real de la porción,
el sistema hace el cálculo proporcional automático.
💡
Tip: Si trabajás con un suplemento específico (whey, caseína, gainer),
cargalo una vez en la Biblioteca con sus macros reales del envase. Después estará disponible
para usar en todos los planes de cualquier alumno del gym.
Panel del Instructor
Panel en vivo Todos los planes
La cabina de control de la clase. Todo lo que necesitás para dirigir el
entrenamiento sin distracciones.
⏱️
Cronómetro automático
Al avanzar al siguiente bloque, el cronómetro arranca
automáticamente con la duración configurada. También podés controlarlo manualmente.
⏭️
Navegación de bloques
Avanzá o retrocedé entre bloques con un click. La pantalla
del TV y la información de los alumnos se actualiza instantáneamente.
📋
Resumen WOD en sala
Mostrá u ocultá el resumen completo del WOD en el TV para que
los alumnos puedan consultarlo al inicio de la clase.
🕐
Reloj de sala
Mostrá el reloj de tiempo real en el TV, o activá el modo
pantalla completa para usar el TV exclusivamente como clock.
Función
Descripción
Atajo
Play / Pause
Inicia o pausa el cronómetro actual
—
Siguiente bloque
Avanza al próximo bloque y resetea el timer
—
Display
Abre el link de la pantalla de sala en nueva pestaña
—
WOD
Muestra / oculta el resumen del WOD en el TV
—
Reloj
Activa el reloj en el TV de sala
—
Full
Pone el reloj en pantalla completa en el TV
—
Panel del Instructor
Pantalla de sala Todos los planes
La pantalla que ven los alumnos en el TV del gimnasio. Se configura una vez
y funciona sola.
1
Obtener el link de Display
En Configuración → Salas, cada sala
tiene un link único de Display. Copialo.
2
Abrir en el TV
Pegá el link en el TV (Chromecast, browser del smart TV,
HDMI desde notebook, etc.) y dejalo abierto. Se actualiza solo.
3
Asignar la sala al panel de vivo
Desde el Panel en vivo → selector de sala, elegí la sala
correspondiente. La pantalla conecta automáticamente.
🏃
Ejercicio en curso
Nombre del bloque y ejercicio actual en tamaño grande,
legible desde toda la sala.
⏱️
Cuenta regresiva
Cronómetro sincronizado con el instructor. Cambia de color
automáticamente en los últimos segundos.
🕺
Animación del movimiento
Figura animada que muestra la ejecución del ejercicio.
Disponible para los ejercicios de la biblioteca integrada.
⏭️
Próximo bloque
Muestra el nombre y ejercicio del siguiente bloque para que
los alumnos puedan prepararse.
📺
Para configuraciones multi-sala, cada sala tiene su propio link de Display y puede mostrar
un WOD diferente simultáneamente.
Panel del Instructor
Integración Spotify Todos los planes
Controlá la música de la clase directamente desde el panel del instructor,
sincronizada con los bloques del WOD.
▶️
Control de reproducción
Play, pause, siguiente canción y control de volumen
directamente desde el panel en vivo.
🎧
Playlists por bloque
Asociá una playlist de Spotify a cada bloque del WOD. Al
avanzar de bloque, la música cambia automáticamente.
🔁
Modo repeat
Configurá el modo de repetición de la playlist: normal,
repeat, repeat one o shuffle.
🎵
Now playing en sala
La canción en reproducción se muestra discretamente en la
pantalla del TV para los alumnos.
💡
Requisito: Necesitás una cuenta de Spotify Premium activa para usar la
integración. La vinculación se hace en Configuración → Integración Spotify.
Panel del Instructor
Generador de WOD con IA Todos los planes
El módulo de inteligencia artificial arma el WOD completo en segundos, con
ejercicios, tiempos y música seleccionados de forma inteligente. Incluye prescripción automática
de cargas según el tipo de ejercicio y el bloque.
1
Configurar los parámetros
Elegí el nivel del grupo (Principiante / Intermedio /
Avanzado), el estilo de sesión (CrossFit, HIIT, Fuerza, Mixto) y el porcentaje de
grupos musculares a trabajar (Tren superior / Tren inferior / Core).
2
Elegir la Prescripción de Carga
Seleccioná cómo querés que la IA maneje los pesos de los
ejercicios. Ver tabla de modos más abajo.
3
Generar
La IA crea el WOD completo: bloques de calentamiento,
trabajo, descanso y vuelta a la calma, con ejercicios de la biblioteca, tiempos y
cargas pre-configuradas.
4
Revisar y ajustar
Podés editar cualquier bloque antes de guardar. El WOD
generado es tu punto de partida, no el resultado final obligatorio.
⚖️ Modos de
Prescripción de Carga
Al generar el WOD, podés
elegir cómo la IA maneja los pesos. El modo Inteligente está seleccionado por
defecto.
Modo
Qué hace
Cuándo usarlo
🚫 Sin carga
No asigna peso a ningún ejercicio
El instructor prefiere configurar todo manualmente
🧠 InteligenteDefault
Elige automáticamente el patrón y los kg según el tipo de bloque y el ejercicio
Uso diario — genera el WOD listo para dictar
🔒 Todo Fija
Todos los ejercicios con carga quedan en peso constante (mismo kg en todas las
rondas)
Circuitos o clases donde no se quiere cambiar el peso
↑ Todo Progresiva
Todos los ejercicios con carga quedan en progresión ascendente
Clases de fuerza o cuando se quiere escalar la carga
🧠 Cómo funciona el
modo Inteligente
El sistema clasifica cada
ejercicio automáticamente y elige el patrón de carga más adecuado:
🏋️
Compuesto con barra
Squats, deadlifts, presses, cleans → recibe carga. Patrón
según el bloque: series → progresiva, circuit/AMRAP →
fija, fortime → descendente.
🔔
Implemento específico
Wall Ball, Kettlebell Swing, mancuernas → recibe carga con kg
realistas de su implemento (medicine ball, KB, DB). No kg de barra.
🤸
Bodyweight
Pull-ups, push-ups, burpees, TTB, box jumps → sin
carga automáticamente. El sistema detecta estos ejercicios por nombre.
📊 Kg sugeridos por
nivel
Los pesos son
orientativos y siempre editables. Se calculan según el grupo muscular y el
nivel que se seleccionó:
Categoría
🟢 Fácil — Principiante
🟡 Medio — Intermedio
🔴 Difícil — Avanzado
Piernas (squat, deadlift, lunge)
20 / 30 / 40 kg
40 / 60 / 80 kg
60 / 80 / 100 kg
Tren superior empuje (press, bench)
10 / 15 / 20 kg
20 / 30 / 40 kg
30 / 40 / 60 kg
Tren superior tracción (row, lat pulldown)
15 / 20 / 30 kg
25 / 35 / 50 kg
40 / 55 / 70 kg
Olímpicos (clean, snatch, thruster)
15 / 25 / 35 kg
30 / 45 / 60 kg
50 / 65 / 80 kg
Accesorios (curl, extensión, core)
5 / 8 / 10 kg
10 / 15 / 20 kg
15 / 20 / 25 kg
Medicine Ball (wall ball, slam ball)
4 / 6 / 8 kg
6 / 9 / 12 kg
9 / 12 / 15 kg
Kettlebell (swing, TGU, goblet)
8 / 12 / 16 kg
12 / 16 / 24 kg
16 / 24 / 32 kg
Mancuernas (lateral raise, curl, fly)
5 / 8 / 10 kg
10 / 14 / 18 kg
14 / 20 / 26 kg
💡
Los tres valores de cada celda corresponden a los 3 niveles dentro del bloque: 🟢
Fácil / 🟡 Medio / 🔴 Difícil. Todos son editables en el builder una vez
generado el WOD.
📚 Prioridad: pesos de
la Biblioteca NUEVO
Si un ejercicio tiene
pesos sugeridos definidos en la Biblioteca (⚖️ Fácil/Medio/Difícil), el
generador IA usa esos valores en vez de la tabla genérica. Esto permite que el
instructor tenga control total sobre los kg que aparecen en los WODs generados.
1️⃣
Pesos de la Biblioteca
Si el ejercicio tiene peso definido por el instructor → usa
esos kg exactos.
2️⃣
Detección de implemento
Si no tiene peso definido → detecta el implemento (KB,
medicine ball, DB) y usa sus rangos.
3️⃣
Tabla por grupo muscular
Como último recurso → usa la tabla heurística según el grupo
muscular y nivel seleccionado.
ℹ️
El generador IA usa ejercicios de la biblioteca del gimnasio. Si tu biblioteca tiene pocos
ejercicios, el WOD generado puede repetirse. Agregá más ejercicios en Entrenamiento
→ Biblioteca de Ejercicios.
Gestión del Gimnasio
Grilla semanal Gimnasio+
Vista completa del horario del gimnasio, organizado por día, hora y sala.
Los alumnos pueden reservar directamente desde la app.
🗓️
Vista semanal
Visualizá todas las clases de la semana organizadas por día y
hora. Editá o eliminá clases directamente desde la grilla.
🏛️
Por sala
Filtrá la grilla por sala para ver el horario de cada espacio
físico del gimnasio por separado.
👨🏫
Instructor asignado
Cada clase tiene un instructor asignado. Si el instructor
cambia, actualizá la clase en segundos.
🎯
Cupo máximo
Configurá el cupo máximo por clase. Cuando se llena, no se
pueden hacer nuevas reservas automáticamente.
📋
Copiar día completo
¿El martes tiene el mismo horario que el jueves? Copiá todas
las clases de un día a uno o varios días destino con un click. El sistema replica
horarios, salas, cupos e instructor.
📅
Clases puntuales (una vez)
¿Una clase especial el miércoles que viene, una clínica el primer sábado del mes próximo? Marcá "Solo una vez" al crearla y elegí la fecha. La clase aparece solo ese día — no contamina la grilla semanal.
⛔
Suspender clases
Suspendé una clase puntual (por ejemplo, un feriado) sin
eliminarla del cronograma permanente. Los alumnos con reserva reciben notificación
automática y se les devuelve el crédito.
Clases puntuales vs recurrentes
Al apretar "+ Agregar" en la grilla, el modal pide elegir el tipo:
🔁 Semanal recurrente (por defecto): la clase se repite todas las semanas el mismo día. Aparece en la grilla LUN-DOM. Ideal para tu horario fijo.
📅 Solo una vez: pide una fecha exacta (cualquier día desde hoy en adelante). Aparece en un panel separado "Próximas clases puntuales" abajo de la grilla. Ideal para clínicas, eventos, talleres, profes invitados o cualquier clase de fecha única.
Las dos modalidades comparten todo lo demás (sala, cupo, instructor, tipo de actividad grupal/personalizada) y los alumnos las ven igual en su app — pueden reservar, recibir recordatorios y aparecer en lista de asistencia.
💡
Cuándo NO usar puntual: si la clase se va a repetir más de 2 veces, conviene crearla recurrente y suspender los días que no aplican (usando Suspender clase arriba). Las puntuales son para casos donde repetir la operación de crear sería más laburo que crear una sola vez.
Cómo copiar un día
01
Buscá el ícono de copiar
En la cabecera de cada día que tiene clases aparece un
pequeño ícono de clipboard (📋). Hacé click en él.
02
Elegí los días destino
Se abre un modal que muestra el día origen y su cantidad
de clases. Marcá con checkboxes los días a los que querés copiar. Si un día ya tiene
clases, te lo avisa.
03
Elegí el modo de copiado
Si activás "Reemplazar clases
existentes", las clases del día destino se borran y se reemplazan por
las del origen. Si no, las nuevas se suman a las existentes (y se omiten las que
generen conflicto de horario).
💡
Tip: Podés copiar un día a múltiples destinos a la vez.
Por ejemplo, copiá el Lunes al Miércoles y Viernes en una sola operación. Ideal para armar
la semana rápidamente.
Panel del Instructor
Cartelera de sala Gimnasio+
Pantalla pública del horario semanal del gym. Puede proyectarse en la TV de
la recepción o sala de espera, visible sin iniciar sesión mediante el link del gym.
📋
Horario semanal público
Muestra todas las clases de la semana con horario, sala,
instructor y cupo disponible. Se actualiza automáticamente cuando el admin edita la
grilla.
🔗
Link público por gym
Cada gimnasio tiene su URL de cartelera única. No requiere
login. Ideal para proyectar en una TV de recepción o compartir por WhatsApp con los
alumnos.
🔄
Actualización automática
La cartelera se refresca sola. No es necesario recargar la
página ni intervenir: los cambios de horario aparecen en tiempo real.
Gestión del Gimnasio
Alumnos y membresías Gimnasio+
CRM completo integrado al sistema de clases. Gestioná membresías, pagos y
asistencia sin salir del panel.
👤
Perfil del alumno
Cada alumno tiene su perfil con datos de contacto, membresía
activa, historial de asistencia y evolución de RM.
💳
Membresías y créditos
Asignale un plan de membresía a cada alumno: clases por mes,
créditos disponibles y fecha de vencimiento.
🎯
Membresías concurrentes
Un alumno puede tener más de un plan activo al mismo tiempo
si son de tipos distintos: por ejemplo, una membresía grupal y una de
clases personalizadas simultáneamente.
🗂️
Tipos de plan por actividad
Cada plan de membresía tiene un tipo:
Grupal, Personalizada o Ambas
actividades. El tipo controla a qué turnos de la grilla puede acceder el
alumno.
⚠️
Alertas automáticas
El sistema alerta de vencimientos próximos, membresías
vencidas y alumnos sin renovar para que ninguno se pierda.
📊
Asistencia histórica
Registro completo de clases asistidas, ausentes,
cancelaciones y reservas por alumno.
🕓
Último login real
La columna Último login muestra la última vez que el
alumno abrió la app (cualquier request autenticada bumpea el registro con debounce de 60s).
Antes mostraba la fecha de creación del token, que podía ser hasta 90 días atrás. Los
alumnos sin actividad aparecen como "Nunca ingresó".
🎫
Editar pases restantes
En el modal Editar membresía, si el plan
tiene sessions_limit > 0, aparece un campo Pases restantes. Ideal
para traspasos desde otro sistema: un alumno que entra con 90 de 100 pases consumidos.
El hint muestra el total del plan y los consumidos actuales para contexto.
🗑️
Eliminación definitiva (hard delete)
Solo admin/superadmin. Un segundo botón junto
al de desactivar permite borrar definitivamente al alumno de la base de datos. El sistema
bloquea la operación con 409 si hay historia (reservas, membresías, asistencias o
movimientos de caja) y te dice exactamente cuántos registros bloquean. Requiere doble
confirmación escribiendo el nombre del alumno.
💡
Membresías concurrentes: si un alumno tiene plan Grupal + plan
Personalizado activos, el sistema los suma y le habilita acceso ambas actividades
automáticamente. No se permite asignar dos planes del mismo tipo de forma simultánea, ni
asignar un plan "Ambas" junto a cualquier otro.
⚠️
Desactivar vs. Eliminar definitivamente: usá Desactivar (❌) para
ocultar un alumno sin perder su historia — queda oculto pero las reservas, pagos y asistencias
se preservan. Usá Eliminar (🗑️) sólo si el alumno fue cargado por error o nunca tuvo
actividad; si tiene cualquier registro, el sistema bloquea la operación. Los planes
de membresía aplican la misma lógica: hard delete bloqueado si hay membresías
(activas o históricas) referenciando el plan.
Gestión del Gimnasio
Salud y apto médico Gimnasio+
Ficha de salud completa por alumno: certificado médico con control de
vigencia automático, registro de lesiones, datos físicos (peso, altura, IMC) y objetivos de
entrenamiento.
🩺
Apto médico con vigencia
Subí el certificado del alumno (PDF, JPG, PNG — hasta 8 MB).
El sistema registra la fecha de emisión y calcula automáticamente la vigencia de 1 año.
Alerta visual cuando está por vencer o vencido.
🤕
Registro de lesiones
Anotá lesiones activas del alumno con descripción y fecha. Al
recuperarse, marcala como resuelta. El historial completo queda guardado en la ficha.
📏
Ficha física
Registrá peso, altura e IMC de cada alumno. El sistema
calcula el IMC automáticamente. También podés ingresar objetivos de entrenamiento y
notas físicas del instructor.
⚠️
Alerta en lista de alumnos
La columna Alertas en la lista de alumnos
muestra badges cuando alguien no tiene apto médico válido, facilitando el control de
cumplimiento.
🚫
Bloquear check-in sin apto vigente
Activá esta opción en ⚙️ Configuración para
que los alumnos sin certificado médico vigente (o vencido) no puedan hacer check-in por QR.
El alumno ve un mensaje en la app indicándole que necesita presentar su certificado.
Ideal para gimnasios que requieren apto obligatorio por normativa.
ℹ️
Toggle en Configuración: Tanto la visibilidad del módulo de Apto Físico
como el bloqueo de check-in se controlan desde ⚙️ Configuración del Sistema.
Al desactivar el módulo, los badges 🩺 y la ficha de salud desaparecen de todo el sistema.
Gestión del Gimnasio
Suspensión de membresías Gimnasio+
Congelá temporalmente la membresía de un alumno (vacaciones, lesión, pausa
voluntaria) sin perder los días restantes. El período de freeze no se descuenta del plan.
🧊
Freeze con fechas
Definí la fecha de inicio y fin del freeze, y el motivo. La
membresía queda suspendida durante ese período. El alumno no puede reservar mientras
está congelado.
▶️
Descongelar anticipado
Si el alumno vuelve antes de lo esperado, podés descongelar
la membresía en cualquier momento. El vencimiento se recalcula automáticamente.
📋
Historial de suspensiones
Cada membresía registra el historial completo de freezes:
fechas, duración y motivo para transparencia total en la gestión.
Gestión del Gimnasio
Check-in por QR Gimnasio+
El alumno llega al gym, escanea el QR y listo. El sistema registra la
asistencia y descuenta la clase automáticamente.
1
Imprimí o mostrá el QR del gym
En Configuración → QR del gimnasio encontrás el código QR
único de tu sede. Imprimilo y pegalo en la entrada, o mostralo en un tablet.
2
El alumno escanea con la app
Con la cámara de la app GymFlow, el alumno escanea el QR
al llegar. El sistema detecta si tiene clase reservada para esa fecha y hora.
3
Registro automático
La asistencia queda registrada, el crédito de la clase se
descuenta y el alumno aparece como presente en la vista del instructor.
⚠️
El check-in solo funciona si el alumno tiene la app GymFlow instalada y vinculada a tu
gimnasio. El QR de cada sede es único e intransferible.
Gestión del Gimnasio
Notificaciones Push Gimnasio+
Comunicación directa con todos tus alumnos. Notificaciones manuales y
automáticas, sin WhatsApp, sin grupos, sin intermediarios.
Notificaciones manuales
📢
Broadcast al gimnasio
Enviá un aviso a todos los alumnos del gym a la vez. Llega
directo como notificación al celular, aunque la app esté cerrada. Título y cuerpo
editables con preview en tiempo real.
📋
Historial con destinatario
El panel muestra cada notificación enviada con su tipo
(badge), quién la recibió —alumno individual o �� Todos los socios— y cuántos
dispositivos la recibieron con éxito.
Notificaciones automáticas
El servidor GymFlow envía
alertas automáticas según el estado de membresía y asistencia de cada alumno. No requieren
configuración adicional.
Tipo
Cuándo se envía
Destinatario
🎉 Bienvenida
Primeras 24 hs desde el alta
Nuevo alumno
⏰ Recordatorio de clase
25–35 min antes de una clase reservada
Alumno con reserva
📅 Recordatorio de vencimiento
7 días antes del vencimiento
Alumno próximo a vencer
🔔 Vence pronto
3 días o menos al vencimiento
Alumno por vencer
⚠️ Membresía vencida
Vencimiento superado (hasta 30 días)
Alumno sin renovar
😴 Re-engagement
Más de 14 días sin concurrir con membresía activa
Alumno inactivo
🎂 Cumpleaños
El día del cumpleaños del alumno
Alumno con fecha de nacimiento cargada
🎂
Saludo de cumpleaños personalizable: En ⚙️ Configuración
podés editar el título y mensaje del push de cumpleaños. Usá los placeholders
{nombre} (primer nombre del alumno) y {gym} (nombre del gimnasio)
para personalizarlo. Se envía una sola vez por año.
⚙️
Todos los push automáticos son configurables. Desde
⚙️ Configuración del Sistema podés activar o desactivar individualmente
cada tipo de notificación: recordatorio de clase, aviso de vencimiento de membresía y
saludo de cumpleaños.
🔍
Panel de historial: en Notificaciones Push del panel admin podés
ver cada push con su badge de categoría, quién lo recibió y cuántos dispositivos lo
recibieron correctamente.
Comunicación con el alumno
Documentos PDF Gimnasio+
Subí PDFs desde el panel del gym y que el alumno los descargue desde su app. Para reglamentos, protocolos, rutinas, planes de nutrición, aptos firmados o cualquier archivo que tu gym necesite compartir de forma persistente — sin pasar por WhatsApp y sin que se pierdan en el chat.
Dos tipos de documentos
📋
Generales del gym
Visibles para todos los alumnos del gimnasio. Útil para reglamento, política de cancelación, tarifas vigentes, protocolo COVID, calendario de feriados. Se suben desde el menú Documentos del panel.
👤
Personales del alumno
Visibles solo para ese alumno. Ideal para rutina del mes, plan de nutrición, apto físico firmado, certificados de cursos. Se suben desde la ficha de cada alumno.
Lo que ve el alumno
En la app, dentro de Mi Cuenta → Mis documentos, aparece una lista unificada con los generales del gym + los personales del alumno. Cada item muestra título, tamaño y fecha de subida. Al tocar un archivo, se abre con el visor de PDF nativo del dispositivo — se puede leer, guardar, imprimir o reenviar.
Push automática al subir un personal
Cuando subís un PDF personal a un alumno, el sistema dispara automáticamente una notificación push al celular del alumno — aunque la app esté cerrada. Título: 📄 Documento personal nuevo, cuerpo: el nombre del archivo.
Los documentos generales NO disparan push (para no saturar a 300 alumnos cada vez que actualizás el reglamento). Si necesitás avisar de un general específico, usá Notificaciones Push manuales con el título y texto que prefieras.
Validaciones técnicas
Validación
Detalle
Tipo de archivo
Solo PDF. Se valida el MIME real con finfo_file(), no solo la extensión.
Tamaño máximo
20 MB por archivo.
Módulo habilitado
Si Documentos PDF está OFF en Configuración, el endpoint devuelve 403.
Destinatario
Si subís un personal, el alumno debe pertenecer a tu gimnasio.
Almacenamiento
Filename UUID en assets/uploads/gym_docs/{gym_id}/ — imposible adivinar paths.
Auditoría
Cada subida queda registrada en audit_log con uploader, scope (general/personal) y tamaño.
Configuración del módulo
Dos toggles en Configuración del Sistema:
Documentos PDF: enciende/apaga el módulo entero. Apagado: no aparece el menú Documentos en el panel, ni la pestaña "Mis documentos" en la app del alumno.
Notificar al alumno al subirle un PDF: controla si llega push cuando le subís un personal. Default ON. Solo se habilita si el toggle padre está ON.
💡
Por qué desacoplarlo del chat: el chat sirve para diálogo, los documentos para referencia. Buscar "mi rutina más reciente" en una lista de archivos toma segundos; buscarla en 800 mensajes de WhatsApp es horror. Además, el alumno no puede borrar accidentalmente un documento subido por el gym — el módulo es solo de lectura del lado del alumno.
Gestión del Gimnasio
Chat en tiempo real Gimnasio+
Canal directo entre alumnos (desde la app) y el staff (desde el panel web).
Mensajes instantáneos vía WebSocket, con notificaciones push cuando la app está cerrada y
alertas de browser para el staff.
📱
Vista del alumno (app)
El alumno escribe desde la pestaña Chat en la app móvil. Los
mensajes llegan instantáneamente al panel del staff. El historial completo se carga al
abrir el chat.
🖥️
Vista del staff (panel web)
En Chat con Alumnos del panel, el staff ve
todas las conversaciones abiertas, con el número de mensajes sin leer por sala. Responde
en tiempo real desde el navegador.
🔔
Notificaciones push al alumno
Cuando el staff responde, el alumno recibe una notificación
push aunque tenga la app cerrada. Al tocarla, se abre directamente el chat — sin pasar
por la pantalla de inicio.
💡
Alertas de browser para el staff
Si el staff tiene el panel abierto en otra pestaña, aparece
una notificación del navegador al recibir un mensaje nuevo. El globo del nav se
actualiza en tiempo real y desaparece sólo al abrir el chat.
1
Alumno escribe desde la app
Pestaña “Chat” en el menú inferior de la app → escribir
mensaje → enviar. El mensaje llega instantáneamente al panel del staff.
2
Staff recibe notificación en el nav
Un globo verde con el conteo de mensajes sin leer aparece
en el ícono de Chat del menú de navegación en todas las páginas del panel.
3
Staff abre la sala y responde
En Chat con Alumnos, hace click sobre la conversación del
alumno, carga el historial y escribe la respuesta. El globo desaparece al entrar a
la sala.
4
Alumno recibe la respuesta
Llega una notificación push al celular. Al tocarla, la
app abre el chat directamente. Si ya tiene el chat abierto, el mensaje aparece
instantáneamente.
ℹ️
Reconexion automática: Si el alumno pierde la señal, la app muestra un
aviso de error de conexión. Al recuperar WiFi o datos, el socket se reconecta
automáticamente sin intervención del usuario.
💡
Tip para el staff: Para recibir alertas del browser cuando estás en otra
pestaña, aceptá los permisos de notificación la primera vez que te lo pida el navegador. La
alerta se cierra automáticamente a los 8 segundos.
Gestión del Gimnasio
Dashboard de deudores Gimnasio+
Vista centralizada de todos los alumnos con membresías vencidas o pagos
pendientes. Accionable: desde esta pantalla podés contactar al alumno o asignarle una membresía
directamente.
📛
Lista de deudores
Muestra nombre, plan vencido, hace cuántos días está en deuda
y el monto adeudado. Ordenable por severidad de la deuda.
⚡
Acción directa
Desde la lista podés abrir el perfil del alumno, asignarle
una nueva membresía o enviarle una notificación de recordatorio sin salir de la
pantalla.
🔔
Alertas en la lista de alumnos
Los alumnos en deuda aparecen con un badge 💳
Deudor visible en la lista general de alumnos, para identificarlos de un
vistazo.
Gestión del Gimnasio
Calificaciones de clases Gimnasio+
Los alumnos califican la clase desde la app después de asistir. El admin y
los instructores ven el puntaje y los comentarios para medir la satisfacción y mejorar.
⭐
Rating post-clase
Luego de asistir, el alumno puede dejar una calificación de 1
a 5 estrellas y un comentario opcional. El rating queda asociado a la clase y al
instructor.
📊
Dashboard de calificaciones
Vista consolidada de todas las calificaciones recibidas, con
promedio por instructor, por tipo de clase y por período. Detectá qué clases generan
mayor satisfacción.
💬
Comentarios anónimos
Los comentarios se muestran de forma anónima para el
instructor. Solo el admin puede ver qué alumno dejó cada calificación.
Gestión del Gimnasio
Equipo de trabajo Gimnasio+
Alta, baja y gestión de instructores, staff y administradores. Cada usuario
tiene su propio acceso con los permisos de su rol.
👨🏫
Instructores
Acceso al constructor de WODs, panel en vivo, biblioteca y
scheduler. Comparten la biblioteca de sesiones con todos los instructores del gym.
🧑💼
Staff
Acceso al CRM de alumnos, chat, check-in y caja. Ideal para
el personal de recepción que gestiona alumnos y cobros pero no dirige clases.
🔑
Administradores
Acceso total: ven todo lo de instructores y staff más la
gestión del equipo, sedes, reportes, calificaciones, medios de pago y configuración del
gym.
🔒
Credenciales independientes
Cada miembro del equipo tiene su propio usuario y contraseña.
Al desvincularlo del gym, pierde el acceso automáticamente.
Gestión del Gimnasio
Caja y reportes Gimnasio+
Control completo de ingresos y egresos por turno de caja, con cierre de
arqueo y reporte consolidado por sede y cajero exportable como PDF.
🔓
Turnos de caja
Cada cajero abre un turno con el efectivo inicial. Mientras
el turno está activo puede registrar ingresos y egresos. Al cierre, el sistema hace el
arqueo comparando el efectivo esperado vs el real.
💳
Medios de pago
Configurá los métodos que acepta el gym (Efectivo, Tarjeta,
Transferencia, MercadoPago, etc.). Cada movimiento queda asociado a su medio de pago
para el desglose en los reportes.
🔗
Registro automático al cobrar
Al asignar una membresía a un alumno con turno abierto, el
pago se registra automáticamente en la caja con el monto y el medio de pago
seleccionados.
📊
Reporte consolidado
Vista de todos los movimientos agrupados por Sede →
Cajero, con subtotales por cajero, totales por sede y gran total del gym.
Filtrable por período, sede, cajero y tipo.
📍
Turno atado a sede
En gyms multi-sede, cada turno nace con una sede obligatoria — así las ventas, cobros y movimientos quedan vinculados a la sucursal correcta. Cambiar de sede requiere cerrar y abrir un turno nuevo. Plan Gimnasio base (single-sede) opera sin este gate.
1
Configurar medios de pago
En Caja → Medios de pago, creá al menos
el método Efectivo. Sin este paso el saldo inicial puede aparecer en $0.
2
Abrir turno
Clic en Abrir turno, elegí la sede (si tu gym es multi-sede) e ingresá el efectivo inicial disponible (puede ser $0). Los botones de Ingreso y Egreso se habilitan automáticamente.
3
Operar: ingresos y egresos
Los pagos de membresías se registran solos. También podés
agregar ingresos o egresos manuales (proveedores, gastos, etc.).
4
Cerrar turno y arcar
Clic en Cerrar turno / Arqueo. Ingresá
el efectivo físico contado. La diferencia con el esperado queda registrada en el
historial.
5
Exportar reporte como PDF
Abrí Reporte de Caja en el menú, filtrá
el período y la sede que necesitás, y presioná 🖨️ Imprimir / PDF
(o Ctrl+P).
💡
El reporte agrupa por Sede → Cajero. Ideal para el dueño que quiere ver
qué cajero movió qué en cada sucursal, con totalizadores y en un solo PDF.
NUEVO
Shop — Stock & Ventas Gimnasio+
Punto de venta integrado con gestión de stock por lotes FIFO (el que entra
primero se vende primero). Cada venta genera un movimiento de caja automáticamente.
📦
Catálogo de productos
Creá productos con nombre, categoría, código de barras y
precio de venta. Activá o desactivá productos según necesites.
📥
Ingresos de stock (Lotes FIFO)
Cada ingreso de mercadería crea un lote con cantidad y precio
de costo. Los lotes se consumen en orden cronológico al vender — las unidades más viejas
salen primero.
🛒
Punto de venta (POS)
Grilla visual para seleccionar productos, elegir cantidad y
medio de pago, y registrar la venta con un clic. Requiere turno de caja abierto.
📊
Ganancia por venta
El sistema calcula automáticamente el costo FIFO y la
ganancia de cada venta. Ejemplo: si compraste 10 a $800 y vendés a $1.500, ganás $700
por unidad.
💰
Integración con Caja
Cada venta genera un ingreso en la caja del turno activo.
Aparece en el arqueo, en los reportes y en la auditoría.
📒
Cuenta corriente (fiado)
Alumnos y staff pueden consumir sin pagar en el momento: el
consumo queda como deuda y se salda después, total o parcial. El cargo no entra a la caja
(es deuda); el pago sí entra, al saldar, en la caja del turno. Configurable: factura al
consumir o al saldar, y tope de crédito por persona (libre o limitado). El saldo pendiente
aparece en el Dashboard de Deudores.
⚠️
Alertas de stock bajo
Definí un stock mínimo por producto. El sistema alerta
visualmente cuando un producto está por debajo del umbral.
🏢
Inventario separado por sede
En gyms multi-sede cada lote pertenece a una sucursal física. El FIFO de venta consume lotes de la sede del turno; el stock de otras sedes no se toca. Visibilidad de cuánto hay en cada sucursal desde el detalle del producto.
🔀
Transferir stock entre sedes
Mové unidades físicas de sede A a sede B (o desde el "pool sin sede" si tenés stock histórico). El sistema parte los lotes si hace falta y preserva el cost_price y la antigüedad original — el FIFO histórico no se rompe.
Paso a paso
1
Crear un producto
Ir a Shop → Productos → + Nuevo
producto. Ingresá nombre, categoría, precio de venta y stock mínimo.
2
Ingresar stock
Ir a Shop → Ingresos. Seleccioná el
producto, ingresá la cantidad y el costo unitario de compra. Cada ingreso crea un
lote independiente.
3
Vender
Ir a Shop → Vender. Seleccioná el
producto de la grilla, elegí la cantidad y el medio de pago, y hacé clic en
Vender. Necesitás un turno de caja abierto.
💡
Si comprás 10 aguas a $800 y después 5 más a $1.000, las primeras 10 ventas usan el costo
de $800. Recién cuando se agotan, las siguientes ventas usan el costo de $1.000. Así
funciona FIFO.
Soporte
Tickets de soporte Todos los planes
Sistema de tickets para reportar problemas o consultas al equipo de
GymFlow. Cada ticket tiene historial de mensajes en tiempo real.
🎫
Apertura de tickets
Cualquier miembro del equipo (instructor, staff o admin)
puede abrir un ticket con título, categoría y descripción del problema directamente
desde el panel.
💬
Hilo de mensajes en tiempo real
Cada ticket tiene su propia sala de conversación con el
equipo de soporte de GymFlow. Los mensajes se intercambian en tiempo real vía WebSocket.
📊
Estado del ticket
Los tickets tienen estado: Abierto, En proceso y Resuelto. El
equipo puede priorizar y hacer seguimiento de cada caso hasta su resolución.
Integraciones
Access Bridge Add-on
Servicio local de Windows que conecta lectores biométricos (huella
dactilar, tarjeta RFID, reconocimiento facial) con GymFlow para controlar el acceso al molinete
en tiempo real — sin intervención humana. Soporta también acceso por PIN/DNI
como alternativa a la huella, y se actualiza automáticamente sin intervención
del administrador.
👆
Enrolamiento en mostrador
El alumno registra su huella en el reloj del mostrador al
momento de inscribirse. El sistema mapea automáticamente esa huella a su perfil en
GymFlow.
🚪
Validación en el molinete
Al poner el dedo (o tarjeta/rostro) en el reloj del molinete,
el sistema valida la membresía en tiempo real. Si está activa: abre el relay. Si venció
o está en deuda: deniega el acceso con señal sonora.
🔢
Acceso por PIN / DNI NUEVO
Si un alumno no tiene la huella registrada o se borró, puede
ingresar su PIN (DNI u otro número) desde el teclado del molinete. El PIN se configura
desde el perfil del alumno en el panel web → Alumnos. Queda registrado como asistencia
igual que la huella.
📋
Check-in automático
Cada acceso exitoso queda registrado como asistencia en
GymFlow, igual que el check-in por QR. Sin pasos extra para el staff.
🔌
Funciona sin internet
Si se cae la conexión, el bridge mantiene caché local de los
últimos resultados (24 hs por default) y sigue validando accesos sin interrupciones.
⬆️
Auto-actualización NUEVO
Al iniciar, el bridge verifica automáticamente si hay una
nueva versión disponible. Si existe, muestra un banner informando la versión y la
descarga e instala con un click — sin intervención técnica.
⚙️
Configuración sin técnicos
La app de escritorio incluye ABM visual de dispositivos,
generador de token, log en vivo y guía paso a paso. No requiere editar archivos de
configuración.
🔑
Seguridad por token
La comunicación entre el bridge y GymFlow se autentica con
Bearer token generado desde el panel de admin. Cada token es único por gimnasio y
revocable.
🛑 Motivos de rechazo (deny reasons)
Cada intento de acceso (granted o denied)
queda logueado en device_access_log y se emite en tiempo real al panel
Access Live. Los críticos disparan alerta roja full-screen con countdown.
Motivo
Cuándo ocurre
Alerta roja
expired
La membresía venció (end_date < hoy).
✅
payment_overdue
La membresía está impaga.
✅
member_inactive
El alumno fue desactivado en el CRM.
✅
no_mapping
La huella/tarjeta no está asociada a ningún alumno.
—
sede_not_allowed
La membresía no habilita esta sede.
—
daily_limit_reached
El gym tiene access_max_passes_per_day > 0 y el alumno ya agotó sus pases del día (se cuentan sólo ingresos autorizados, reset a las 00:00).
✅
apto_missing
El gym requiere apto médico (require_apto_checkin = 1) y el alumno no tiene certificado cargado.
✅
apto_expired
El certificado médico del alumno venció (valid_until < hoy).
✅
🚪 Límite de pasos por día (gyms sin grilla)
Para gimnasios que controlan el ingreso por
biometría/molinete sin reservar clases, el setting access_max_passes_per_day
(Configuración → Reglas de reservas) limita cuántas veces puede ingresar un alumno en el día.
Opciones 0 (sin límite, default), 1, 2, 3, 4 o 5. Caso típico: "solo dejar pasar
una vez por día a alumnos con cuota al día". Aplica tanto a validate (UID
huella/tarjeta/rostro) como a validate-by-pin.
🤝 Partner oficial de hardware — GSD Tecnología
GymFlow tiene convenio oficial con GSD Tecnología
para la provisión de molinetes, terminales biométricos y lectores de huella/RFID/facial
para gimnasios.
Recomendamos sus equipos y
garantizamos compatibilidad absoluta
con Access Bridge: instalación verificada en clientes productivos, soporte conjunto y
actualizaciones sincronizadas. Si comprás el hardware con GSD, te conectamos al gimnasio
sin sorpresas.
¿Querés cotizar molinetes o terminales? Escribinos y te ponemos en contacto con GSD.
🖥️ Marcas de hardware
compatibles
El bridge usa arquitectura de plugins:
cada marca de reloj biométrico es un módulo independiente que se puede agregar sin actualizar el
sistema core.
⭐
ZKTeco — Lector USB GARANTIZADO
Modelo verificado: ZK9500 USB. Lector de
huella dactilar por USB, utilizado en el mostrador de enrolamiento. Compatibilidad
garantizada con SDK ZKFinger 5.x (incluido en el instalador). Nota: es un lector de
solo huella, sin teclado ni relay.
⭐
DigitalPersona HID — Lector USB GARANTIZADO
Lectores de huella USB de HID Global / DigitalPersona:
U.are.U 4500 y 5300. Integración vía SDK
DigitalPersona / U.are.U para enrolamiento en mostrador. Alternativa al ZK9500 cuando
el gym ya tiene hardware HID instalado. Lector de solo huella, sin teclado ni
relay.
✅
ZKTeco — Terminales de molinete COMPATIBLE
Terminales ZKTeco con teclado integrado y relay:
MA300, K40, F18, F22, C2-260, C3-400 y similares. Soportan huella
dactilar, tarjeta RFID, reconocimiento facial y acceso por PIN desde el teclado físico.
Conexión vía protocolo PUSH o SDK.
🔧
Anviz A PEDIDO
Protocolo OAP/TCP. Huella y tarjeta. Modelos EP300, T5, W1
Pro. Disponible bajo solicitud en 2-5 días hábiles.
Enrollment desde el Bridge: En la pestaña Biométrico aparece el botón
📷 Enrolar en terminal. Al hacer clic, el Bridge crea el usuario en el
terminal vía ISAPI y lo mapea en GymFlow. El alumno completa el registro de su cara
directamente en la pantalla táctil del equipo (o el cajero lo asiste).
Nota: no tiene lector de huella dactilar. Usa cara + tarjeta.
🔧
Dahua / Virdi / FingerTec A PEDIDO
Integraciones adicionales disponibles para otras marcas
presentes en el mercado latinoamericano. Consultá disponibilidad y tiempo de desarrollo.
➕
Otras marcas
¿Tu reloj no está en la lista? Consultá con el equipo de
GymFlow. Si el fabricante provee SDK o API documentada, desarrollamos el adaptador para
tu hardware específico.
💡 ¿Tu molinete o reloj no aparece? Comunicáte
con nosotros indicando la marca y modelo. Si el fabricante provee SDK o documentación de
API, podemos desarrollar el adaptador y tenerlo disponible en pocos días hábiles.
Integraciones
Monitor HR en tiempo real — ANT+ Add-on
El módulo de HR monitoring permite proyectar en el TV de la sala el ritmo
cardíaco de cada alumno en tiempo real mediante cinturones ANT+. El instructor
controla la sesión desde el panel web; el Bridge transmite las lecturas vía Socket.IO. No
requiere apps adicionales.
❤️
BPM en tiempo real
Cada cinturón ANT+ transmite el BPM del alumno cada ~1
segundo al Bridge, que lo relaya al display vía Socket.IO. Sin polling, sin delay
perceptible.
🟢
Zonas de entrenamiento
El sistema clasifica automáticamente el esfuerzo:
Zona 1 Verde (<65% FCmax), Zona 2 Azul (65–80%) y
Zona 3 Roja (>80%). El FCmax es 220 - edad por default o
configurable por alumno.
🔥
Calorías acumuladas
Se calculan con la fórmula Keytel (2005) en base a BPM, edad,
peso y sexo del alumno. Se acumulan durante toda la sesión y se muestran en el display.
🎽
Asignación de cinturones
El instructor asigna el serial ANT+ de cada cinturón a cada
alumno desde el panel HR Monitor → tabla de enrolamiento. Un serial por alumno, un
alumno por serial.
📺
Display proyectable
Abrís hr-display.php en el TV de la sala (link
desde el dashboard). Se auto-ajusta la grilla según la cantidad de alumnos. Diseño
oscuro optimizado para proyección.
💾
Historial de sesiones
Cada sesión queda registrada en la base de datos con promedio
y máximo de BPM, calorías, y minutos por zona para cada alumno. Datos disponibles para
reportes futuros.
🔄 Flujo de uso
1️⃣
Habilitá el módulo HR en Configuración del Sistema
Admin → ⚙️ Configuración (en el menú
lateral) → activá el toggle ❤️ ANT+ HR Monitoring. Esto hace aparecer
el botón HR Display y el ítem de nav al instructor.
2️⃣
Asigná cinturones a alumnos
Instructor → ❤️ HR Monitor → tabla de enrolamiento. Ingresá
el serial del cinturón (impreso en el dispositivo, ej: A3F2C1) para cada
alumno. También podés ajustar su FCmax individual.
3️⃣
Abrí el display en el TV
Dashboard → sala → botón ❤️ HR. El display
se abre en una nueva pestaña. Poné pantalla completa (F11) y listo. También desde el
panel HR Monitor → botón 📺 Abrir Display.
4️⃣
Iniciá la sesión
Desde el panel HR Monitor, ingresá el nombre de la sesión
(ej: "CrossFit 18hs") y presioná ▶ Iniciar sesión. El Bridge detecta
los cinturones ANT+ activos y comienza a transmitir.
🛜 Hardware requerido
📡
Dongle ANT+ USB
Cualquier dongle USB ANT+ estándar (ej: Garmin ANT+
USB-m, aprox. USD 15). Se conecta a la misma PC donde corre el GymFlow
Bridge.
🎽
Cinturones / brazaletes ANT+
Cualquier cinturón de frecuencia cardíaca con protocolo ANT+
(Garmin HRM, Polar H7/H10, Wahoo TICKR, Decathlon, etc.). Sin restricción de marca.
🖥️
PC con GymFlow Bridge
El mismo servicio Bridge que ya usás para el control de
acceso. Solo necesitás activar el bloque Hr en la configuración con
"Enabled": true.
💡 Modo Mock para pruebas: El Bridge incluye un
modo de simulación ("Brand": "ANTMock") que genera lecturas ficticias para
hasta 16 alumnos sin necesidad de hardware ANT+. Ideal para probar el display antes de
comprar el equipamiento.
Gestión del Gimnasio
Cobros con MercadoPago Gimnasio+
Tu gimnasio conecta su propia cuenta de MercadoPago y tus alumnos pagan la
cuota desde la app. La membresía se activa automáticamente sin intervención manual.
💳
Pago desde la app
El alumno ve su cuota pendiente en la app, toca "Pagar", y se
abre MercadoPago. Una vez aprobado, la membresía se activa sola.
🔄
Suscripciones recurrentes
El alumno puede suscribirse al débito automático mensual.
MercadoPago cobra cada mes y GymFlow renueva la membresía automáticamente.
📅
Renovación anticipada
Cuando faltan menos de 10 días para el vencimiento, la app
ofrece "Renovar ahora". El alumno paga y la nueva membresía arranca al día siguiente del
vencimiento actual.
🔔
Webhooks validados
Cada gym configura su propia clave secreta de webhook. Los
pagos se validan con firma criptográfica HMAC-SHA256 y se registran en el log de
auditoría.
1
Conectá tu cuenta de MercadoPago
Desde Cobros MercadoPago en el menú
lateral, ingresá tu Access Token de MercadoPago. El sistema verifica la conexión
automáticamente.
2
Configurá el Webhook
Desde la sección de Webhook en la misma página, seguí los
pasos para configurar la URL de notificaciones en tu panel de MercadoPago y pegá la
clave secreta.
3
Tus alumnos pagan desde la app
Los alumnos ven sus cuotas pendientes, pagan con un toque
y la membresía se activa al instante. Sin planillas, sin WhatsApp, sin cobros
manuales.
ℹ️
Comisiones: GymFlow no cobra comisión. Solo aplica la comisión estándar de
MercadoPago (~4,99% + IVA). El dinero llega directamente a la cuenta del gimnasio.
💡
Suscripciones desde la app: Activá el toggle "Suscripciones desde la app"
en la configuración de Cobros para permitir que los alumnos generen débitos automáticos
mensuales. El alumno puede cancelar su suscripción desde la app en cualquier momento.
Gestión del Gimnasio
Multi-sede Centro · Gimnasio + addon · Red
Cuando tu gym crece más allá de un local, GymFlow deja de tratar la "sede" como algo opcional y la convierte en el eje operativo: cada venta, cobro, lote de stock y turno de caja queda vinculado a una sucursal concreta. Un solo panel, datos separados donde importa y consolidados donde hace falta.
Concepto: sede central + sucursales
Todo gym multi-sede nace con una Sede Central — la dirección principal del local original. Después sumás sucursales (BIS, Palermo, Villa Crespo, etc.). El sistema auto-crea la Central al activarse un plan con soporte multi-sede, y si la creaste antes del fix te muestra un banner azul "Te falta la sede central" con un clic para resolverlo.
El nav del admin muestra el ítem "Sedes" solamente cuando el plan efectivo soporta más de una sede (Centro o Red). Plan Gimnasio (1 sede por definición) opera como single-sede, sin los gates de multi-sede ni la pantalla de gestión.
Addon: sumar sedes al plan Centro
El plan Centro incluye 3 sedes y permite sumar sedes extra por $25.000 ARS / sede / mes. El plan Red trae sedes ilimitadas sin addon. El plan Gimnasio no admite sumar sedes — si abrís una sucursal y necesitás operarla en el sistema, pasás a Centro.
Lo que se separa por sede
💰
Turno de caja por sede
Cada turno nace con una sede asignada — no se puede abrir "sin sede". Las ventas y cobros del turno quedan atados a esa sucursal. Para cambiar de sede, cerrás el turno con arqueo y abrís uno nuevo.
📦
Inventario de shop separado
Cada lote de stock pertenece a una sede física. El FIFO de venta consume primero los lotes de la sede donde se hace la venta. Podés transferir stock entre sedes preservando cost_price y antigüedad de lote original.
🧾
Cobros de membresía con sede
Cada pago de cuota se liga al turno de caja, que a su vez tiene sede. Los reportes financieros por sede dejan de tener ingresos "fantasma" sin ubicación.
👥
Permisos de staff por sede
Desde el equipo asignás a cada cajero / instructor a una o más sedes. Al entrar a Caja, Shop o reportes, solo ve movimientos y ventas de sus sedes. Admin y superadmin ven todo.
🎨
Branding por sede
Cada sede puede tener su propio logo y paleta de colores. Si no lo define, hereda el branding del gym. El QR de check-in de cada sede muestra la identidad correcta.
📍
Alumnos con sede preferida
Cada alumno tiene una sede preferida. Podés transferirlo entre sedes con un click — migra su vinculación en membresías restringidas. El historial (asistencias, pagos) queda intacto.
Lo que se unifica
Catálogo de productos: una sola lista para todas las sedes. Lo que cambia es el stock físico por sede.
Alumnos y membresías: el padrón es único. Un alumno "pertenece al gym", no a una sede. La restricción de sede es una propiedad de la membresía (all_sedes o pivot con sedes específicas).
Planes y precios: los planes de membresía son del gym, no de la sede. Si querés precios distintos por sede, lo resolvés con convenios.
Biblioteca de sesiones WOD y plantillas PT: compartidas entre todas las sedes. Un WOD creado en Palermo puede ejecutarse en Villa Crespo al mismo tiempo.
Reportes consolidados: el admin tiene una "vista global" opcional que cruza todas las sedes. Los breakdowns por sede y por cajero son el default del panel financiero.
Flujo operativo en un día típico
Cajero llega a su sede: entra a Caja → elige su sede en el selector → abre turno con monto inicial de efectivo.
Operatoria: vende productos, cobra cuotas, registra movimientos. Todo queda atado al turno de esa sede.
Cambio de sede (raro): cierra turno con arqueo en sede A, se traslada, abre nuevo turno en sede B.
Fin del día: cierre de turno con arqueo. Diff cero o con nota de explicación.
Modo grupal vs modo por usuario
Las cajas pueden funcionar en dos modos configurables por el admin:
Por usuario (default): cada cajero tiene su propio turno. Arqueo individual al cierre.
Grupal: un solo turno por sede donde todos cargan movimientos. Coexisten varios grupales simultáneos si hay varias sedes (uno por sucursal).
En ambos modos, el sistema respeta la regla multi-sede: todo turno nace con sede, cambiar de sede implica cerrar y abrir uno nuevo.
Gestión del Gimnasio
Configuración del Sistema Todos los planes
Panel centralizado de configuración del gimnasio. Desde ⚙️ Configuración
en el menú lateral controlás módulos, reglas de negocio, notificaciones automáticas y políticas de acceso.
Cada gimnasio tiene su propia configuración independiente.
Módulos activables
Cada módulo se activa o desactiva
con un toggle. Al desactivar un módulo, desaparece de todo el sistema (menú, badges, perfiles).
Módulo
Descripción
Estado por defecto
❤️ ANT+ HR Monitoring
Monitor de frecuencia cardíaca en tiempo real. Display por sala para TV, panel de instructor con BPM en vivo. Requiere GymFlow Bridge con cinturones ANT+.
Inactivo
🩺 Apto Físico
Gestión del certificado médico. Al desactivarlo, el apto no se muestra en la lista de alumnos ni en el perfil, y los badges de 🩺 desaparecen del sistema.
Activo
🧾 Factura Electrónica AFIP
Emisión de facturas electrónicas a través de AFIP/ARCA. Soporta Monotributo (Factura C) y Responsable Inscripto (Factura A/B). Cada gym configura sus credenciales.
Inactivo
Reglas de acceso y control
Regla
Descripción
Estado por defecto
🚫 Bloquear check-in sin apto vigente
Los alumnos sin certificado médico vigente no pueden hacer check-in por QR. El alumno ve un mensaje en la app indicándole que necesita presentar su certificado. Requiere que "Apto Físico" esté activo.
Inactivo
🏦 Requerir turno de caja abierto para vender
El Shop no permite registrar ventas si el cajero no tiene un turno de caja abierto. Al desactivarlo, las ventas se registran aunque no haya turno abierto (útil para gyms que no usan el módulo de caja). Las ventas sin turno no quedan vinculadas a ningún arqueo.
Activo
💰 Modo de caja (Por usuario / Grupal)
Por usuario (default): cada usuario abre y opera su propio turno; los admins pueden ver y cerrar las cajas de otros. Grupal: una única caja compartida por gimnasio (o por sede). Cualquier usuario con acceso carga movimientos; solo un administrador o quien la abrió puede cerrarla. Mientras haya una caja grupal abierta, nadie puede abrir otra. Al cambiar de modo se cierran automáticamente los turnos abiertos (sin arqueo) con audit log.
Por usuario
Notificaciones push automáticas
Cada tipo de push automático
se activa o desactiva individualmente. Requiere que los alumnos tengan la app instalada.
Notificación
Descripción
Estado por defecto
🔔 Recordatorio push de clases
Envía un push 30 minutos antes de la clase reservada con el nombre y horario de la clase.
Activo
📋 Aviso de vencimiento de membresía
Push automático cuando la membresía vence en los próximos 3 días. Se envía una sola vez por membresía.
Activo
🎂 Saludo de cumpleaños
Push automático el día del cumpleaños. Título y mensaje editables con placeholders: {nombre} (primer nombre del alumno) y {gym} (nombre del gimnasio). Se envía una sola vez por año. Requiere fecha de nacimiento cargada.
Activo
✏️
Personalización del mensaje de cumpleaños: En la configuración podés editar
el título (máx 50 caracteres) y el mensaje (máx 100 caracteres). Ejemplo por defecto:
Título: 🎂 ¡Feliz cumpleaños, {nombre}! Mensaje: Todo el equipo de {gym} te desea un gran día. ¡Pasá a entrenar! 💪🎉
Reglas de reservas
Configuraciones que controlan
el comportamiento de las reservas, el check-in y el acceso de los alumnos.
⏳
Tiempo límite de cancelación sin penalidad
Establece la anticipación mínima para cancelar una reserva
sin perder el crédito. Si el alumno cancela pasado este límite o falta a la clase, se
considera ausente y se le descuenta la sesión del plan.
Opciones: 30 min, 1 hora, 2 horas, 4 horas, 6 horas, 12 horas, 24 horas.
Default: 2 horas antes.
⌚
Ventana de check-in (QR)
Después de iniciar la clase, los alumnos tienen esta ventana
de tiempo para escanear el QR y registrar su presencia. Pasado ese tiempo, el sistema
asume que no llegaron y los marca como Ausentes.
Opciones: 5 min, 10 min, 15 min, 20 min, 30 min, Sin límite.
Default: 15 minutos libres.
🚪
Pasos máximos por día (Control de Acceso)
Para gimnasios que no usan grilla y controlan el ingreso
por biometría o molinete. Limita la cantidad de veces que un alumno con cuota al día
puede ingresar por día. El conteo se resetea a las 00:00. Solo suma ingresos autorizados.
Opciones: 1, 2, 3, 4, 5, Sin límite.
Default: Sin límite.
📅
Anticipación máxima de reserva
Los alumnos solo pueden reservar clases dentro de los
próximos N días desde hoy. Si la clase cae fuera de ese rango, la app no les muestra
el botón de reserva.
Opciones: 1 día, 3 días, 5 días, 7 días, 14 días, 30 días, Sin límite.
Default: Sin límite (pueden reservar cualquier día visible).
⚠️
Importante: Los cambios en las reglas de reservas aplican inmediatamente
a todas las reservas futuras. Las reservas existentes no se ven afectadas por los cambios
retroactivamente.
Cumplimiento fiscal
Facturación electrónica AFIP/ARCA Gimnasio+
Emisión de facturas electrónicas con CAE directo desde GymFlow. Soporta
Monotributo (Factura C) y Responsable Inscripto (Factura A/B). Cada gimnasio configura sus
propias credenciales (CUIT, certificado, clave) en ⚙️ Configuración → Factura Electrónica AFIP.
Emisión automática por origen
Tres toggles controlan cuándo
se emite automáticamente una factura. En modo Manual, GymFlow pregunta al operador
antes de emitir.
Origen
Comportamiento Activo
Comportamiento Inactivo
🛒 Ventas del Shop
Emite automáticamente al cerrar la venta.
Pregunta al operador "¿Emitir factura?" con modal.
💳 Cobros de Membresías
Emite automáticamente al marcar como pagada.
El cobro se registra pero la factura queda pendiente para emisión manual.
💙 Checkout MercadoPago
Emite al recibir el webhook de aprobación.
Pago procesado pero factura pendiente.
Notas de Crédito (parciales y totales)
Cada factura emitida (status ✅ Emitida)
muestra en su detalle un botón 🔄 Emitir Nota de Crédito. Abre un modal con dos opciones:
Total: acredita el saldo completo disponible de la factura.
Parcial: ingresá un importe específico (bloqueado al saldo restante).
El mapeo AFIP es automático
(Factura A → NC A, B → NC B, C → NC C). La NC se asocia al comprobante origen vía CbtesAsoc,
hereda receptor y concepto, y respeta el ratio IVA 21% si corresponde. El panel de facturas muestra
el saldo acreditado y bloquea nuevas NC cuando la factura está totalmente acreditada.
Los KPIs del libro IVA Ventas restan las NC del neto/IVA/total.
Impresión térmica del comprobante
Toggle maestro en Configuración
que habilita la impresión del ticket fiscal (80mm o 58mm) con QR AFIP validable en afip.gob.ar.
Tres sub-controles aparecen cuando se activa:
🔀
Modo de impresión
Auto: dispara window.print() sin preguntar (ideal
con Firefox + print.always_print_silent = true y la comandera como impresora
predeterminada del SO). Preguntar: muestra "¿Imprimir comprobante?" tras
cada emisión exitosa.
📐
Ancho del papel
Select 80 mm (default, la mayoría de las
comanderas) o 58 mm (mini impresoras). Ajusta QR, padding y font-size
automáticamente.
👁
Vista previa
Botón que abre un popup con la última factura emitida aplicando
ancho y logo actuales, sin imprimir. El logo del gym se toma automáticamente del que
subas en el Dashboard.
Cada factura del listado tiene
un botón 🖨 Imprimir ticket permanente para reimpresión manual. El flujo auto-print
funciona también en Shop (POS), membresías (cobro + alta con pago) y NC emitidas desde el panel.
Bloqueo del ambiente en Producción
🔒
Una vez que el gimnasio elige 🚀 Producción y guarda la configuración AFIP,
el selector de ambiente desaparece de la UI y queda fijo. Esto previene que alguien rebaje
por accidente a Homologación y pierda la continuidad de numeración fiscal. Para revertir
(casos de debug de certificado) hay que hacerlo desde la base de datos directamente.
App del Alumno
Sistema de reservas Gimnasio+
Los alumnos reservan su lugar en la clase con un toque desde la app. El
sistema controla el cupo y gestiona las cancelaciones automáticamente.
📅
Reserva desde la app
El alumno ve el horario semanal, elige la clase y reserva en
un toque. Recibe confirmación y recordatorio automático.
❌
Cancelación con ventana
El administrador define la ventana de cancelación sin
penalidad. Cancelaciones fuera de esa ventana se marcan como ausente sin devolver el
crédito.
🎟️
Créditos automáticos
Cada reserva descuenta un crédito. Si la cancelación es a
tiempo, el crédito se devuelve automáticamente.
🔢
Control de cupo
Cuando una clase llega al cupo máximo, el botón de reserva se
deshabilita en la app para todos los alumnos.
👥
Cupos ocupados en vivo (scheduler)
La vista semanal de Programación Semanal (que
ven admin, staff/recepcionista e instructores) muestra en cada slot
reservados/cupo · N libres. Colores: gris (ok), naranja
si quedan ≤3, LLENO en rojo si se agotó. Cuenta sólo
status reserved + present (cancelados/ausentes no suman). Una única query
batch por toda la semana — sin N+1.
⚡
Sincronización en tiempo real
Cuando un alumno reserva/cancela desde la app o el portal web,
la grilla del scheduler y la vista Asistencias del admin se actualizan al instante
vía broadcast Socket.IO (rooms agenda:{gymId} y scheduler:{gymId}).
Los contadores cambian sin recargar la página.
🛎️
Acceso a Asistencias para recepción
Los usuarios rol staff (recepcionista) ahora
tienen el link Asistencias directo en su menú (antes solo admin lo tenía). Ideal
para control interno sin escalar permisos.
App del Alumno
Calculadora RM Personal Todos los planes
Seguimiento del peso máximo de cada ejercicio por alumno, con gráfico de
evolución. Único en Argentina.
1
El instructor activa el QR de RM
Al finalizar el WOD, el instructor activa el QR de carga
de RM desde el panel. Aparece en el TV del gym.
2
El alumno escanea y carga
Cada alumno escanea el QR con la app y carga el peso
máximo con el que ejecutó el ejercicio.
3
Cálculo automático del RM
El sistema calcula el RM (1 repetición máxima), actualiza
el récord personal si lo supera y guarda el historial con gráfico de evolución.
🏋️
Los alumnos pueden ver su historial de RM por ejercicio desde "Mi progreso" en la app. El
gráfico muestra la evolución mes a mes.
App del Alumno
Portal editorial Gimnasio+
La pantalla de inicio de la app del alumno, personalizable por el
administrador con contenido editorial del gym.
📰
Bloques de contenido
Creá bloques de texto con imagen, estilo banner, que los
alumnos ven al abrir la app. Noticias, promos, novedades.
🎨
Personalizable
Cada bloque puede tener título, cuerpo de texto e imagen. El
admin define el orden y la visibilidad de cada bloque.
Planes
Comparativa de planes
Todos los planes incluyen 30 días de prueba gratuita sin tarjeta de
crédito.
GymFlow registra automáticamente un log de auditoría completo de todas las
operaciones sensibles. Cada acción incluye: usuario, fecha, IP, entidad afectada y detalles del
cambio.
Área
Eventos auditados
💰 MercadoPago
Pagos aprobados y rechazados, suscripciones creadas y canceladas, cobros recurrentes
automáticos, facturas subidas y borradas
🔐 Autenticación
Login de admin (éxito y fallo), login de superadmin, verificación OTP, activación y
desactivación de 2FA
👥 Miembros
Alta, baja y modificación de alumnos, membresías, cambios de contraseña, reset de
PIN, datos de salud, check-in por QR
🏋️ Operaciones
Salas, sedes, sesiones, horarios, ejercicios, templates, cambio manual de estado de
reservas
💵 Finanzas
Movimientos de caja, renovaciones de membresía, suscripciones manuales
📢 Comunicaciones
Envío de notificaciones push masivas, creación y eliminación de códigos de
bienvenida
👤 Equipo
Gestión de usuarios, equipo de trabajo, perfiles, registros de gimnasios,
convenciones
🔒
Seguridad adicional: Los webhooks de MercadoPago se validan con firma
criptográfica HMAC-SHA256 en producción. Las conexiones a APIs externas usan verificación
SSL completa. Los montos de pago se validan contra el monto esperado antes de activar
suscripciones.
ℹ️
Acceso: El log de auditoría está disponible para superadministradores
desde el panel de administración. Cada entrada muestra el usuario que realizó la acción, la
fecha y hora exacta, la dirección IP de origen y los detalles específicos del cambio.
App del Alumno
Portal Web para Alumnos Gimnasio+
Además de la app móvil, los alumnos pueden acceder a su cuenta desde
cualquier navegador — sin instalar nada. El portal web replica las funciones principales de la
app Flutter.
🏠
Inicio / Portada
El alumno ve su membresía activa, días restantes, créditos
disponibles y la próxima clase reservada. Además, los bloques editoriales configurados
por el admin (imágenes, texto).
📅
Agenda semanal con bottom sheet
Grilla de clases por semana, con filtros por sede. Cada
slot tappable abre un bottom sheet con detalle completo (paridad Flutter):
fecha larga, hora, sala, profe, sede, cupos N/M reservas. Badges contextuales:
● EN VIVO si la clase está en curso ahora, ⚠️ quedan ≤3 lugares,
Suspendida con motivo, Lleno. Botón primario adaptativo: Reservar lugar /
Cancelar reserva / Clase pasada / Lleno / Suspendida.
✅
Mis Reservas con cancelación inteligente
Historial con estadísticas: reservadas, asistencias, ausencias
y créditos disponibles. Botón ✕ por reserva con warning de
cancel_deadline: si ya pasó el plazo, avisa que la reserva se marcará
Ausente sin crédito. Si está dentro del plazo, devuelve el crédito automáticamente.
🏋️
RMs e historial
Lista de ejercicios con el PR actual. Al tocar un ejercicio,
se despliega el historial completo de cargas, repeticiones y RM estimado por fecha.
👤
Perfil
Datos personales, plan activo, vencimiento, clases
disponibles y estado del apto médico. Incluye código de check-in y botón de logout.
🔐
Autenticación
Login con email, contraseña y código del gym (slug). Token
Bearer idéntico a la app Flutter. Auto-login silencioso si hay sesión válida.
💡
Acceso: Los alumnos acceden al portal desde /portal/ en tu dominio GymFlow. No requiere instalación ni
descarga. Funciona en cualquier navegador moderno, celular o PC.
ℹ️
API compartida: El portal web consume las mismas APIs que la app Flutter.
Reservas, cancelaciones y cambios se reflejan en tiempo real en ambos canales.
🔗 Embeber el portal en tu sitio web
Si tu gym tiene su
propia web, podés incrustar el portal de alumnos directamente con un iframe. Desde el panel de
admin (QR Check-in) tenés el código listo para copiar con el slug de tu gym ya
incluido — los alumnos solo necesitan email y contraseña. Ejemplo genérico:
<!-- Portal GymFlow para alumnos -->
<iframe
src="https://gymflow.com.ar/portal/"
width="100%"
height="700"
frameborder="0"
style="border:none;border-radius:12px;max-width:480px;margin:0 auto;display:block;"
allow="clipboard-write"
title="Portal de alumnos GymFlow">
</iframe>
💡
Personalización: Podés ajustar height y
max-width para que se adapte al diseño de tu página. El portal
se adapta automáticamente al tamaño del contenedor.
Seguridad
Portabilidad de datos Todos los planes
Descargá una copia completa de todos los datos de tu gimnasio en formato
XML, en cualquier momento. Tus datos son tuyos.
📦
Export completo
Alumnos, membresías, pagos, planes de entrenamiento,
nutrición, ejercicios, sesiones, movimientos de caja, historial de acceso, chat, soporte
y configuración completa — todo en un solo archivo.
🔒
Siempre disponible
La exportación funciona incluso con la suscripción vencida.
Es un derecho, no una funcionalidad premium. Accedé desde Facturación → Portabilidad de
datos.
🔮
A prueba de futuro (auto-discovery)
El exportador tiene una pasada de auto-discovery:
al generarse el XML escanea la base de datos y agrega automáticamente cualquier tabla nueva
con columna gym_id, aunque el script del exportador no se haya actualizado.
Garantiza que los módulos futuros de GymFlow (nuevas features, nuevos datos) salgan en el
export sin tener que esperar un update. Las tablas auto-descubiertas aparecen listadas en
el bloque <_auto_discovered> al principio del XML para transparencia.
💡
Formato XML: El archivo generado es un XML estándar que podés abrir con
cualquier editor de texto, Excel, o importar a otro sistema. Los campos sensibles
(contraseñas, secretos OTP) se excluyen automáticamente.
🛡️
Redacción de campos sensibles en tablas nuevas: la auto-discovery aplica un
filtro por patrón de nombre de columna. Columnas cuyo nombre sea password, termine
en _hash, _secret, _token, o sea cert_content /
key_content se reemplazan por [redacted] en el XML. También se
excluyen completamente las tablas internas de sesión y tokens (sessions_auth,
member_auth_tokens, gym_api_tokens, gym_afip_tokens,
audit_log).
Facturación
Renovación directa Todos los planes
Si tu suscripción venció, no necesitás contactar a nadie. Podés pagar
directamente desde la pantalla de "Suscripción vencida".
01
Pantalla de expiración
Al vencer tu suscripción, cualquier usuario del gym ve la
pantalla de "Suscripción vencida". Si sos admin, además ves tu plan, ciclo y precio.
02
Pagar con MercadoPago
Hacé clic en "Pagar con MercadoPago". Se genera un link
de checkout seguro. Podés pagar con tarjeta de crédito, débito, transferencia,
Rapipago o Pago Fácil.
03
Reactivación automática
Una vez acreditado el pago, la suscripción se reactiva
automáticamente. No necesitás esperar ni contactar soporte.
📦
Exportación de datos: Incluso con la suscripción vencida, podés descargar
todos tus datos en XML desde la misma pantalla de expiración.
Gestión del Gimnasio
Facturación Electrónica AFIP Gimnasio+
Emití facturas electrónicas válidas ante AFIP directamente desde GymFlow. Emisión automática al cobrar membresías y vender productos, con CAE, QR fiscal y Libro IVA Ventas integrado.
⚡
Emisión automática
Al cobrar una membresía o vender un producto del Shop, la factura se emite sola contra AFIP vía WSFEv1. Sin intervención del operador, sin abrir otra web.
🧾
Tipo de comprobante inteligente
El sistema elige Factura A, B o C automáticamente según la condición de IVA del gimnasio y el tipo de receptor. IVA 21% desglosado para Responsables Inscriptos.
📊
Libro IVA Ventas
Exportá el Libro IVA Ventas como CSV compatible con Excel. Todos los campos que AFIP requiere: fecha, tipo de comprobante, neto gravado, IVA 21%, total, CAE y vencimiento.
📱
QR fiscal
Cada factura genera un código QR conforme a la normativa de AFIP. Verificable por cualquier persona con su celular desde la web de AFIP.
Configuración inicial
01
Generar certificado digital en AFIP
Desde la web de AFIP, en "Administración de Certificados Digitales", generá un CSR y subilo para obtener el certificado (.crt). Este certificado autoriza a GymFlow a emitir comprobantes en tu nombre.
02
Habilitar punto de venta electrónico
En AFIP, dar de alta un punto de venta tipo "Web Services" para que acepte comprobantes electrónicos vía API.
03
Cargar datos en GymFlow
En Configuración → Facturación AFIP, subí el certificado (.crt), la clave privada (.key), y completá: CUIT, razón social, condición de IVA (Responsable Inscripto o Monotributista) y número de punto de venta. El sistema valida la conexión al guardar.
Concepto según tipo de operación
Operación
Concepto AFIP
Fechas de servicio
Membresía
Servicios (Concepto 2)
Inicio y fin de la membresía
Venta del Shop
Productos (Concepto 1)
No aplica
Triggers de emisión automática
Acción
Módulo
Resultado
Crear membresía con pago
Alumnos → Asignar membresía
Factura de servicio emitida
Registrar pago de cuota
Perfil alumno → Pagar cuota
Factura de servicio emitida
Pago aprobado vía MercadoPago
Webhook automático
Factura de servicio emitida
Venta de producto
Shop → Vender
Factura de producto emitida
Venta de carrito
Shop → Carrito
Factura de producto emitida
💡
Prevención de duplicados: El sistema verifica que no exista una factura previa para el mismo ítem antes de emitir. Si ya hay una factura con estado "ok" para esa membresía o venta, no se emite otra.
📦
Tolerancia a caídas de AFIP: Si los WebServices de AFIP están caídos al momento del cobro, la operación se registra normalmente (membresía activa, caja impactada) y la factura queda pendiente para reintento automático. El gym nunca se bloquea por un corte de AFIP.
⚠️
Certificado digital: Los certificados de AFIP tienen una vigencia de 2 años. Cuando esté próximo a vencer, renovalo desde AFIP y actualizá el archivo en GymFlow. El sistema te avisa si el certificado expiró al intentar emitir.