🔄 Cómo Probar el Cron Job Localmente
⚠️ Importante
El cron job NO se ejecuta automáticamente en desarrollo local. Solo funciona automáticamente en producción (Vercel).
En desarrollo, debes ejecutarlo manualmente usando uno de los métodos siguientes.
🎯 Método 1: Script NPM (Recomendado)
1. Asegúrate de tener CRON_SECRET en .env.local
# .env.local
CRON_SECRET=tu-secret-super-seguro-aqui
2. Ejecuta el script
pnpm cron:test
Esto ejecutará el cron job y te mostrará los resultados.
🎯 Método 2: Llamada Manual con cURL
curl -X GET http://localhost:3000/api/cron/update-hackathon-states \
-H "Authorization: Bearer tu-CRON_SECRET"
Reemplaza tu-CRON_SECRET con el valor de CRON_SECRET de tu .env.local.
🎯 Método 3: Desde el Navegador (Solo para pruebas)
⚠️ NO recomendado para producción, pero útil para pruebas rápidas:
- Abre tu navegador
- Ve a:
http://localhost:3000/api/cron/update-hackathon-states - Agrega el header
Authorization: Bearer tu-CRON_SECRETusando una extensión como "ModHeader"
📋 Qué Hace el Cron Job
El cron job verifica y actualiza automáticamente:
-
DRAFT → REGISTRATION
- Cuando
now >= registrationOpensAt - Y el hackathon tiene al menos 1 criterio
- Cuando
-
REGISTRATION → RUNNING
- Cuando
now >= registrationClosesAt
- Cuando
-
RUNNING → JUDGING
- Cuando
now >= judgingStartsAt
- Cuando
-
JUDGING → FINISHED
- Cuando
now >= judgingEndsAt
- Cuando
🧪 Ejemplo de Prueba
Escenario: Hackathon con fecha de inicio a las 9:30 AM
- 9:24 AM: Creas un hackathon en DRAFT con
registrationOpensAta las 9:30 AM - 9:30 AM: Ejecutas
pnpm cron:test - Resultado: El hackathon cambia automáticamente a REGISTRATION
🚀 En Producción (Vercel)
En producción, el cron se ejecuta automáticamente cada minuto según la configuración en vercel.json:
{
"crons": [
{
"path": "/api/cron/update-hackathon-states",
"schedule": "* * * * *"
}
]
}
No necesitas hacer nada manualmente - Vercel ejecuta el cron automáticamente.
❓ Preguntas Frecuentes
¿Por qué no se ejecuta automáticamente en desarrollo?
Los cron jobs de Vercel solo funcionan en producción. En desarrollo local, Next.js no tiene un scheduler integrado.
¿Puedo automatizar el cron en desarrollo?
Sí, puedes usar herramientas como:
node-cronpara ejecutar el script cada minuto- Un script de bash que llame al endpoint cada minuto
- Un servicio externo que haga pings al endpoint
Pero para desarrollo, ejecutarlo manualmente es suficiente.
¿Qué pasa si olvido ejecutar el cron?
En desarrollo, los hackathons no cambiarán de estado automáticamente. Debes ejecutar el cron manualmente o usar el botón "Publicar" en la UI.
En producción, esto no es un problema porque Vercel ejecuta el cron automáticamente.
Última actualización: 31 de diciembre, 2025