Una aplicación web de trivia/quiz interactiva que permite a maestros crear cuestionarios y a estudiantes participar en ellos con verificación por email y sistema de roles.
- Autenticación completa con verificación por email
- Sistema de roles (Maestro/Estudiante)
- Gestión de trivias para maestros
- Participación en tiempo real para estudiantes
- Sistema de resultados y estadísticas
- Códigos únicos para acceder a trivias
- Interfaz responsive (HTML/CSS/JS vanilla)
- Node.js con Express.js
- MongoDB Atlas (Base de datos en la nube)
- Mongoose (ODM)
- JWT (Autenticación)
- Nodemailer (Emails de verificación)
- bcryptjs (Encriptación de contraseñas)
- HTML5, CSS3, JavaScript vanilla
- Fetch API para comunicación con backend
git clone git@github.com:AngRodSt/Trivia-Lab.git
cd Trivia-Lab
npm install
cp .env.example .env
Editar .env
con tus credenciales:
# MongoDB Atlas
MONGO_URI= tu uri de mongo db
# Servidor
PORT=5000
NODE_ENV=development
# Email (Gmail)
EMAIL_USER=tu-email@gmail.com
EMAIL_PASS=tu-app-password
# JWT
JWT_SECRET=tu_jwt_secret_super_seguro
# Frontend
FRONTEND_URL=http://localhost:3000
- Crear cuenta en MongoDB Atlas
- Crear un cluster gratuito
- Crear un usuario de base de datos
- Obtener la cadena de conexión
- Agregar tu IP a la whitelist
- Habilitar 2FA en tu cuenta de Gmail
- Generar una "App Password"
- Usar esa contraseña en
EMAIL_PASS
npm run dev
npm start
npm run seed
El servidor se ejecutará en http://localhost:5000
POST /api/auth/register
- Registro de usuariosPOST /api/auth/login
- Inicio de sesiónPOST /api/auth/verify
- Verificar email con código
POST /api/trivia/create
- Crear nueva triviaGET /api/trivia/my-trivias
- Obtener trivias del maestroPOST /api/trivia/:id/questions
- Agregar pregunta a triviaPATCH /api/trivia/:id/toggle
- Activar/Desactivar trivia
GET /api/trivia/join/:code
- Unirse a trivia por códigoPOST /api/results/submit
- Enviar respuestas
GET /api/results/my-results
- Resultados del estudianteGET /api/results/trivia/:triviaId
- Resultados de trivia (maestros)GET /api/results/:resultId/detail
- Detalle de resultado
La API usa JWT (JSON Web Tokens) para autenticación. Incluir el token en el header:
Authorization: Bearer <token>
trivia-app-clean/
├── backend/
│ ├── middleware/ # Middlewares (auth, etc.)
│ ├── models/ # Modelos de Mongoose
│ ├── routes/ # Rutas de la API
│ ├── script/ # Scripts utilitarios
│ ├── utils/ # Utilidades (mailer, etc.)
│ └── server.js # Archivo principal
├── frontend/ # Cliente web
├── .env.example # Variables de entorno template
├── .gitignore # Archivos ignorados por Git
├── package.json # Dependencias del proyecto
└── README.md # Este archivo
- Registrarse y verificar email
- Iniciar sesión
- Crear trivias con preguntas
- Compartir código de trivia con estudiantes
- Ver resultados y estadísticas
- Registrarse y verificar email
- Iniciar sesión
- Unirse a trivia con código
- Responder preguntas
- Ver resultados obtenidos
- Fork el proyecto
- Crear feature branch (
git checkout -b feature/amazing-feature
) - Commit cambios (
git commit -m 'Add amazing feature'
) - Push al branch (
git push origin feature/amazing-feature
) - Abrir Pull Request
Este proyecto está bajo la Licencia MIT. Ver LICENSE
para más detalles.
- Ángel Rodríguez - AngRodSt
- MongoDB Atlas por la base de datos gratuita
- Nodemailer por el servicio de emails
- Express.js por el framework web