DanceFit Studio es una aplicación web interactiva premium de una sola página (SPA) diseñada para gestionar la reserva de clases de baile urbano en tiempo real. Este proyecto ha sido estructurado de forma modular y profesional a partir de un prototipo monolítico, implementando persistencia de datos relacional y autenticación en la nube mediante Supabase.
- Autenticación Real (Supabase Auth): Registro de clientes e inicio de sesión seguro con correo y contraseña.
- Roles Diferenciados:
- Cliente: Explora clases con filtros dinámicos, reserva spots interactivos en la pista, realiza el pago seguro simulado mediante Yape (con código de validación) y visualiza su historial de reservas con códigos QR oficiales autogenerados.
- Administrador: Acceso exclusivo a un Dashboard de control de negocio. Permite registrar y publicar nuevas clases en tiempo real, auditar las reservas de Yape de todos los clientes y visualizar métricas críticas financieras del estudio (ingresos recaudados, clase más popular, y tasa de ocupación promedio).
- Spots 100% Dinámicos: Los asientos de la sala de baile se bloquean consultando la base de datos en tiempo real para evitar reservas duplicadas del mismo spot.
- Modo Demo Local Inteligente: Si no has configurado tus credenciales de Supabase, la aplicación activa automáticamente un Modo Demo Local usando
localStorage. ¡La aplicación funciona y se puede probar inmediatamente al abrir elindex.html! - Diseño Premium y Oscuro Adaptativo: Interfaz estilizada tipo Glassmorphism con transiciones fluidas e interruptor dinámico de Modo Claro/Oscuro.
La organización del proyecto cumple con las mejores prácticas para repositorios de desarrollo web y su publicación directa en hosting estáticos (como GitHub Pages o Vercel):
dancefit-studio/
├── index.html # Interfaz de usuario unificada (Single Page Application)
├── css/
│ └── styles.css # Hoja de estilos premium (Glassmorphism, Modo Oscuro y Responsive)
├── js/
│ ├── config.js # Credenciales activas de Supabase (Incluido en .gitignore)
│ ├── config.example.js # Plantilla guía de credenciales de Supabase
│ ├── supabase-db.js # Inicializador de base de datos y adaptador de operaciones asíncronas
│ ├── auth.js # Gestor de sesiones, login, registro y roles de usuario
│ ├── client.js # Lógica interactiva para la cartelera de clases y reservas del Cliente
│ ├── admin.js # Control de creación de clases, métricas de negocio y tabla de auditoría
│ └── app.js # Enrutador principal de vistas y coordinador del estado
├── sql/
│ └── schema.sql # Script SQL para estructurar la base de datos en Supabase
├── .gitignore # Archivos excluidos de control de versiones (protege claves secretas)
└── README.md # Guía del proyecto e instrucciones de instalación (Este archivo)
Si deseas conectar la aplicación a tu propia base de datos en la nube de Supabase, sigue estos sencillos pasos:
- Ve al panel de control de Supabase y crea un nuevo proyecto.
- Una vez creado tu proyecto, dirígete a la sección de SQL Editor en el menú izquierdo.
- Crea una nueva consulta haciendo clic en New Query.
- Abre el archivo sql/schema.sql de este proyecto, copia todo su contenido y pégalo en el editor SQL de Supabase.
- Presiona el botón Run. Este script creará automáticamente las tablas
profiles,classes,reservations, habilitará las políticas de seguridad RLS e instalará el disparador automático (trigger) para que cada usuario registrado cree su perfil de forma automática.
- En el panel de tu proyecto en Supabase, ve a Project Settings -> API.
- Copia la Project URL y la clave anon (public).
- Abre el archivo js/config.js en tu editor y pega tus valores:
const SUPABASE_URL = "PEGAR_AQUÍ_TU_PROJECT_URL"; const SUPABASE_ANON_KEY = "PEGAR_AQUÍ_TU_ANON_KEY";
- Guarda los cambios. ¡La aplicación ahora se conectará automáticamente a tu nube de Supabase en tiempo real!
Si utilizas el Modo Demo Local (o si ejecutas el script SQL inicial en Supabase), puedes iniciar sesión de inmediato utilizando estas cuentas de prueba:
- Cuenta de Administrador:
- Correo:
admin@dancefit.com - Contraseña:
admin123
- Correo:
- Cuenta de Cliente:
- Correo:
cliente@dancefit.com - Contraseña:
cliente123
- Correo:
(Nota: También puedes registrar tus propios clientes haciendo clic en "Regístrate aquí" en la pantalla de inicio de sesión de la aplicación).
Dado que hemos estructurado las carpetas perfectamente, puedes crear un repositorio en GitHub y empujar tu código ejecutando estos comandos en la terminal (Git Bash, PowerShell o CMD) dentro del directorio dancefit-studio:
- Inicializar el repositorio local:
git init
- Agregar todos los archivos al commit inicial:
(El archivo
.gitignoreexcluirá automáticamentejs/config.jspara proteger tus claves).git add . - Hacer tu primer commit:
git commit -m "commit inicial: DanceFit Studio con Supabase modular y responsivo" - Enlazar a tu repositorio remoto de GitHub:
(Crea un repositorio vacío en tu cuenta de GitHub, copia la URL y reemplázala en el siguiente comando):
git branch -M main git remote add origin https://github.com/tu-usuario/dancefit-studio.git
- Subir tus cambios:
git push -u origin main
Al ser una aplicación web estática pura (HTML, CSS y JS sin compilación), es extremadamente fácil de alojar de forma gratuita en la nube. Hemos agregado configuraciones avanzadas de producción para que puedas elegir cualquiera de estos tres métodos populares:
Hemos configurado un archivo vercel.json listo para producción, que configura urls limpias y cabeceras CSP de seguridad robustas para evitar ataques XSS y asegurar que solo cargue recursos desde tu base de datos de Supabase.
- Crea una cuenta gratuita en Vercel.
- Instala la herramienta de consola de Vercel (opcional) o simplemente conecta tu cuenta de GitHub a Vercel.
- Selecciona tu repositorio
dancefit-studioe impórtalo en Vercel. - ¡Haz clic en Deploy! Tu sitio estará en línea en menos de 10 segundos con un dominio gratuito
.vercel.app.
También hemos creado un archivo de configuración netlify.toml para que el despliegue en Netlify configure adecuadamente las directivas de seguridad para el uso del cliente Supabase CDN.
- Crea una cuenta gratuita en Netlify.
- Importa tu repositorio de GitHub directamente desde la UI de Netlify.
- Deja los campos de comando de compilación y directorio de salida en blanco (ya que es HTML puro).
- Haz clic en Deploy site.
Puedes utilizar el servicio integrado de GitHub para hospedar tu sitio:
- Entra a tu repositorio en GitHub.
- Ve a la pestaña Settings (Configuración) -> Pages (Páginas) en el menú de la izquierda.
- En la sección Build and deployment, bajo Source, selecciona Deploy from a branch.
- Bajo Branch, selecciona la rama
mainy la carpeta/ (root). - Haz clic en Save (Guardar).
- En un par de minutos, GitHub te dará un link público como
https://tu-usuario.github.io/dancefit-studio/.
¡Felicidades! Tu proyecto modular está completamente estructurado, blindado para producción con políticas CSP, persistido en una base de datos relacional y listo para ser compartido y desplegado con el mundo. 🕺🔥