Una plataforma educativa innovadora que transforma el aprendizaje en una experiencia interactiva y divertida mediante la gamificación con mascotas virtuales.
- Mascotas Virtuales: Cada estudiante tiene su propia mascota que crece y evoluciona según su desempeño académico
- Sistema de Monedas (KumoSoles): Gana monedas completando quizzes y actividades
- Sistema de Rachas: Multiplica tus recompensas manteniendo una racha diaria de actividad
- Niveles y Experiencia: Progresa a través de niveles completando quizzes y actividades
-
Quizzes Diarios:
- Quiz automático generado diariamente por clase
- Sistema de respuestas múltiples (A, B, C, D)
- Feedback inmediato con respuestas correctas e incorrectas
- Recompensas en KumoSoles basadas en el desempeño
- Prevención de respuestas duplicadas
-
Historial de Quizzes:
- Visualización de todos los quizzes completados
- Detalles de respuestas correctas vs incorrectas
- Seguimiento de progreso por clase
-
Tienda Virtual:
- Compra de accesorios para tu mascota
- Fondos personalizados
- Comida para alimentar a tu mascota
- Sistema de inventario personal
-
Gestión de Mascota:
- Alimenta a tu mascota con items comprados
- Equipa accesorios y personaliza la apariencia
- Sistema de hambre y felicidad
- Visualización de estadísticas (nivel, experiencia, monedas)
-
Material de Clase:
- Acceso a materiales subidos por profesores
- Descarga de documentos (PDF, PPT, DOC)
- Organización por clases
-
Gestión de Quizzes:
- Habilitar/deshabilitar quizzes automáticos diarios
- Crear quizzes manuales bajo demanda
- Configuración por clase
-
Gestión de Clases:
- Crear nuevas clases con nombre y materia
- Añadir estudiantes a clases existentes
- Visualizar lista de estudiantes por clase
-
Seguimiento de Estudiantes:
- Ver historial de quizzes de cada estudiante
- Monitorear desempeño individual
- Estadísticas de la clase
-
Material Educativo:
- Subir archivos y documentos a clases
- Gestión de materiales por clase
- Soporte para múltiples formatos de archivo
-
Gestión de Usuarios:
- Crear profesores, estudiantes y administradores
- Visualizar todos los usuarios del sistema
- Ver roles y permisos de cada usuario
- Tabla completa con ID, username, email, nombre y rol
-
Gestión de Clases:
- Ver todas las clases del sistema
- Asignar profesores a clases
- Monitorear estructura académica
-
Sistema de Items (Modo Sistema):
- Crear nuevos items para la tienda
- Subir imágenes de items
- Configurar precios y tipos (FOOD, ACCESSORY, BACKGROUND)
- Gestión del catálogo completo
-
Diseño Moderno:
- UI limpia y atractiva con Tailwind CSS
- Componentes reutilizables con shadcn/ui
- Animaciones y transiciones suaves
- Diseño responsive para móviles y desktop
-
Experiencia Visual:
- Sistema de avatares personalizados
- Badges de rol con códigos de color
- Indicadores visuales de progreso
- Modales informativos y notificaciones
-
Navegación Intuitiva:
- Dashboard personalizado por rol
- Menú de perfil con opciones rápidas
- Tabs para organizar contenido
- Breadcrumbs y navegación clara
-
Login Seguro:
- Autenticación basada en JWT tokens
- Validación de credenciales
- Gestión de sesiones
- Protección de rutas por rol
-
Roles de Usuario:
- STUDENT: Acceso a quizzes, tienda, mascota e inventario
- TEACHER: Gestión de clases, quizzes y materiales
- ADMIN: Control total del sistema
- SYSTEM: Gestión de items de tienda
- Framework: React 18 con TypeScript
- Estilizado: Tailwind CSS + shadcn/ui components
- Estado: React Hooks (useState, useEffect, useContext)
- Routing: React Router DOM
- HTTP Client: Axios con interceptores
- Gestión de Formularios: Formularios controlados con validación
- Notificaciones: Sistema de toast con Sonner
- Iconos: Lucide React
Node.js >= 16.x
npm >= 8.x- Clonar el repositorio
git clone <repository-url>
cd frontend- Instalar dependencias
npm install- Configurar variables de entorno
# Crear archivo .env
API_BASE_URL=http://localhost:3000- Ejecutar en modo desarrollo
npm run dev- Construir para producción
npm run buildfrontend/
├── src/
│ ├── components/ # Componentes React
│ │ ├── ui/ # Componentes base de shadcn/ui
│ │ ├── AdminDashboard.tsx
│ │ ├── TeacherDashboard.tsx
│ │ ├── StudentDashboard.tsx
│ │ ├── QuizModal.tsx
│ │ ├── QuizHistory.tsx
│ │ ├── Shop.tsx
│ │ ├── Inventory.tsx
│ │ ├── ClassroomPets.tsx
│ │ └── SystemShopManager.tsx
│ ├── contexts/ # Context API
│ │ └── AuthContext.tsx
│ ├── services/ # Servicios API
│ │ ├── api.ts
│ │ └── systemAuth.ts
│ ├── types/ # TypeScript types
│ │ └── auth.ts
│ └── App.tsx # Componente principal
├── public/ # Archivos estáticos
└── package.json
- Login → Dashboard
- Ver mascota y estadísticas
- Completar quiz diario → Ganar KumoSoles
- Comprar items en la tienda
- Equipar/alimentar mascota
- Ver historial de quizzes
- Login → Dashboard
- Seleccionar clase
- Gestionar quizzes (crear/habilitar/deshabilitar automáticos)
- Subir material de clase
- Ver desempeño de estudiantes
- Crear nuevas clases
- Login → Dashboard
- Crear usuarios (profesores/estudiantes)
- Ver todos los usuarios y roles
- Gestionar clases del sistema
- Monitorear actividad general
- Login con credenciales de sistema
- Crear items para la tienda
- Subir imágenes de items
- Configurar precios y tipos
- Administrar catálogo
login()- Iniciar sesióncheckToken()- Validar token
getAllUsers()- Obtener todos los usuariosgetAllStudents()- Obtener estudiantescreateTeacher()- Crear profesorcreateStudent()- Crear estudiantecreateAdmin()- Crear administradorgetMyDataInClass()- Datos del usuario en clase específica
getMyClasses()- Obtener mis clasesgetAllClasses()- Obtener todas las clasescreateClass()- Crear clasegetClass()- Obtener detalle de claseaddStudentToClass()- Añadir estudiante a clase
getQuizzesFromClass()- Obtener quizzes de una clasegetQuizInfoById()- Detalle de quiz específicogetDailyQuiz()- Obtener quiz diariogetAllOwnAnswers()- Historial de respuestasgetOwnAnswer()- Respuesta específicaanswerDailyQuiz()- Responder quiz diarioenableAutomaticDailyQuiz()- Habilitar quiz automáticodisableAutomaticDailyQuiz()- Deshabilitar quiz automáticocreateDailyQuiz()- Crear quiz manual
getMaterialInfoFromClass()- Materiales de una clasegetMaterial()- Obtener material específicouploadMaterialToClass()- Subir material a clase
getShopItems()- Obtener items de tiendagetShopItem()- Detalle de itempurchaseShopItem()- Comprar itemcreateShopItem()- Crear item (sistema)
getOwnItemsInClass()- Inventario personal por clase
getAllPetsFromClass()- Mascotas de una clasegetPet()- Detalle de mascotagetOwnPet()- Mi mascota en clasegetOwnPets()- Todas mis mascotascreatePet()- Crear mascotaequipItem()- Equipar accesoriofeedPet()- Alimentar mascotaunequipItem()- Desequipar accesorio
- AdminDashboard: Panel de control para administradores
- TeacherDashboard: Panel para profesores con gestión de clases y quizzes
- StudentDashboard: Panel para estudiantes con mascota y quizzes
- QuizModal: Modal interactivo para responder quizzes
- QuizHistory: Historial detallado de quizzes completados
- Shop: Tienda virtual con items categorizados
- Inventory: Inventario personal del estudiante
- ClassroomPets: Visualización de mascotas de la clase
- MaterialsList: Lista de materiales de clase
- UploadMaterial: Componente para subir archivos
- SystemShopManager: Gestión de items de tienda (sistema)
- Button, Card, Input, Label, Badge
- Table, Tabs, Select, Progress
- Avatar, Textarea, Modal/Dialog
- JWT Authentication: Tokens almacenados en localStorage
- Protected Routes: Rutas protegidas por rol
- API Interceptors: Headers automáticos con token
- Validación de Formularios: Validación client-side
- Manejo de Errores: Feedback claro de errores
- ✅ Desktop (1920px+)
- ✅ Laptop (1280px - 1920px)
- ✅ Tablet (768px - 1280px)
- ✅ Mobile (320px - 768px)
- Validación de respuestas del backend
- Mensajes de error informativos
- Logging detallado en consola
- Fallbacks para datos faltantes
- Prevención de duplicación de requests
- Sistema de notificaciones en tiempo real
- Chat entre estudiantes y profesores
- Leaderboards globales y por clase
- Achievements y logros
- Sistema de clanes/grupos
- Minijuegos educativos
- Modo oscuro
- Internacionalización (i18n)
Las contribuciones son bienvenidas. Por favor:
- Fork el proyecto
- Crea una rama para tu feature (
git checkout -b feature/AmazingFeature) - Commit tus cambios (
git commit -m 'Add some AmazingFeature') - Push a la rama (
git push origin feature/AmazingFeature) - Abre un Pull Request
Este proyecto es parte de un proyecto académico de UTEC.
Para preguntas o sugerencias, contacta al equipo de desarrollo.
Hecho con ❤️ por el equipo de Kumo