The Realtime Hackathon by Portal · Demo en vivo
Plataforma para hacer entrevistas técnicas de programación en tiempo real. El candidato resuelve un ejercicio en un editor de código compartido; el evaluador lo ve escribir en vivo. En paralelo, un agente de IA analiza el código en segundo plano —complejidad, riesgos de seguridad, casos borde no cubiertos— y publica sus hallazgos en un panel que solo el evaluador puede ver. El candidato nunca sabe qué está señalando la IA: se concentra únicamente en programar.
Portal es la columna vertebral del producto, no un agregado. Sincroniza tres actores independientes (candidato, evaluador y el agente de IA) mediante canales separados por audiencia, más presencia en vivo:
| Canal de Portal | Quién escribe | Quién lee | Para qué |
|---|---|---|---|
interview:{roomId} |
candidato y evaluador | ambos | código del editor en tiempo real |
analysis:{roomId} |
el agente de IA | solo el evaluador | complejidad, riesgos, edge cases, Q&A, reporte final |
chat:{roomId} |
candidato y evaluador | ambos | chat de texto de la sala |
cursor:{roomId} |
el candidato | el evaluador | posición del cursor en vivo (radar de atención) |
La asimetría entre interview y analysis es lo que hace posible el producto: sin
canales separados por audiencia no habría forma simple de mantener sincronizados en
tiempo real a dos personas con visibilidad distinta de la misma información. Portal
también resuelve la presencia (quién está conectado a la sala) sin código adicional.
Un LLM (Gemini) recibe el código cada vez que el candidato deja de teclear un momento, y devuelve un análisis estructurado: complejidad estimada, riesgos de seguridad concretos y casos borde no cubiertos — cada hallazgo con la línea exacta donde ocurre, clickeable para saltar ahí en el editor. El evaluador puede además preguntarle algo puntual al agente sobre el código, y pedir un reporte final al cerrar la entrevista (nota + fortalezas + riesgos + recomendaciones, redactado en lenguaje simple para que lo pueda leer alguien sin conocimientos de programación).
- Next.js 15 (App Router) + TypeScript, desplegado en Vercel.
- Monaco Editor para el editor de código.
- Portal (
@portalsdk/core+@portalsdk/react) para todo el tiempo real. - Gemini (vía su endpoint compatible con OpenAI) para el análisis de IA.
npm install
cp .env.local.example .env.local # PowerShell: Copy-Item .env.local.example .env.local
# edita .env.local con tus keys reales (ver tabla abajo)
npm run devAbre http://localhost:3000. Prueba con dos pestañas: una en /room/demo (candidato) y
otra en /room/demo?role=evaluador (evaluador) — o usa el botón "Crear sala nueva" del
landing.
| Variable | Qué es | Obligatoria |
|---|---|---|
NEXT_PUBLIC_PORTAL_API_KEY |
Publishable key de Portal (pk_..., desde useportal.co) |
Sí |
GEMINI_API_KEY |
Key de Gemini (desde aistudio.google.com/apikey) | Sí |
GEMINI_MODEL |
gemini-3.1-flash-lite |
Sí |
PORTAL_SECRET_KEY |
Secret key de Portal — permite que el servidor publique el análisis directo | No |
Un solo lenguaje (JavaScript), roles hardcodeados (candidato/evaluador, sin autenticación real), sin análisis estático de código (linters/AST) y sin grabación de sesión — el foco está en la interacción en tiempo real entre personas y agente sobre Portal, no en construir un IDE completo.