Status page for EVE Online community tools — https://eve-tools-status.com
27 monitors across 6 categories (core services, killboards, market & industry,
maps & intel, wormholes, reference), checked every 15 minutes from 4 Vercel
regions (iad1, sfo1, fra1, syd1).
- Four
vercel.jsoncrons (*/15 * * * *), one per region, hit/api/check/{region}directly. Each route is pinned to its region viapreferredRegion, fetches every monitor URL in parallel and records status + latency. There is no orchestrator in the scheduled path on purpose: a fan-out function spends its whole life awaiting the region it called, which billed a fifth function for the duration of the slowest region on every run /api/cronstill fans out to all four regions, for triggering a full round by hand- Results land in Upstash Redis (
ets:*keys): latest snapshot, one daily aggregate hash per day (100-day TTL), status-transition events - UI: Status (45-day uptime bars), Events (incident log), Monitors (live per-region state) + a suggest-a-tool form
- Every page reads KV through a cached loader (
use cache, 60s revalidate), so the pages are prerendered and served from the CDN. Data that only changes once per check cycle does not need a function invocation and a 49-command pipeline per visitor
| Var | Source |
|---|---|
KV_REST_API_URL, KV_REST_API_TOKEN |
Upstash KV via Vercel Marketplace (auto-injected on connect) |
CRON_SECRET |
Random secret; Vercel cron sends it automatically, also guards /api/check/* and /api/debug |
npm install
vercel env pull .env.development.local
npm run devTrigger a check manually:
curl -H "Authorization: Bearer $CRON_SECRET" https://<deployment>/api/cronReview visitor tool suggestions:
curl -H "Authorization: Bearer $CRON_SECRET" https://<deployment>/api/debugMonitors are defined in lib/monitors.ts. Before adding one, probe it with curl — sites behind aggressive bot protection (e.g. Cloudflare) may 403 datacenter IPs and show as permanently down.
Made & powered by ZanReal. Not affiliated with CCP Games.