Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

38 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

SIGAA Caiu?

Monitor em tempo real do SIGAA da UFPB. Verifica automaticamente se o sistema esta no ar, lento ou fora do ar a cada 3 minutos.

Site: sigaacaiu.com

Como funciona

Um Cloudflare Worker faz requisicoes periodicas ao SIGAA e salva o resultado num banco de dados. O frontend consome esses dados e exibe o status atual, historico e incidentes.

Cloudflare Worker (cron a cada 3 min)
  │
  ├── GET /sigaa/verTelaLogin.do
  │   └── 302 + JSESSIONID = backend vivo
  │
  ├── Determina status:
  │   ├── < 5s    → online
  │   ├── 5-15s   → degradado (lento)
  │   └── timeout/5xx → offline (confirma apos 2 falhas)
  │
  └── Salva no D1 (SQLite)

Frontend (Next.js no Vercel)
  └── Consome a API publica do Worker

API Publica

Base URL: https://sigaa-caiu-worker.sigaa-caiu.workers.dev

A API e aberta — qualquer pessoa pode consumir, sem autenticacao.

GET /api/status

Status atual do SIGAA.

{
  "status": "online",
  "confirmed": true,
  "lastCheck": {
    "timestamp": "2026-03-10T12:00:00Z",
    "status": "online",
    "httpCode": 302,
    "responseTimeMs": 724
  },
  "consecutiveFailures": 0,
  "currentIncident": null
}
Campo Descricao
status online, degraded ou offline
confirmed false se houve apenas 1 falha (possivel flap de rede)
consecutiveFailures Quantas falhas consecutivas ate agora
currentIncident Incidente em andamento, se houver

GET /api/history?period=24h|7d|30d

Historico de checks. Para 7d e 30d os dados sao agregados (downsampled).

{
  "period": "24h",
  "checks": [
    {
      "id": 1,
      "timestamp": "2026-03-10T12:00:00Z",
      "status": "online",
      "http_code": 302,
      "response_time_ms": 724,
      "error": null
    }
  ]
}

GET /api/stats

Uptime e tempo medio de resposta por periodo.

{
  "periods": {
    "24h": { "uptimePercent": 99.5, "avgResponseMs": 800, "incidentCount": 1 },
    "7d":  { "uptimePercent": 98.2, "avgResponseMs": 900, "incidentCount": 3 },
    "30d": { "uptimePercent": 97.8, "avgResponseMs": 850, "incidentCount": 5 }
  }
}

GET /api/incidents

Ultimos 10 incidentes (periodos de indisponibilidade).

{
  "incidents": [
    {
      "id": 1,
      "started_at": "2026-03-09T14:00:00Z",
      "ended_at": "2026-03-09T14:12:00Z",
      "duration_s": 720
    }
  ]
}

Estrutura

sigaa-caiu/
├── worker/    ← Cloudflare Worker (API + cron + D1)
├── web/       ← Next.js (frontend no Vercel)
└── README.md

Veja o README de cada modulo para instrucoes de desenvolvimento e deploy.

Contribuindo

PRs sao bem-vindos! Se encontrar um bug ou tiver uma sugestao, abra uma issue.

Universidades

Instancias do projeto rodando por ai:

Universidade Site
UFPB sigaacaiu.com
UFG ufg.sigaacaiu.com
UNB unb.sigaacaiu.com

Quer um monitor desses pra sua universidade? Me chame em tiagotrindade03@gmail.com ou abra uma issue — fico feliz em ajudar e adicionar sua UF na lista.

Licenca e creditos

Este projeto e open source sob a licenca MIT — voce pode usar, modificar e fazer fork livremente.

So peco uma coisa: de credito. Se voce fizer um fork ou adaptar este projeto para a sua universidade, deixe um link de volta para o repositorio original em algum lugar visivel (o rodape do site e perfeito):

Fork de github.com/trindadetiago/sigaa-caiu

Feito por Tiago Trindade.

Contributors

Languages