Módulo 5 — Automação e agendamento 🟢
Objectivo: fazer o sistema trabalhar sozinho — reagir a eventos e correr tarefas à hora certa. O momento aha: o software passa a fazer coisas sem ninguém clicar. Resultado: um webhook testado localmente + uma tarefa agendada que dispara um endpoint real.
1. Webhooks — sistemas a avisarem-se
Um webhook é um aviso automático: quando algo acontece num sistema (ex.: “pagamento concluído”), ele faz um pedido HTTP a um endereço teu, com os dados.
Diferença para uma API normal: na API tu perguntas; no webhook ele avisa-te.
2. ngrok — testar webhooks na tua máquina
O teu localhost não é acessível pela internet. O ngrok abre um túnel público temporário:
ngrok http 3001
# → https://abcd-1234.ngrok-free.app → reencaminha para localhost:3001
Usas esse URL como destino do webhook enquanto desenvolves.
3. Segurança: confirmar quem avisa
Nunca confies cegamente num webhook recebido:
- Verifica a assinatura (ex.: HMAC) ou
- Confirma na origem (“este pagamento existe mesmo?”) antes de processar.
4. cronjob.org — tarefas agendadas
Para correr algo periodicamente (ex.: “emitir faturas todos os dias às 7h”), o cronjob.org chama um endpoint teu na hora marcada.
Job: GET https://api.exemplo.com/cron/faturas-diarias
Agenda: todos os dias às 07:00
🔴 Fora do VSCode
Criar a conta e (opcionalmente) ver o histórico de execuções no painel do cronjob.org.
✅ Exercícios
- Túnel — corre
ngrok http 3000e abre o URL público no telemóvel. - Endpoint — cria uma rota que recebe um POST e regista o que chega (
console.log). - Agenda — define (no papel) um job cronjob.org que chama esse endpoint de hora a hora.
Resultado esperado: um pedido externo (via ngrok) a chegar ao teu código local.
⚠️ Erros comuns
- Confiar num webhook sem verificar a assinatura/origem — porta aberta a fraude.
- Deixar o
ngrokcomo URL de produção — é só para dev; em produção usa o domínio real. - Cron sem registo — não sabes se correu nem se falhou.
- Tarefa pesada no pedido em vez de agendada — o utilizador espera demais.
📋 Checklist do módulo
- Webhook recebido e validado (assinatura/origem)
- Túnel só para dev; produção usa o domínio real
- Job agendado a chamar um endpoint real
- Execuções registadas (logs)