🏋️ Olympus Gym - Gestión de Gimnasio
¡Bienvenido a Olympus Gym 🚀
Esta aplicación web te permite gestionar un gimnasio de forma profesional y moderna, con una experiencia
pensada tanto para administradores como para socios.
🔧 Stack Tecnológico
Olympus Gym se basa en una pila tecnológica moderna y robusta que combina las mejores prácticas de desarrollo web para garantizar un rendimiento óptimo, seguridad avanzada y escalabilidad excepcional. Esta selección de tecnologías permite crear una aplicación web completa y profesional capaz de manejar la gestión integral de un gimnasio, desde la autenticación de usuarios hasta el seguimiento de actividades y estadísticas.
La integración de Laravel como núcleo del backend, junto con PHP para la lógica del servidor, JavaScript para la interactividad del frontend, y herramientas complementarias como MySQL para la persistencia de datos, Tailwind CSS para un diseño elegante y responsivo, Composer para la gestión de dependencias, Docker para la contenerización y despliegue consistente, y Livewire para componentes reactivos, resulta en una solución técnica sólida y eficiente. Cada componente ha sido elegido por su madurez, comunidad activa y capacidad para trabajar en armonía, asegurando un desarrollo rápido, mantenible y de alta calidad. A continuación, se detalla cada elemento de la pila tecnológica utilizada en Olympus Gym:
- 🛠️ Laravel: Framework PHP utilizado para el desarrollo del backend, proporcionando una estructura robusta para rutas, controladores y modelos, facilitando el desarrollo rápido y seguro de aplicaciones web. Laravel incluye características avanzadas como Eloquent ORM para interacciones con la base de datos, middleware para seguridad, y un sistema de plantillas Blade para vistas dinámicas.
- 🐘 PHP: Lenguaje de servidor principal que impulsa la lógica del lado del servidor, manejando la autenticación, gestión de datos y procesamiento de solicitudes. PHP es ampliamente utilizado en el desarrollo web debido a su flexibilidad, velocidad y compatibilidad con servidores web como Apache o Nginx.
- 🟨 JavaScript: Empleado para la interactividad del frontend, incluyendo componentes dinámicos y manejo de eventos en la interfaz de usuario.
- 🔐 Spatie Laravel Permission: Paquete utilizado para la gestión granular de roles y permisos, asegurando un control de acceso preciso y escalable. Este paquete facilita la implementación de un sistema de permisos basado en roles, permitiendo definir qué acciones puede realizar cada usuario según su rol asignado.
- 🗄️ MySQL: Sistema de gestión de bases de datos relacional utilizado para almacenar y gestionar datos de usuarios, actividades y suscripciones de manera eficiente. MySQL ofrece alta performance, confiabilidad y facilidad de uso, siendo ideal para aplicaciones que requieren consultas complejas y transacciones seguras.
- 🎨 Tailwind CSS: Framework de CSS utilitario para el diseño responsivo y moderno de la interfaz, permitiendo un desarrollo rápido de estilos sin necesidad de CSS personalizado extenso. Tailwind proporciona clases predefinidas que se pueden combinar para crear diseños únicos y adaptables a diferentes dispositivos.
- 📦 Composer: Herramienta de gestión de dependencias para PHP, utilizada para instalar y gestionar paquetes de terceros, asegurando la consistencia del entorno de desarrollo. Composer automatiza la instalación de librerías y frameworks, resolviendo dependencias automáticamente y manteniendo versiones compatibles.
- 🐳 Docker: Utilizado para la contenerización de la aplicación, facilitando el despliegue y la consistencia entre entornos de desarrollo y producción. Docker permite empaquetar la aplicación con todas sus dependencias en contenedores ligeros, asegurando que funcione de manera idéntica en cualquier entorno.
- ⚡ Livewire: Framework para componentes reactivos en Laravel, utilizado para crear interfaces dinámicas sin necesidad de JavaScript adicional, mejorando la experiencia de usuario en formularios y dashboards. Livewire simplifica el desarrollo de aplicaciones interactivas al permitir actualizar componentes del frontend desde el backend sin recargar la página.
✨ Características principales
La aplicación Olympus Gym está equipada con una serie de características principales que la convierten en una herramienta indispensable para la gestión eficiente y moderna de gimnasios. Estas funcionalidades han sido diseñadas pensando en la experiencia tanto de los administradores como de los socios/miembros del gimnasio, ofreciendo una interfaz intuitiva, segura y altamente funcional. Desde el registro y autenticación de usuarios hasta la gestión avanzada de actividades y estadísticas, cada característica contribuye a optimizar las operaciones diarias del gimnasio, mejorar la retención de miembros y facilitar la toma de decisiones estratégicas. La implementación de estas características se basa en las mejores prácticas de desarrollo web, asegurando un rendimiento excepcional y una escalabilidad que permite crecer junto con el gimnasio. A continuación, se detallan las características principales que hacen de Olympus Gym una solución completa para la gestión de gimnasios:
- Registro de usuarios: mediante formulario personalizado que incluye validación en tiempo real, verificación de email y aceptación de políticas de privacidad para asegurar la integridad y legalidad de los datos recopilados.
- Inicio de sesión: mediante formulario tradicional, o de manera rápida y conveniente a través de autenticación social con GitHub o Google, proporcionando múltiples opciones de acceso seguras y flexibles.
- Gestión de roles y permisos: control granular de accesos que permite definir permisos específicos para cada rol, asegurando que los usuarios solo puedan realizar acciones autorizadas según su nivel de responsabilidad.
- Datos ficticios pre-cargados: actividades, horarios, salas y usuarios listos para usar, facilitando la demostración y prueba de la aplicación sin necesidad de configuración inicial extensa.
- Dark mode y diseño responsivo: optimizado para tablets y móviles, con un modo oscuro que reduce la fatiga visual y mejora la experiencia en entornos con poca iluminación.
- Tests automáticos: unitarios y funcionales para garantizar calidad del código y evitar bugs en producción, utilizando PHPUnit para ejecutar pruebas que cubren escenarios críticos de la aplicación.
🛡️ Roles y permisos
El sistema de gestión de roles y permisos en Olympus Gym es uno de sus pilares fundamentales, proporcionando un control de acceso granular y seguro que protege la integridad de los datos y las operaciones del gimnasio. Utilizando el potente paquete Spatie Laravel Permission, la aplicación define tres roles principales: Super-admin, Admin y Member, cada uno con un conjunto específico de permisos que se alinean con sus responsabilidades y necesidades. Este enfoque asegura que los usuarios solo puedan acceder y modificar la información relevante para su rol, previniendo errores accidentales y posibles brechas de seguridad. Los permisos se asignan de manera precisa, permitiendo acciones como crear, editar, eliminar y ver recursos específicos, mientras que se restringen otras para mantener la separación de responsabilidades. Esta estructura no solo mejora la seguridad, sino que también facilita la administración del gimnasio al delegar tareas apropiadas a cada rol. A continuación, se detallan exhaustivamente los roles definidos en el sistema y sus respectivos permisos:
- Super-admin:
- ✅
Puede: - Ver, crear, editar y eliminar: usuarios, Roles.
- Ver estadísticas de las suscripciones y descargar reportes.
- ❌
No Puede: - Gestionar la suscripción de un usuario ageno al suyo.
- gestionar el perfil de un usuario ageno al suyo.
- Ver, crear, editar y eliminar: salas y actividades, ademas de horarios para las actividades.
- ✅
- Admin:
- ✅
Puede: - Ver estadísticas de las suscripciones y descargar reportes.
- Ver: usuarios y Roles.
- Ver, crear, editar y eliminar: salas y actividades, ademas de horarios para las actividades.
- ❌
No Puede: - Crear, editar y eliminar: usuarios y Roles.
- Gestionar la suscripción de un usuario ageno al suyo.
- gestionar el perfil de un usuario ageno al suyo.
- ✅
- Member:
- ✅
Puede: - Ver su dashboard y gestionarlo.
- Ver las vistas: Instalaciones, Servicios, Contacto.
- Inscribirse a una actividad.
- Ver y gestionar su perfil.
- Ver y gestionar su suscripcion.
- ❌
No Puede: - Ver, crear, editar y eliminar: usuarios y Roles.
- Crear, editar y eliminar: salas y actividades, ademas de horarios para las actividades.
- Gestionar la suscripción de un usuario ageno al suyo.
- gestionar el perfil de un usuario ageno al suyo.
- Ver estadísticas de las suscripciones y descargar reportes.
- ✅
👤 Usuarios de prueba
👤 diego chacon
Rol: super-admin
Email: diego_chacon@superadmin.com
Contraseña: PassNix$123
Permisos: Acceso total a usuarios, roles, actividades, salas, suscripciones.
👤 luis guillermo
Rol: admin
Email: luis_admin@admin.com
Contraseña: PassNix$123
Permisos: Gestión de actividades, salas, horarios y estadísticas.
👤 raul prieto
Rol: member
Email: raul_prieto@socio.com
Contraseña: PassNix$123
Permisos: Reservar actividades, ver suscripción y gestionar perfil.
Puedes usar estos datos para iniciar sesión y probar la aplicación con diferentes permisos.
📊 Estadísticas con Tabulator
Uno de los aspectos más destacados de Olympus Gym es su sistema avanzado de estadísticas dinámicas, implementado mediante la poderosa librería JS-Tabulator. Esta funcionalidad proporciona visualizaciones de datos interactivas y personalizadas que se adaptan automáticamente según el rol del usuario, ofreciendo insights valiosos para la toma de decisiones. Las estadísticas no solo presentan información de manera atractiva, sino que permiten filtrar, ordenar y exportar datos en tiempo real, facilitando el análisis profundo del rendimiento del gimnasio. La integración de Tabulator con Laravel y Livewire asegura una experiencia fluida y responsiva, donde los datos se actualizan dinámicamente sin necesidad de recargar la página. Este enfoque moderno de presentación de datos transforma números crudos en información accionable, ayudando tanto a los miembros a seguir su progreso personal como a los administradores a optimizar las operaciones del gimnasio. A continuación, se detallan las estadísticas disponibles según el rol del usuario:
- Member (socio): podrá visualizar en su dashboard estadísticas personalizadas sobre las clases asistidas, el porcentaje de participación en cada una de ellas y su progreso a lo largo del tiempo, incluyendo gráficos de barras para asistencia mensual y tendencias de participación.
- Admin / Superadmin: dispondrán de estadísticas globales del gimnasio, como el número de miembros activos según su tipo de cuota, altas y bajas del año, así como miembros activos por rango de edad, con posibilidad de drill-down para análisis detallados.
Estas estadísticas permiten un análisis claro y visual, mejorando la experiencia del socio y facilitando la gestión estratégica para los administradores. La implementación utiliza técnicas avanzadas de visualización de datos, incluyendo colores dinámicos, tooltips informativos y opciones de exportación a CSV o PDF, asegurando que la información sea no solo accesible sino también profesional y fácil de compartir.
🧪 Tests
La calidad y fiabilidad de Olympus Gym se garantiza mediante una suite completa de tests automáticos que cubren tanto pruebas unitarias como funcionales. Esta práctica de desarrollo orientado a pruebas (TDD/BDD) asegura que cada componente de la aplicación funcione correctamente y que las nuevas funcionalidades no rompan el código existente. Los tests se ejecutan utilizando PHPUnit, el framework estándar para testing en PHP, y se integran perfectamente con el flujo de desarrollo de Laravel. Cada test está diseñado para validar escenarios específicos, desde la autenticación de usuarios hasta la gestión compleja de reservas de actividades, garantizando que la aplicación mantenga su integridad bajo diferentes condiciones. La automatización de estos tests permite detectar errores temprano en el ciclo de desarrollo, reduciendo significativamente los bugs en producción y facilitando el mantenimiento a largo plazo. A continuación, se muestra cómo ejecutar los tests:
php artisan test
Los tests cubren registro, gestión de actividades, reservas, roles y permisos, incluyendo pruebas de integración con la base de datos, validaciones de formularios, y comportamientos específicos de cada rol de usuario. Esta cobertura exhaustiva asegura que Olympus Gym no solo funcione correctamente en el momento del despliegue, sino que mantenga su calidad a través de futuras actualizaciones y expansiones.
📦 Datos ficticios
Para facilitar la demostración y el desarrollo de Olympus Gym, la aplicación incluye un sistema robusto de datos ficticios que se cargan automáticamente en la base de datos. Utilizando las poderosas migraciones y seeders de Laravel, se crean datos realistas que representan un gimnasio completamente operativo, incluyendo actividades variadas como yoga, spinning y crossfit, horarios flexibles que cubren diferentes franjas horarias, salas equipadas con diferentes capacidades y tipos de instalaciones, y usuarios con roles diversos que permiten probar todas las funcionalidades del sistema. Estos datos no solo sirven para propósitos de desarrollo y testing, sino que también proporcionan una experiencia inmediata para nuevos usuarios que desean explorar la aplicación sin necesidad de configuración manual. La implementación utiliza factories de Laravel para generar datos coherentes y variados, asegurando que las relaciones entre entidades (como usuarios inscritos en actividades) sean lógicas y realistas. Este enfoque acelera significativamente el proceso de onboarding y permite a los desarrolladores y testers trabajar con un entorno rico en datos desde el primer momento.
📲 Registro y acceso
Olympus Gym ofrece múltiples vías seguras y convenientes para que los usuarios se registren y accedan a la plataforma, combinando métodos tradicionales con autenticación social moderna. Este enfoque flexible asegura que tanto usuarios técnicos como no técnicos puedan unirse fácilmente al gimnasio digital, mientras se mantiene un alto nivel de seguridad y verificación. La implementación utiliza Laravel Fortify para la gestión de autenticación, complementado con paquetes adicionales para la integración con proveedores sociales. Cada método de registro incluye validaciones robustas para prevenir fraudes y asegurar la integridad de los datos, mientras que el proceso de acceso es rápido y sin fricciones. A continuación, se detallan las opciones disponibles para registro y acceso:
- Formulario de registro: completa tus datos personales, incluyendo nombre, email y contraseña segura, además de aceptar la política de privacidad y términos de servicio para asegurar el cumplimiento legal.
- Acceso con GitHub o Google: inicia sesión rápidamente con tus credenciales sociales, aprovechando OAuth 2.0 para una autenticación segura y sin necesidad de recordar contraseñas adicionales.
📞 Contacto del desarrollador
Para consultas, soporte técnico, colaboraciones o cualquier pregunta relacionada con Olympus Gym, no dudes en contactar al desarrollador principal. Diego Chacon Delgado es un apasionado desarrollador web full-stack especializado en tecnologías PHP y JavaScript, con experiencia en el desarrollo de aplicaciones empresariales escalables. Su enfoque combina buenas prácticas de desarrollo con innovación tecnológica, resultando en soluciones robustas y user-friendly. El proyecto Olympus Gym representa su compromiso con la comunidad open-source y su interés en crear herramientas útiles para la gestión de negocios locales. Si encuentras algún issue, tienes sugerencias de mejora, o simplemente quieres discutir sobre desarrollo web, el contacto está abierto para cualquier tipo de comunicación constructiva.
Dev: Diego Chacon Delgado
Email: info@diegochacondev.es
¡Gracias por probar Olympus Gym! 💪