Un juego educativo de SQL con temática noir que combina storytelling interactivo con validación real de consultas SQL
Unravel SQL Game es una aplicación web educativa desarrollada para el HackRush de Guayabas Devs por el equipo Dictamigos. El juego presenta una experiencia inmersiva de aprendizaje de SQL a través de una narrativa noir donde los jugadores asumen el rol de un detective que debe resolver casos utilizando consultas SQL reales.
Crear una experiencia de aprendizaje interactiva que permita a los usuarios practicar SQL de manera divertida y efectiva, con validación real de consultas sobre una base de datos MySQL.
Este proyecto fue desarrollado durante el HackRush de Guayabas Devs, un evento de desarrollo colaborativo que fomenta la innovación y el aprendizaje en equipo.
Equipo: Dictamigos
- Framework: React 19 con TypeScript
- Build Tool: Vite 7
- Routing: React Router DOM 7
- Styling: Tailwind CSS 4
- Animations: Framer Motion
- Icons: Lucide React
- UI Components: HeroUI Tabs
- Framework: Flask (Python)
- API: RESTful API
- Authentication: JWT-based authentication
- CORS: Configurado para desarrollo y producción
- Propósito: Contiene los datos del caso de investigación
- Tablas: Ciudadanos, Incidentes, Casos, Propiedades, Operativos_Estafa
- Validación: Las consultas SQL de los jugadores se ejecutan contra esta BD real
- Seguridad: Consultas de solo lectura para evitar modificaciones accidentales
- Propósito: Gestión de usuarios, records y rankings
- Tablas: Usuarios, Records, Rankings
- Funcionalidad: Autenticación, persistencia de progreso, sistema de puntuaciones
src/
├── components/ # Componentes reutilizables
│ ├── ChallengeCard.tsx
│ ├── Leaderboard.tsx
│ ├── SequenceRanking.tsx
│ └── ...
├── contexts/ # Context API para estado global
│ ├── AuthContext.tsx
│ ├── ModalContext.tsx
│ └── GameStateContext.tsx
├── hooks/ # Custom hooks
│ ├── useAuth.ts
│ ├── useGameState.ts
│ └── useModal.ts
├── pages/ # Páginas principales
│ ├── LoginPage.tsx
│ ├── HomePage.tsx
│ ├── ChapterPage.tsx
│ └── RegisterPage.tsx
├── services/ # Servicios de API
│ ├── authService.ts
│ └── recordService.ts
└── types/ # Definiciones de TypeScript
└── game.ts
- 5 Secuencias de Investigación: Cada una con múltiples challenges SQL
- Validación Real: Las consultas se ejecutan contra MySQL real
- Sistema de Puntuación: Basado en tiempo y errores
- Rankings: Globales y por secuencia
- Progreso Persistente: Guardado automático del progreso
- Registro/Login: Sistema completo de autenticación
- JWT Tokens: Autenticación segura
- Persistencia: Tokens guardados en localStorage
- Clasificaciones Globales: Todos los niveles combinados
- Rankings por Secuencia: Específicos para cada secuencia
- Múltiples Dificultades: Easy, Medium, Hard
- Posición del Usuario: Destacada en los rankings
{
"react": "^19.1.1",
"react-dom": "^19.1.1",
"react-router-dom": "^7.8.2",
"typescript": "~5.8.3",
"vite": "^7.1.2",
"tailwindcss": "^4.1.13",
"framer-motion": "^12.23.12",
"lucide-react": "^0.542.0",
"@heroui/tabs": "^2.2.23"
}- ESLint: Linting y calidad de código
- TypeScript: Tipado estático
- Vite: Build tool y dev server
- PostCSS: Procesamiento de CSS
- Node.js 18+
- npm o pnpm
- Backend Flask ejecutándose: https://github.com/gaeliam100/unravel-sql-game-back-2
- Bases de datos MySQL y PostgreSQL configuradas
# Clonar el repositorio
git clone <repository-url>
cd unravel-sql-game
# Instalar dependencias
npm install
# o
pnpm install
# Configurar variables de entorno
cp .env.example .env
# Editar .env con las URLs de tu APIVITE_API_BASE_URL=http://127.0.0.1:5000/api# Iniciar servidor de desarrollo
npm run dev- Caso Redentor: Historia noir de investigación
- 5 Secuencias: Progresión narrativa con challenges SQL
- Storytelling Visual: Imágenes y diálogos inmersivos
- Secuencia 1: Configuración de Base de Datos
- Secuencia 2: Investigación NYPD
- Secuencia 3: Análisis de Ciudadanos e Incidentes
- Secuencia 4: Investigación Avanzada
- Secuencia 5: Análisis Final de Casos
- Tiempo: Menor tiempo = mejor puntuación
- Errores: Penalización por consultas incorrectas
- Rankings: Comparación con otros jugadores
POST /api/auth/register # Registro de usuario
POST /api/auth/login # Login de usuario
POST /api/record/create-record # Crear record de juego
POST /api/game/validate-str # Validar query del nivel
GET /api/record/ranking/:difficulty/:level/:userId # Ranking por secuencia
GET /api/record/global-ranking # Ranking global
-- Tablas principales del caso
CREATE DATABASE Caso_Redentor;
USE Caso_Redentor;
-- Tablas: Ciudadanos, Incidentes, Casos, Propiedades, Operativos_EstafaDesarrollado con 💙 por el equipo Dictamigos para HackRush Guayabas Devs
Este proyecto fue desarrollado durante un hackathon. Para contribuciones futuras, por favor contactar al equipo Dictamigos.
🎮 ¡Disfruta resolviendo casos con SQL! 🕵️♂️