Skip to content

v1.0.0

Latest

Choose a tag to compare

@Raizexs Raizexs released this 07 Nov 03:21

🎉 Release v1.0.0 - Production Ready

Sistema de Gestión para Gimnasio Funcional

Primera versión de producción completamente funcional y probada del sistema de gestión para gimnasios funcionales.


✨ Funcionalidades Implementadas (13/13 - 100%)

Autenticación y Seguridad

  • ✅ Sistema de autenticación JWT con refresh tokens
    • Access token: 30 minutos
    • Refresh token: 7 días
    • Renovación automática en frontend (seamless UX)
  • ✅ Roles diferenciados: Usuario, Entrenador, Admin
  • ✅ Verificación de webhooks de Stripe con firma
  • ✅ Passwords hasheados con bcrypt (10 salt rounds)

Gestión de Usuarios y Entrenadores

  • ✅ CRUD completo de usuarios y perfiles
  • ✅ CRUD de entrenadores (solo admin)
  • ✅ Dashboard personalizado según rol

Sistema de Clases y Reservas

  • ✅ Catálogo de clases con filtros
  • ✅ Sistema de reservas inteligente
    • Validación de capacidad en tiempo real
    • Límite de 1 reserva activa por día
    • Estados: PENDING_PAYMENT, CONFIRMED, CANCELLED, COMPLETED
  • ✅ Control de asistencia filtrado por entrenador

Pagos y Reembolsos

  • ✅ Procesamiento de pagos con Stripe
  • ✅ Webhook verification para confirmación automática
  • ✅ Política de reembolsos (24h antes de la clase)
  • ✅ Restauración de créditos automática

Sistema de Notificaciones Multicanal

  • ✅ Email con reintentos automáticos (3x exponential backoff)
    • Templates HTML profesionales
    • Recordatorios 24h y 2h antes de clase
  • ✅ In-App con actualización en tiempo real
  • ✅ Push Notifications con Firebase Cloud Messaging
    • Notificaciones en foreground y background
    • Service Worker para iOS/Android web
    • Toggle on/off desde la app

Feedback y Calificaciones

  • ✅ Sistema de reviews con ratings 1-5 estrellas
  • ✅ Categorías: Instructor, Facilities, Content
  • ✅ Respuestas de entrenadores a feedback
  • ✅ Contador "helpful" para engagement
  • ✅ Actualización automática de rating de entrenadores
  • ✅ Estadísticas y distribución de ratings

Desarrollo y Calidad

  • ✅ Logging centralizado con Winston
    • Rotación diaria de archivos
    • Retención: 30 días (errors), 14 días (combined)
  • ✅ Testing automatizado con Jest + Supertest
    • 7 tests implementados (100% passing)
    • Coverage: 17.57% statements
  • ✅ ESLint configurado (0 warnings)
  • ✅ CI/CD con GitHub Actions
    • Lint automático
    • Tests en Node 18 y 20
    • Build check

🔧 Stack Tecnológico

Backend

  • Runtime: Node.js 18+ con ES Modules
  • Framework: Express 4.19
  • Database: MongoDB 8.19 + Mongoose
  • Authentication: JWT 9.0 con refresh tokens
  • Payments: Stripe 14.25 + webhook verification
  • Email: Nodemailer 6.10 + SMTP retry logic
  • Push Notifications: Firebase Admin SDK 12.0
  • Logging: Winston 3.18.3 + winston-daily-rotate-file
  • Scheduler: Node-cron 3.0
  • Testing: Jest 29.7 + Supertest 6.3
  • Linting: ESLint 8.57

Frontend

  • Framework: Vue 3.4 + Composition API
  • State Management: Pinia 2.0
  • Router: Vue Router 4.0
  • HTTP Client: Axios 1.6 con interceptores
  • Styling: Tailwind CSS 3.4
  • Push Notifications: Firebase SDK 10.7
  • Build Tool: Vite 5.4

DevOps

  • CI/CD: GitHub Actions
  • Testing: Automated on push
  • Linting: Automated with ESLint
  • Version Control: Git con commits semánticos

🧪 Testing y Calidad

Cobertura de Tests

✓ should register a new user (153ms)
✓ should not register with existing email (45ms)
✓ should login with valid credentials (98ms)
✓ should not login with invalid credentials (92ms)
✓ should get user profile with valid token (50ms)
✓ should not get profile without token (12ms)
✓ should refresh access token with valid refresh token (105ms)

Tests:       7 passed, 7 total
Coverage:    17.57% statements, 5.82% branches
Status:      ✅ All passing

CI/CD Pipeline

  • ✅ Lint Code: Passing (14s)
  • ✅ Run Tests (Node 18): Passing (40s)
  • ✅ Run Tests (Node 20): Passing (43s)
  • ✅ Build Check: Passing (25s)

🔐 Seguridad

Característica Implementación
🔑 Autenticación JWT + Refresh tokens con rotación
🔒 Contraseñas Bcrypt con 10 salt rounds
👮 Autorización Middleware basado en roles
🌐 CORS Configurado para orígenes específicos
🔐 Variables sensibles Almacenadas en .env
💳 Pagos PCI compliant con Stripe + webhook verification
📝 Logging Winston con rotación y retención
🧪 Testing Jest + Supertest (7 tests passing)
🚀 CI/CD GitHub Actions con validación automática

📚 Documentación

Guías Disponibles

Credenciales de Prueba

Rol Email Password Permisos
👤 Usuario user@gym.com user123 Reservar clases, ver estadísticas
👨‍🏫 Entrenador trainer@gym.com trainer123 Gestionar clases y asistencia
🛡️ Admin admin@gym.com admin123 Acceso completo al sistema

🚀 Estado del Proyecto

  • ✅ Production Ready
  • ✅ Tests Passing: 7/7 (100%)
  • ✅ ESLint: 0 warnings, 0 errors
  • ✅ CI/CD: Fully operational
  • ✅ Funcionalidades: 13/13 completadas (100%)
  • ✅ Coverage: 17.57% (exceeds 10% threshold)

📦 Instalación

Requisitos Previos

  • Node.js 18+
  • MongoDB Atlas (gratis)
  • Stripe API keys (modo test) - Opcional
  • SMTP/Gmail credentials - Opcional
  • Firebase project - Opcional para push notifications

Quick Start

# Clonar repositorio
git clone https://github.com/Raizexs/GymProFunctional.git
cd GymProFunctional

# Backend
cd backend
npm install
# Configurar .env (ver .env.example)
npm run seed
npm run dev

# Frontend (nueva terminal)
cd frontend
npm install
# Configurar .env (opcional para Firebase)
npm run dev

Aplicación disponible en: http://localhost:5173


🔄 Mejoras Futuras Sugeridas

  • Aumentar cobertura de tests a 50%+
  • Implementar caching con Redis
  • Integrar Sentry para error tracking
  • Optimizar queries con índices adicionales
  • Rate limiting con express-rate-limit
  • Swagger/OpenAPI documentation
  • Lazy loading en frontend
  • Image optimization y CDN

👨‍💻 Autor

Lukas Flores


📄 Licencia

MIT License - Código abierto con fines educativos


🎓 Proyecto Académico

Desarrollado para la asignatura Ingeniería en Software I
Carrera: Ingeniería en Computación e Informática
Fecha: Noviembre 2025


⭐ Si te gustó este proyecto, dale una estrella en GitHub

Estado: ✅ Production Ready | Version: 1.0.0 | Tests: 7/7 Passing