/casos/administracion-gimnasio
Del cuaderno al cierre de caja
Sistema de administración financiera para un gimnasio: registra el día, reparte el dinero entre las cuentas donde de verdad está y proyecta el mes. Sustituyó a un cuaderno.
- Cliente
- Gimnasio, Venezuela
- Rol
- Desarrollador. Interpreté el cuaderno del cliente en un modelo de datos y se lo devolví para que lo corrigiera, diseñé y escribí la aplicación entera y su interfaz, la desplegué en el servidor y sigo iterándola directamente con el dueño.
- Periodo
- 2026 — presente
- Estado
- En producción
El problema
Las cuentas del gimnasio vivían en un cuaderno. Cada día se anotaban a mano las activaciones, los planes vendidos y los gastos, y a fin de mes alguien sumaba. El dueño no pedía contabilidad: pedía saber, cualquier día a las siete de la tarde, cuánto entró, dónde está ese dinero y si el mes va a cerrar donde debería.
Antes de escribir una línea traduje el cuaderno a una hoja de cálculo y se la devolví para que la corrigiera. Ese fue el requerimiento: no lo que yo entendí, sino lo que él confirmó.
La decisión
Saber cuánto entró no sirve si no sabes dónde está
El dinero del gimnasio no está en un sitio: está repartido entre el efectivo de la caja, dos bancos y el punto de venta. El cuaderno anotaba cuánto se cobró; no dónde cayó. Con eso se puede cerrar el mes, pero no se puede responder la pregunta que de verdad se hace un martes: «¿puedo pagar la renta hoy, desde la cuenta de la que sale la renta?».
Así que la forma de pago dejó de ser una etiqueta pegada a la venta y pasó a ser la cuenta donde vive el dinero. Cada cobro entra en una, cada gasto sale de otra, y cada cuenta lleva su saldo real sumado sobre todo el histórico. Un traspaso mueve saldo entre dos cuentas y no toca el acumulado del día, porque no es ni venta ni gasto.
Lo que no tiene cuenta asignada se enseña aparte y en voz alta, en vez de repartirlo por lo bajo. Un saldo que no cuadra y no dice por qué es peor que un saldo incompleto: el primero se deja de mirar, el segundo se arregla.
Se ve mejor usándolo que leyéndolo. Hay una instancia abierta con datos inventados:
Entra y cierra un día
No es una maqueta escrita para el portafolio: es el mismo software del caso, en su propio contenedor y con su propia base. Se entra directo, sin clave ni registro. Puedes registrar ventas y gastos, repartirlos entre cuentas, apuntar quién entró, mover dinero de una cuenta a otra y romper lo que quieras.
Los tres meses de movimientos que vas a ver no existen. El padrón, los planes y los gastos están puestos para que las gráficas tengan algo que enseñar: días buenos, días flojos y un par de semanas con más vencimientos que altas.
Entrar a la demoEntras como administrador y con todos los permisos, que es lo que hace falta para poder verlo todo. El control de permisos sigue puesto por dentro —se ve en la pestaña de Usuarios—; lo único que se quitó fue tener que teclear una clave. La base se rehace sola todas las noches, así que nada de lo que hagas le estorba al siguiente, y la instalación del gimnasio no comparte contenedor, red, base ni claves con esta.
Qué construí
- El cierre del día. Ventas por plan, gastos por concepto y vueltos, cada línea con la cuenta que le corresponde. El acumulado es venta menos gastos, y el cierre se imprime tal cual para archivarlo.
- Las cuentas y los traspasos. Saldo real por cuenta sobre todo el histórico, y movimientos entre cuentas que no ensucian el día.
- Quién entró, con comprobante. Cada persona es una tarjeta con su cédula, su monto y el reparto entre cuentas, y se le puede adjuntar el capture de la transferencia. La hora la pone el servidor, no el navegador: la del teléfono se puede cambiar.
- Cuentas por pagar y deuda acumulada. Lo que se le debe a proveedores y los gastos recurrentes que se van acumulando, para que una factura vieja no aparezca de sorpresa el día que no hay saldo.
- Usuarios, roles y permisos editables. Cada permiso se comprueba en el servidor; que la interfaz esconda un botón no es seguridad. Nadie puede quitarse a sí mismo la capacidad de repartir permisos, o el sistema se quedaría sin quien los reparta.
- Un panel para decidir, no para mirar. Indicadores contra el periodo anterior equivalente, meta del mes, conmutador de moneda, comparación entre rangos y consulta por día en calendario. Se instala como aplicación en el teléfono, y tiene tema oscuro, cuatro tamaños de letra y grosor ajustable, porque quien lo usa a diario no siempre lo hace sentado.
Resultado
Corre desde agosto de 2026 y el gimnasio registra en él su operación diaria. La señal de que se usa de verdad no es una métrica: es que el dueño sigue mandando cambios por WhatsApp, y el último lote llegó esta semana.
Dos cosas que salieron de usarlo y no de diseñarlo. La primera: el histórico arrastraba cobros sin cuenta asignada, de cuando esa columna no existía, así que los gastos restaban y las ventas no sumaban, y todas las cuentas salían en rojo en el teléfono del dueño. Ahora el día entero se rechaza si falta una cuenta, y se valida antes de escribir para no dejar el cierre a medias. La segunda: el arranque sembraba datos de ejemplo si la tabla estaba vacía, lo que hacía imposible borrar los de muestra —volvían solos— y una vez se llevó por delante las cuentas que el cliente había creado. Un borrado que el arranque deshace no es un borrado.
- Python — Flask
- SQLite
- JavaScript sin dependencias
- PWA
- Docker
- Caddy
- Ubuntu Server
Las capturas y la demo de esta página salen de una instancia de demostración con datos inventados. No aparece ningún dato real del gimnasio, ni su nombre, ni su marca.