Skip to content

BrandoUNDC/gymface

Repository files navigation

GymFlow - Sistema Inteligente de Asistencia

Proyecto fullstack para control de asistencia en gimnasio con flujo kiosco y panel administrativo.

Arquitectura actual

  • src/ - Frontend React + Vite + TypeScript + Tailwind + shadcn/ui
  • apps/api/ - Backend NestJS + Prisma + PostgreSQL
  • apps/api/prisma/schema.prisma - Modelado de base de datos

Se mantiene el frontend existente y se agrega backend modular para una migracion progresiva de mocks a datos reales.

Requisitos

  • Node.js 20+
  • npm 10+
  • PostgreSQL local

Variables de entorno

Frontend (.env)

VITE_API_URL=http://localhost:3001

Backend (apps/api/.env)

NODE_ENV=development
PORT=3001

DB_USER=postgres
DB_PASSWORD=brando123
DB_NAME=gym_attendance
DB_HOST=localhost
DB_PORT=5432

DATABASE_URL="postgresql://postgres:brando123@localhost:5432/gym_attendance?schema=public"

JWT_SECRET="change-this-in-production"
JWT_EXPIRES_IN="7d"

CORS_ORIGIN="http://localhost:8080"

Levantar el proyecto

  1. Instalar dependencias frontend:
npm install
  1. Instalar dependencias backend:
npm install --prefix apps/api
  1. Ejecutar migraciones y seed:
npm run api:migrate
npm run api:seed
  1. Levantar API (terminal 1):
npm run api:dev
  1. Levantar frontend (terminal 2):
npm run dev

Credenciales de desarrollo (seed)

  • Admin:
    • Usuario: admin
    • Email: admin@gymflow.com
    • Password: admin123
  • Cliente manual:
    • Usuario: carlos.r
    • Celular: 5551234567
    • Password: 1234

Endpoints iniciales

  • POST /auth/admin/login
  • POST /auth/client/login-manual
  • GET /clients
  • POST /clients
  • GET /clients/:id
  • GET /clients/:id/routine
  • GET /clients/:id/meal-plan
  • PATCH /clients/:id
  • PATCH /clients/:id/password
  • POST /attendance/check-in
  • POST /attendance/face-verify
  • GET /attendance
  • GET /clients/:id/attendance
  • POST /clients/:id/progress
  • GET /clients/:id/progress
  • POST /clients/:id/face-photos
  • GET /gym-resources
  • POST /gym-resources
  • PATCH /gym-resources/:id
  • DELETE /gym-resources/:id

Estado de avance

Ver PROJECT_PROGRESS.md para checklist por fases, decisiones tecnicas y pendientes.

Avance actual (Fase 2.1)

  • [✓] Dashboard admin con métricas reales (clientes/asistencias)
  • [✓] Perfil admin de cliente con datos reales (general, asistencias, evolución)
  • [✓] Registro de cliente y edición de cliente conectados a API
  • [✓] Progreso de cliente (kiosco) conectado a API
  • [✓] Restricción básica de ownership para rutas de cliente en backend

Avance actual (Fase 2.2)

  • [✓] Reportes admin conectados a datos reales
  • [✓] Rutina cliente conectada a backend
  • [✓] Plan alimenticio cliente conectado a backend
  • [✓] Calendario cliente conectado a asistencias reales
  • [✓] Ownership ampliado para rutina y plan alimenticio por cliente

Avance actual (Fase 2.3)

  • [✓] Gestión completa de recursos en admin (crear/editar/eliminar)
  • [✓] Flujo de escaneo facial conectado a endpoint backend inicial
  • [✓] Registro de fotos faciales inicial al crear cliente

Avance actual (Fase 2.4)

  • [✓] Regla semanal de actualización de progreso aplicada en backend
  • [✓] Descarga PDF real en rutina semanal
  • [✓] Descarga PDF real en plan alimenticio

Avance actual (Fase 2.5)

  • [✓] Matching facial por similitud de embeddings (coseno) con umbral
  • [✓] Capturas faciales almacenan embeddings asociados al cliente
  • [✓] Flujo kiosco envía embedding al backend para validar identidad

Avance actual (Fase 2.6)

  • [✓] Registro de cliente usa cámara real para capturar rostro
  • [✓] Registro de asistencia facial usa cámara real en kiosco
  • [✓] Modelos de face-api cargados localmente desde public/models

Avance actual (Fase 2.7)

  • [✓] Se agrega validación de calidad facial antes de aceptar capturas
  • [✓] Registro de cliente muestra feedback de calidad (iluminación, centrado, distancia)
  • [✓] Kiosco evita validaciones de baja calidad y guía al usuario antes del match
  • [✓] Se corrige fallo de registro por payload grande al guardar fotos faciales
  • [✓] Activación de cámara en kiosco usa fallback compatible para más dispositivos
  • [✓] Reconocimiento facial genera sesión JWT de cliente para entrar al perfil sin error de autorización

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages