Una plataforma web moderna para revolucionar la gestión de entrenamientos en gimnasios
GymSync es una plataforma integral que conecta entrenadores, usuarios y administradores en un ecosistema digital eficiente. Automatiza rutinas de entrenamiento, mide el progreso físico y optimiza la comunicación en gimnasios modernos.
- 📅 Gestión de Entrenamientos - Planifica y organiza sesiones personalizadas
- 📈 Seguimiento de Progreso - Visualiza la evolución física en tiempo real
- 📱 Diseño Responsive - Experiencia optimizada en móviles y desktop
- 🔐 Seguridad Avanzada - Autenticación JWT con encriptación bcrypt
- 👥 Multi-Rol - Sistema completo para clientes, entrenadores y administradores
- 📊 Dashboard Intuitivo - Métricas y estadísticas visuales
graph TD
A[🖥️ Frontend<br/>Angular 17] -->|HTTP/REST API| B[⚙️ Backend<br/>Spring Boot]
B -->|JDBC| C[🗄️ Database<br/>MySQL]
A1[📱 Responsive UI] --> A
A2[🔐 JWT Auth] --> A
A3[📊 Charts & Analytics] --> A
B1[🛡️ Spring Security] --> B
B2[📝 JPA/Hibernate] --> B
B3[📚 Swagger API] --> B
C1[🏗️ Normalized Schema] --> C
C2[📋 User Management] --> C
C3[💪 Workout Data] --> C
| Rol | 🎯 Funciones Principales |
|---|---|
| 👤 Cliente | • Visualizar rutinas asignadas • Registrar progreso diario • Consultar evolución histórica |
| 💪 Entrenador | • Crear rutinas personalizadas • Monitorear progreso de clientes • Gestionar ejercicios y planes |
| ⚙️ Administrador | • Gestión completa de usuarios • Configuración del sistema • Métricas y reportes generales |
|
|
- Procesador: ≥ 2 GHz
- Memoria RAM: ≥ 4 GB
- Espacio en disco: ≥ 2 GB
| Tecnología | Versión Mínima | Versión Recomendada |
|---|---|---|
| ☕ Java JDK | 17+ | 23.0.2 |
| 📦 Maven | 3.6+ | 3.9.9 |
| 🟢 Node.js | 18+ | 22.13.1 |
| 17+ | 17.3.17 | |
| 🐬 MySQL | 8.0+ | Latest |
# ☕ Verificar Java
java -version
# 📦 Verificar Maven
mvn -version
# 🟢 Verificar Node.js y npm
node -v && npm -v
# 🅰️ Verificar Angular CLI
ng versiongit clone https://github.com/Jzzc10/gymsync.git
cd gymsyncCrear base de datos MySQL:
-- 🗄️ Crear base de datos
CREATE DATABASE gymsync CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
-- 👤 Crear usuario
CREATE USER 'gymsync_user'@'localhost' IDENTIFIED BY 'secure_password';
-- 🔑 Asignar permisos
GRANT ALL PRIVILEGES ON gymsync.* TO 'gymsync_user'@'localhost';
FLUSH PRIVILEGES;Configurar application.properties:
# 🗄️ Database Configuration
spring.datasource.url=jdbc:mysql://localhost:3306/gymsync?useSSL=false&serverTimezone=UTC&allowPublicKeyRetrieval=true
spring.datasource.username=gymsync_user
spring.datasource.password=secure_password
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
# 🏗️ JPA Configuration
spring.jpa.hibernate.ddl-auto=update
spring.jpa.database-platform=org.hibernate.dialect.MySQLDialect
spring.jpa.show-sql=false
# 🔐 JWT Configuration
jwt.secret=your_super_secure_jwt_secret_key_here_minimum_256_bits
jwt.expiration=86400000
# 🌐 Server Configuration
server.port=8080
# 📚 API Documentation
springdoc.api-docs.path=/api-docs
springdoc.swagger-ui.path=/swagger-ui.htmlcd backend
# 🧹 Limpiar e instalar dependencias
mvn clean install
# 🚀 Ejecutar en modo desarrollo
mvn spring-boot:run✅ Backend disponible en: http://localhost:8080
# 📂 Abrir nueva terminal
cd frontend
# 📦 Instalar dependencias
npm install
# 🚀 Ejecutar en modo desarrollo
ng serve✅ Frontend disponible en: http://localhost:4200
Una vez que ambos servicios estén ejecutándose:
| Servicio | URL | Descripción |
|---|---|---|
| 🌐 Aplicación Principal | http://localhost:4200 | Interfaz de usuario completa |
| 🔌 API Backend | http://localhost:8080 | Servicios REST |
| 📚 Documentación API | http://localhost:8080/swagger-ui.html | Interfaz Swagger interactiva |
👤 Gestión de Usuarios
| Método | Endpoint | Descripción |
|---|---|---|
GET |
/api/usuarios |
Listar todos los usuarios |
POST |
/api/usuarios |
Crear nuevo usuario |
PUT |
/api/usuarios/{id} |
Actualizar usuario |
DELETE |
/api/usuarios/{id} |
Eliminar usuario |
💪 Rutinas de Entrenamiento
| Método | Endpoint | Descripción |
|---|---|---|
GET |
/api/rutinas/cliente/{id} |
Obtener rutinas de un cliente |
POST |
/api/rutinas |
Crear nueva rutina |
PUT |
/api/rutinas/{id} |
Actualizar rutina existente |
DELETE |
/api/rutinas/{id} |
Eliminar rutina |
🏃♂️ Ejercicios
| Método | Endpoint | Descripción |
|---|---|---|
GET |
/api/ejercicios |
Listar todos los ejercicios |
POST |
/api/ejercicios |
Crear nuevo ejercicio |
PUT |
/api/ejercicios/{id} |
Actualizar ejercicio |
📈 Seguimiento de Progreso
| Método | Endpoint | Descripción |
|---|---|---|
GET |
/api/progreso/usuario/{id} |
Obtener progreso de usuario |
POST |
/api/progreso |
Registrar nuevo progreso |
cd backend
# 🧪 Ejecutar todos los tests
mvn test
# 📊 Tests con reporte de cobertura
mvn jacoco:prepare-agent test jacoco:report
# 🔍 Tests de integración
mvn integration-testcd frontend
# 🧪 Tests unitarios
ng test
# 📊 Tests con cobertura
ng test --code-coverage
# 🎭 Tests end-to-end
ng e2e🔧 Problemas Comunes y Soluciones
| ❌ Error | ✅ Solución |
|---|---|
Cannot connect to DB |
Verificar que MySQL esté ejecutándose y las credenciales sean correctas |
ng serve no encontrado |
Instalar Angular CLI: npm install -g @angular/[email protected] |
mvn no encontrado |
Configurar MAVEN_HOME en variables de entorno |
Port 8080 already in use |
Ejecutar: `netstat -ano |
JWT token expired |
Reiniciar sesión en la aplicación |
¡Las contribuciones son bienvenidas! Sigue estos pasos:
- 🍴 Fork el proyecto
- 🌿 Crea tu rama de características (
git checkout -b feature/amazing-feature) - 💾 Commit tus cambios (
git commit -m 'Add amazing feature') - 📤 Push a la rama (
git push origin feature/amazing-feature) - 🔄 Abre un Pull Request
- Asegúrate de que los tests pasen
- Sigue las convenciones de código existentes
- Actualiza la documentación si es necesario
- Incluye tests para nuevas funcionalidades
- 🤖 IA para rutinas adaptativas - Algoritmos de machine learning
- 📱 App móvil nativa - React Native para iOS/Android
- 💬 Chat integrado - Comunicación en tiempo real
- 🔔 Notificaciones push - Recordatorios de entrenamientos
- 📊 Analytics avanzados - Dashboards ejecutivos
- 🏢 Multi-gimnasio - Soporte para cadenas
- 🎥 Biblioteca multimedia - Videos de ejercicios
- 📋 Planes nutricionales - Integración con nutrición
- 🏆 Gamificación - Sistema de logros y ranking
Jorge Zhou (Jzzc10)
Desarrollador Full Stack apasionado por crear soluciones tecnológicas innovadoras
Este proyecto está licenciado bajo la Licencia MIT. Consulta el archivo LICENSE.md para más detalles.
⭐ ¡Si este proyecto te resulta útil, dale una estrella!
📧 ¿Preguntas? Abre un issue
🐛 ¿Encontraste un bug? Repórtalo aquí
Hecho con ❤️ para la comunidad fitness