Cuentas de Staff
Crear nueva cuenta
Cuentas existentes
Configuración del sistema
Identidad del gimnasio
Terminal Hikvision

Estos cambios se aplican de inmediato — el sistema no necesita reiniciarse. Solo los secretos de arranque (clave JWT, notificaciones push) siguen en el archivo .env del servidor.

Correo (para recuperación de contraseña)
Reportes
Ingresos en dólares (USD)
$0
Hoy
$0
Esta semana
$0
Este mes
Ingresos en bolívares (Bs)
Bs 0
Hoy
Bs 0
Esta semana
Bs 0
Este mes
Auditoría (ISO 27001)
FechaUsuarioAcciónEntidadÍntegro
Guías de instalación

Pasos para dejar operativos el terminal de acceso y el envío de correo. Todo se configura desde la pestaña Configuración.

1 · Terminal Hikvision DS-KAS261

El terminal decide localmente si abre la puerta; este sistema además recibe cada marcaje, aplica la regla de morosidad y avisa en recepción en vivo. Para eso hay que decirle al terminal a dónde enviar los eventos.

IP del terminal (ejemplo)192.168.1.100
Puerto ISAPI del terminal80
Usuario por defectoadmin
Puerto donde escucha este sistema8080
Importante: el sistema escucha los marcajes en el puerto 8080 de la PC del gimnasio. Ese puerto debe estar libre y accesible desde el terminal en la misma red local. Si el log de arranque dice «No se pudo abrir el puerto 8080», hay otro programa usándolo.
  1. Averigua la IP del terminal. En el menú del equipo: Configuración → Red → TCP/IP. Anota la dirección que aparece. Si el gimnasio usa DHCP, pídele al técnico de red que la fije (IP estática), porque si cambia, el sistema deja de encontrarlo.
  2. Averigua la IP de la PC del gimnasio. En Windows abre cmd y escribe ipconfig. Busca «Dirección IPv4» del adaptador que esté conectado a la red del gimnasio. Anótala: el terminal necesita saber a qué PC enviar los eventos.
  3. Configura el envío de eventos (HTTP Listening) en el terminal. En el menú del equipo: Configuración → Red → Centro de eventos (según firmware también aparece como HTTP Listening o Notificación de eventos). Actívalo y coloca:
    · Dirección del host: la IP de la PC del gimnasio.
    · Puerto: 8080.
    · Ruta (URL): /. Si el equipo exige un nombre de usuario y contraseña para el destino, cualquiera sirve — este sistema no los valida en ese endpoint.
  4. Copia los datos del terminal en Configuración. Ve a Configuración → Terminal Hikvision y llena:
    · Dirección IP: la del terminal (paso 1).
    · Puerto ISAPI: normalmente 80.
    · Usuario y Contraseña: los del terminal. Pulsa Guardar configuración. Se aplica al instante, sin reiniciar.
  5. Prueba que abre la puerta. Confirma un pago de prueba y verifica que el equipo recibe la apertura. Si no abre, revisa primero que la contraseña sea correcta: es el fallo más común.
  6. Registra una huella y vincúlala. Coloca la huella en el terminal. El marcaje llega al sistema y aparece en Huellas pendientes del dashboard de Staff. Ábrelo, selecciona al cliente y vincúlalo. Desde ese momento ese ID ya abre la puerta con la regla de morosidad aplicada.
  7. Verifica en vivo. Pasa una huella y mira el feed del dashboard de Staff: debe aparecer el marcaje con APERTURA o DENEGADO en segundos.
Si el terminal no está en la misma red que la PC, este sistema no puede recibir los marcajes en vivo. El Cloudflare Tunnel expone el portal a internet para que los clientes lo consulten, pero no sirve para que el terminal (que es local) llegue al puerto 8080.

2 · Correo para recuperación de contraseña (Gmail)

Se usa para enviar el código OTP cuando un cliente olvida su contraseña. Si el cliente no tiene correo registrado, existe el envío por WhatsApp desde el dashboard de Staff, así que esto es opcional — pero mejora la atención.

Gmail no acepta tu contraseña normal desde programas externos. Hay que generar una «Contraseña de aplicación» de 16 letras. Es el paso que más se equivoca.
  1. Activa la verificación en dos pasos en la cuenta de Gmail (es requisito para poder generar la contraseña de aplicación). Entra a myaccount.google.com → Seguridad → Verificación en dos pasos y actívala. Si ya la tienes activa, salta este paso.
  2. Genera la contraseña de aplicación. Ve directo a myaccount.google.com/apppasswords (también se llega desde Seguridad → Contraseñas de aplicaciones).
    · En «Nombre de la aplicación» escribe, por ejemplo, Power Gym Access.
    · Pulsa Crear.
    · Google muestra 16 letras en 4 grupos (por ejemplo abcd efgh ijkl mnop). Cópiala ahora: no se vuelve a mostrar.
  3. Quita los espacios de la contraseña. Si copiaste abcd efgh ijkl mnop, en el sistema debe ir abcdefghijklmnop, todo junto y sin espacios.
  4. Llena los datos en Configuración → Correo. Usa exactamente estos valores para Gmail:
Servidor SMTPsmtp.gmail.com
Usuariotucuenta@gmail.com
Contraseñalas 16 letras sin espacios
Correo remitentetucuenta@gmail.com
Nombre remitentePower - Gym Access
¿Qué puerto usar?
587 (recomendado) El sistema conecta y cifra con STARTTLS
465 (alternativa) Solo si 587 falla: usa cifrado SSL directo
Otros servidores funcionan igual: cambia solo Servidor SMTP y Puerto por los de tu proveedor (Outlook, Zoho, tu hosting, etc.). Si no sabes cuáles son, búscalos como «SMTP» + el nombre de tu proveedor.
  1. Guarda con el botón «Guardar correo» y verifica que no aparezca un aviso de error. La contraseña se guarda cifrada, no en texto plano.
  2. Prueba el envío. Pide a un cliente de prueba que use «¿Olvidaste tu contraseña?» en el portal, o hazlo tú desde /login con la cédula del cliente. Debe llegar un correo con un código de 6 dígitos.
  3. Si el correo no llega, revisa en este orden:
    · Que la contraseña de aplicación no tenga espacios.
    · Que el correo del cliente esté bien escrito en su ficha.
    · La carpeta de spam del cliente.
    · Que el puerto sea 587, y si falla, prueba 465.
    · Que el servidor tenga internet en ese momento.
Alternativa sin correo: para clientes sin email, abre su solicitud en el dashboard de Staff y usa «Enviar código por WhatsApp». El sistema genera el código y abre WhatsApp Web con el mensaje ya escrito; solo hay que pulsar Enviar. El cliente lo usa en la misma pantalla de recuperación.
Acerca de
Sistema
Power - Gym Access
Versión 2.0.0
Contacto
MO
Maikel Otniel
Diseño de sistemas · @maikelotniel
m.otniel01@gmail.com
EA
Enrique Aray
Ventas y negociaciones
enriquearay2010@gmail.com
Librerías de terceros (código abierto)
LibreríaUsoLicencia
FastAPIServidor web / APIMIT
UvicornServidor ASGIBSD-3-Clause
httpxCliente HTTP (Hikvision)BSD-3-Clause
websocketsWebSocket en vivoBSD-3-Clause
PyJWTTokens de sesiónMIT
bcryptHash de contraseñasApache-2.0
pydanticValidación de datosMIT
python-multipartSubida de archivosApache-2.0
python-dotenvVariables de entornoBSD-3-Clause
pywebpushNotificaciones pushMPL-2.0
py-vapidClaves de notificacionesMPL-2.0
cryptographyCifrado en reposoApache-2.0 / BSD-3-Clause
PillowProcesamiento de imágenesMIT-CMU (HPND)

Listado de referencia según las licencias publicadas por cada proyecto. Verifica la licencia exacta de la versión instalada en tu entorno antes de una redistribución comercial.