Simulador de Rifas Educativo - Proyecto Final Integrador del curso Node.js de TalentoTech
SimulaRifas es una aplicación web educativa que simula el funcionamiento de rifas y sorteos sin involucrar dinero real. Desarrollada como proyecto final para el curso de Node.js de TalentoTech, implementa una arquitectura completa con frontend interactivo y backend robusto.
- Simulador Interactivo: Interfaz intuitiva para seleccionar números y realizar sorteos
- Gestión de Usuarios: Sistema de autenticación con JWT
- Rifas Privadas: Creación y gestión de simulaciones con códigos de acceso
- Rifas Públicas: Contenido de demostración accesible sin registro
- API RESTful: Backend modular con arquitectura MVC
- Responsive Design: Adaptable a dispositivos móviles y desktop
- Frontend: https://talento-tech-simula-rifas.vercel.app/
- Repositorio: https://github.com/fasmote/TalentoTech-SimulaRifas
- HTML5 - Estructura semántica
- CSS3 - Estilos modernos con Flexbox y Grid
- JavaScript ES6+ - Lógica interactiva
- Fetch API - Comunicación con el backend
- Node.js - Entorno de ejecución
- Express.js - Framework web
- JWT - Autenticación de usuarios
- JSON - Almacenamiento de datos (migración a Firebase en progreso)
- CORS - Configuración de dominios cruzados
- Vercel - Plataforma de despliegue
- Git/GitHub - Control de versiones
- VS Code - Editor de código
TT_rifas_LIMPIA_LIMPIA/
├── public/ # Archivos estáticos
│ ├── css/
│ │ └── styles.css # Estilos principales
│ ├── js/
│ │ ├── app.js # Lógica principal
│ │ └── rifas.js # Funciones de rifas
│ └── index.html # Página principal
├── backend/ # Servidor Node.js (en desarrollo)
│ ├── controllers/ # Lógica de negocio
│ ├── models/ # Modelos de datos
│ ├── routes/ # Rutas de la API
│ ├── services/ # Servicios de datos
│ └── server.js # Servidor principal
├── docs/ # Documentación
├── .gitignore # Archivos ignorados
├── .env.example # Variables de entorno
├── README.md # Este archivo
└── PRODUCTO.md # Requerimientos detallados
- Node.js (versión 14 o superior)
- npm o yarn
- Navegador web moderno
-
Clonar el repositorio
git clone https://github.com/fasmote/TalentoTech-SimulaRifas.git cd TalentoTech-SimulaRifas -
Instalar dependencias del backend
cd backend npm install -
Configurar variables de entorno
cp .env.example .env # Editar .env con tus configuraciones -
Inicializar DB
npm run init-db
-
Agregar contenido demo
npm run demo-content
-
Iniciar el servidor backend
npm run dev
-
Abrir el frontend
- Abrir
public/index.htmlen el navegador - O usar un servidor local como Live Server
- Abrir
npm run dev # Iniciar servidor en modo desarrollo
npm start # Iniciar servidor en producción
npm run init-db # Iniciar DB
npm run demo-content # Crear contenido de demostración
npm test # Ejecutar pruebas- Visita la página principal
- Selecciona números haciendo clic en la grilla
- Usa "Elegir al Azar" para selección automática
- Haz clic en "Simular Sorteo" para ver el ganador
- Crear Cuenta: Registrarte con usuario, email y contraseña
- Crear Simulaciones: Título y descripción personalizados
- Compartir Código: Código de 6 caracteres para participantes
- Gestionar: Editar, ver estadísticas y realizar sorteos
- Ve a "Acceder por Código"
- Ingresa el código de 6 caracteres
- Selecciona números y participa
- El propietario puede realizar el sorteo
- ✅ Simulador de demostración
- ✅ Visualización de rifas públicas
- ✅ Acceso por código a rifas privadas
- ✅ Crear simulaciones personalizadas
- ✅ Gestionar rifas (editar, eliminar)
- ✅ Códigos de acceso únicos
- ✅ Realizar sorteos automatizados
- ✅ Estadísticas de participación
- ✅ Autenticación JWT
- ✅ CRUD completo de rifas
- ✅ Participación en rifas
- ✅ Sorteos automatizados
- ✅ Manejo de errores
POST /api/auth/register # Registrar usuario
POST /api/auth/login # Iniciar sesión
POST /api/auth/logout # Cerrar sesión
GET /api/auth/me # Datos del usuario actualGET /api/rifas # Listar rifas públicas
POST /api/rifas # Crear nueva rifa
GET /api/rifas/my # Mis rifas
GET /api/rifas/my/:id # Ver mi rifa específica
PUT /api/rifas/:id # Actualizar rifa
DELETE /api/rifas/:id # Eliminar rifaGET /api/rifas/access/:code # Acceder por código
POST /api/rifas/:id/participate # Participar en rifa
POST /api/rifas/:id/draw # Realizar sorteo- Sin dinero real: Aplicación educativa únicamente
- Cumple normativas: No constituye juego de apuestas
- Datos ficticios: Participantes y premios simulados
- JWT Tokens: Autenticación segura
- Validación: Datos de entrada sanitizados
- CORS: Configuración de dominios permitidos
- Rate Limiting: Protección contra spam (en desarrollo)
- Frontend responsivo completo
- Sistema de autenticación
- CRUD de rifas y usuarios
- Simulador interactivo
- Deploy en Vercel
- Fase 16: Arquitectura MVC backend
- Fase 17: API RESTful independiente
- Fase 18: Migración a Firebase/Firestore
- Notificaciones push
- Analytics de rifas
- Exportación de resultados
- Modo oscuro
- Internacionalización
Este proyecto es parte de un curso educativo, pero las contribuciones son bienvenidas:
- Fork del repositorio
- Crear rama feature (
git checkout -b feature/AmazingFeature) - Commit cambios (
git commit -m 'Add some AmazingFeature') - Push a la rama (
git push origin feature/AmazingFeature) - Abrir Pull Request
Este proyecto está bajo la Licencia MIT. Ver LICENSE para más detalles.
Claudio - Estudiante TalentoTech Node.js
- GitHub: @fasmote
- Proyecto: TalentoTech-SimulaRifas
- TalentoTech por la excelente formación en Node.js
- Prof. Jean Paul Ferreira por la guía y enseñanza en Node.js
- Comunidad open source por las herramientas utilizadas
Si tienes problemas o preguntas:
- Revisa la documentación en
PRODUCTO.md - Busca en Issues
- Crea un nuevo issue si es necesario
🎲 SimulaRifas - Aprendiendo Node.js con TalentoTech 🎲