Saltar al contenido principal

🔄 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:

  1. Abre tu navegador
  2. Ve a: http://localhost:3000/api/cron/update-hackathon-states
  3. Agrega el header Authorization: Bearer tu-CRON_SECRET usando una extensión como "ModHeader"

📋 Qué Hace el Cron Job

El cron job verifica y actualiza automáticamente:

  1. DRAFT → REGISTRATION

    • Cuando now >= registrationOpensAt
    • Y el hackathon tiene al menos 1 criterio
  2. REGISTRATION → RUNNING

    • Cuando now >= registrationClosesAt
  3. RUNNING → JUDGING

    • Cuando now >= judgingStartsAt
  4. JUDGING → FINISHED

    • Cuando now >= judgingEndsAt

🧪 Ejemplo de Prueba

Escenario: Hackathon con fecha de inicio a las 9:30 AM

  1. 9:24 AM: Creas un hackathon en DRAFT con registrationOpensAt a las 9:30 AM
  2. 9:30 AM: Ejecutas pnpm cron:test
  3. 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-cron para 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