App completa para gimnasios con control de acceso por llaveros NFC/RFID, gestión de membresías, punto de venta y más.
GYMADS es un sistema integral de gestión para gimnasios que combina una app móvil Flutter con hardware IoT (ESP32 + lector RFID) para ofrecer un control de acceso moderno, rápido y sin complicaciones.
Los clientes entran al gimnasio simplemente acercando su llavero NFC/RFID o mostrando su código QR personal. El sistema valida automáticamente su membresía, registra la entrada y reproduce un sonido de bienvenida. Todo en segundos, sin filas, sin listas en papel.
🎯 Objetivo: Automatizar la administración del gimnasio, desde el control de acceso hasta las ventas y el inventario.
- RFID/NFC: Lectura de llaveros/tarjetas mediante ESP32 conectado por WiFi.
- Código QR: Escaneo con cámara del celular para clientes sin llavero.
- Anti-rebote: Sistema inteligente que evita lecturas duplicadas del mismo llavero.
- Sonidos personalizados: Audio de "bienvenida" para accesos válidos y "denegado" para membresías vencidas.
- Registro completo con foto de perfil, teléfono y tipo de membresía.
- Tipos de membresía: Normal, Estudiante, Profesor, Anual.
- Cálculo automático de días restantes y alertas de renovación (5 días antes).
- Códigos QR únicos por cliente para acceso alternativo.
- Sistema de caché de imágenes para rendimiento óptimo.
- Renovación de membresías con cálculo automático de precios.
- Tarifa de registro ($250 MXN) para nuevos clientes o reingresos después de 3 meses.
- Historial completo de pagos y fechas de vencimiento.
- Precios dinámicos configurables desde la base de datos.
- Venta de productos del gimnasio (suplementos, bebidas, etc.).
- Control de inventario con stock en tiempo real.
- Estadísticas de ventas diarias, semanales y mensuales.
- Creación de promociones personalizadas por cliente.
- Descuentos automáticos en la renovación de membresías.
- Seguimiento de promociones activas y fechas de expiración.
- Control detallado de todos los ingresos del gimnasio.
- Filtrado por fecha, tipo de ingreso y cliente.
- Exportación de reportes para contabilidad.
- Gestión de productos con stock, precios y descripciones.
- Alertas de productos con bajo stock.
- Historial de ventas por producto.
- Historial completo de entradas al gimnasio.
- Filtrado por fecha, cliente y método de acceso (RFID/QR).
- Estadísticas de asistencia.
- Personalización del gimnasio: Nombre, color principal y fuente personalizados.
- Multi-tenant: Soporte para múltiples gimnasios/tenants.
- Configuración de WiFi del ESP32 (IP estática o DHCP).
- Activación/desactivación del lector RFID según necesidad.
El sistema se conecta a un ESP32 programado con Arduino que actúa como lector RFID standalone:
| Componente | Descripción |
|---|---|
| ESP32 | Microcontrolador WiFi que hostea un servidor HTTP local |
| RC522 / PN532 | Módulo lector RFID/NFC para llaveros y tarjetas |
| WiFi | Conexión a la red local del gimnasio (soporta IP estática) |
| Buzzer/Audio | Retroalimentación sonora para accesos válidos/inválidos |
App Flutter ──WiFi/HTTP──> ESP32 ──SPI──> Lector RFID
│ │
└──────── UID leído <────────┘
│
└──> Consulta en Supabase ──> Validación de membresía
│
└──> Registro de acceso + Sonido de bienvenida
arduino/esp32_rfid_wifi_setup/esp32_rfid_wifi_setup.ino— Firmware principal del ESP32arduino/esp32_rfid_wifi_setup_fixed/esp32_rfid_wifi_setup_fixed.ino— Versión estable con mejoras
lib/
├── app/
│ ├── data/
│ │ ├── models/ # UserModel, ProductModel, SaleModel, AccessLogModel, etc.
│ │ ├── providers/ # Supabase API, Storage, Ingresos
│ │ ├── repositories/ # UserRepository, ProductRepository, SaleRepository
│ │ └── services/ # RFID Reader, Audio, Camera, Image Cache, Access Log
│ ├── modules/
│ │ ├── home/ # Dashboard principal
│ │ ├── clientes/ # Gestión de clientes y QR
│ │ ├── membresias/ # Tipos y renovación de membresías
│ │ ├── rfid_checkin/ # Acceso por llavero RFID
│ │ ├── checador/ # Acceso por escaneo QR/cámara
│ │ ├── point_of_sale/ # Punto de venta
│ │ ├── inventario/ # Control de stock
│ │ ├── ingresos/ # Registro financiero
│ │ ├── promociones/ # Promociones y descuentos
│ │ ├── access_logs/ # Historial de entradas
│ │ ├── configuracion/ # Ajustes del sistema
│ │ └── shared/ # Widgets compartidos (cámara, animaciones, audio)
│ ├── routes/ # Navegación con GetX
│ └── global_widgets/ # Componentes reutilizables
├── core/ # Temas, colores, utilidades responsive
└── main.dart
- Flutter 3.2+ — UI multiplataforma (iOS, Android)
- GetX — State management, routing y dependency injection
- Supabase — Base de datos PostgreSQL en la nube, auth y storage
- ESP32 + Arduino — Hardware de lectura RFID
- HTTP/WiFi — Comunicación App ↔ ESP32
- Camera + mobile_scanner — Escaneo de QR y captura de fotos
- just_audio — Sonidos de retroalimentación
- shared_preferences — Configuración local
- Flutter SDK
>=3.2.2 - Dart
>=3.0.0 - Cuenta en Supabase
- ESP32 con módulo RFID RC522/PN532
- Crear un proyecto en Supabase.
- Ejecutar los scripts SQL en
supabase/para crear tablas:# Tablas principales: users, access_logs, products, sales, ingresos, promotions, etc. - Configurar Storage bucket para fotos de clientes.
- Copiar las credenciales de Supabase en un archivo
.env:SUPABASE_URL=https://tu-proyecto.supabase.co SUPABASE_ANON_KEY=tu-anon-key
# Clonar el repositorio
git clone https://github.com/ebravo-dev/gymads.git
cd gymads
# Instalar dependencias
flutter pub get
# Ejecutar
flutter run- Abrir
arduino/esp32_rfid_wifi_setup/esp32_rfid_wifi_setup.inoen Arduino IDE. - Configurar las credenciales WiFi del gimnasio.
- Subir el firmware al ESP32.
- Conectar el módulo RFID al ESP32 (pines SPI).
- La app detectará automáticamente el ESP32 en la red local.
🚧 Próximamente...
- Control de acceso RFID + QR
- Gestión de clientes y membresías
- Punto de venta e inventario
- Registro de ingresos y promociones
- Branding personalizable por gimnasio
- App para clientes (consultar días restantes, historial)
- Notificaciones push para renovaciones
- Reportes avanzados con gráficos
- Soporte para múltiples sucursales
Este proyecto es de uso comercial y educativo.
Desarrollado por Eder J. G. Bravo.
"Hecho con 💪 para los gimnasios que quieren tecnología de verdad."