VoltRace es una implementación web moderna de un juego de mesa competitivo en tiempo real. Más que un juego, es una demostración de arquitectura de software robusta, combinando WebSockets para la sincronización instantánea, persistencia de datos relacional y un pipeline de DevOps completo con Testing automatizado y CI/CD.
Este proyecto ha sido refactorizado para cumplir con los más altos estándares de calidad de software:
El proyecto cuenta con una cobertura de pruebas exhaustiva dividida en 4 capas críticas, ejecutadas automáticamente mediante Pytest y Playwright:
- Unit Testing (Lógica de Juego): Verificación matemática de mecánicas de daño, cooldowns, perks (ej: Último Aliento) y condiciones de victoria.
- Edge Cases & Stress Testing: Pruebas específicas para situaciones límite como desconexiones en turno activo, intentos de ingresar a salas llenas y conflictos de habilidades complejas.
- Integration Testing (API REST): Validación de endpoints, autenticación de usuarios, manejo de sesiones y respuestas JSON con base de datos en memoria (
sqlite:///:memory:). - Socket Testing (Real-time): Simulación de clientes
socket.ioconectados simultáneamente para validar la creación de salas, chat en vivo y sincronización de turnos. - E2E Testing (Frontend): Pruebas de extremo a extremo con Playwright que navegan en la aplicación de producción, validando flujos críticos de UX (Registro, Login, Navegación) como un usuario real.
- Optimización N+1: Implementación de estrategias de carga eficiente en SQLAlchemy para reducir drásticamente las consultas a la base de datos en el módulo social.
- Gestión de Concurrencia: Uso de
db_locky contextos de aplicación seguros para manejar operaciones de base de datos dentro de hilos asíncronos de Socket.IO.
- Structured Logging: Migración total de
print statementsa un sistema deloggingprofesional con rotación de archivos y niveles de severidad (INFO,WARNING,ERROR), permitiendo un monitoreo efectivo en producción sin ruido en la consola.
- Docker Multi-stage Builds: Imagen optimizada separando la fase de compilación (
builder) de la ejecución (runner), reduciendo el tamaño de la imagen y eliminando dependencias innecesarias. - GitHub Actions: Pipeline de Integración Continua que ejecuta:
- Linter: Verificación de estilo con
BlackyFlake8. - Tests: Ejecución automática de la suite de pruebas en cada push.
- Linter: Verificación de estilo con
- 2-4 jugadores en tiempo real.
- Sistema de Energía: Mecánica de supervivencia donde la energía es vida y moneda.
- 5 Kits de Habilidades: Clases únicas (Táctico, Ingeniero, Espectro, etc.) con habilidades activas.
- Perks Dinámicos: Compra de mejoras pasivas durante la partida usando Puntos de Mejora (PM).
- Eventos Globales: Eventos aleatorios (Apagón, Sobrecarga) que alteran las reglas cada 5 rondas.
- Sistema de Amigos y Chat Privado persistente.
- Maestría de Kit: Progresión tipo RPG para cada clase.
- Cosméticos: Desbloqueo de Títulos y Animaciones especiales.
- Leaderboard global y estadísticas detalladas.
- Python 3.10 & Flask: Núcleo de la aplicación.
- Flask-SocketIO (Eventlet): Comunicación bidireccional de baja latencia.
- SQLAlchemy: ORM para manejo eficiente de datos.
- PostgreSQL: Base de datos relacional en la nube (Neon Tech).
- JavaScript (ES6 Modules): Arquitectura modular para lógica de cliente.
- Socket.IO Client: Sincronización de estado en tiempo real.
- Playwright: Automatización de navegadores para testing visual.
- Docker: Containerización.
- Black & Flake8: Calidad de código y Linting.
- Pytest: Framework de testing.
Si deseas verificar la integridad del código o contribuir, puedes ejecutar la suite de pruebas localmente:
-
Instalar dependencias de desarrollo:
pip install -r requirements.txt pip install pytest pytest-playwright playwright install
-
Correr pruebas de Lógica, API y Sockets:
pytest -v
-
Correr pruebas visuales (E2E):
# Ejecuta el navegador en modo visible para ver al bot interactuar pytest tests/test_frontend.py --headed --slowmo 1000
Este proyecto está bajo la Licencia MIT.