← proyectosCode Arena
// proyecto — Code Arena

Code Arena

Porque una competencia de programación universitaria debe sentirse como una arena en vivo, no como un formulario estático.

Code Arena — captura
01// historia

Llegué sin equipo

En primer semestre me inscribí al reto de programación de la universidad. No tenía equipo, apenas llevaba un mes de introducción a la carrera y un curso de Python que había hecho en Udemy. Resolví apenas uno o dos problemas en LeetCode, pero el formato me cautivó: ganar puntos que servían para abrir puertas y avanzar en un laberinto.

02// historia

Segundo lugar y resultados a mano

Para tercer semestre volví a competir, esta vez con equipo. Fue una edición virtual debido a problemas de movilidad en la ciudad y terminamos en segundo lugar. Toda la gestión del evento se hacía a mano: capturas de pantalla de LeetCode enviadas por chat y organizadores actualizando tablas manualmente. Se perdía la adrenalina de una competencia en vivo.

03// decision

Me pasaron el evento

Un año después, los estudiantes que organizaban el torneo se habían graduado. Por mi rol en la rama estudiantil de IEEE Computer Society me pidieron hacerme cargo con poco tiempo de preparación. Decidí que no podíamos seguir corriendo el evento en hojas de cálculo ni capturas de pantalla.

04// aprendizaje

La primera versión se cayó

Desarrollé una primera versión prototipada con asistencia de IA: ranking en vivo, evaluación automática y registro de equipos. El día del torneo, el backend colapsó bajo la carga concurrente. Tuvimos que improvisar sobre la marcha con 25 participantes en sala para salvar la jornada. Fue un golpe duro, pero tras tres años vinculado al proyecto me negué a abandonarlo.

05// arquitectura

Rehacerla: sandbox y tiempo real

En séptimo semestre reconstruí la plataforma desde cero. Antes de lanzarla la sometí a pruebas con agentes de IA simulando participantes en paralelo. Incorporé Judge0 autoalojado en contenedores Docker para aislar y compilar código en Python, Java, C++ y JavaScript bajo límites estrictos de memoria y CPU.

Para evitar trampas con asistentes de IA, diseñé una defensa que inyecta instrucciones invisibles en el DOM al copiar enunciados y marcas de agua SVG trazables por equipo. El leaderboard sincroniza posiciones al instante mediante eventos sobre WebSockets.

Judge0 Sandbox
evaluación
WebSockets / MQTT
tiempo real
Python · Java · C++ · JS
lenguajes
Modo Laberinto en Code Arena

↳ Modo Laberinto interactivo: los equipos desbloquean puertas usando los puntos ganados al resolver problemas.

06// resultado

Lo que vio la pantalla del evento

En la siguiente edición, 10 equipos de hasta 3 integrantes compitieron en vivo. La pantalla principal proyectó el podio reactivo sin un solo fallo de latencia. Cada envío se calificó en segundos y el laberinto se convirtió en el centro de atención del auditorio.

Ranking en vivo de Code Arena

↳ Tablero de posiciones proyectado en vivo durante el torneo universitario.

07// decision

Quién la mantiene después

El código está modularizado y documentado para que los siguientes líderes de IEEE Computer Society puedan desplegar y extender Code Arena sin depender de mí cuando me gradúe.

Construido con:FastAPI, Next.js, Python, Judge0 autoalojado, MQTT sobre WebSockets, MongoDB y Docker.
siguiente proyecto
CryptEnv→

Porque compartir API keys por WhatsApp no es una estrategia de seguridad.