mirror of
https://github.com/dcarrillo/atalaya.git
synced 2026-07-28 10:19:51 +00:00
Uptime & status page that checks from multiple regions, built on Cloudflare Workers.
https://atalaya-docs.dcarrillo.es
- TypeScript 82.4%
- Astro 13.1%
- CSS 3.5%
- JavaScript 1%
| Filename | Latest commit message | Latest commit date |
|---|---|---|
Replace Inter-only typography with Space Grotesk (display) + Geist (body) + Geist Mono (metrics). Full OKLCH token palette with proper light/dark theme contrast. Remove gradient headline, floating radial blobs, emoji icons, transition-all, and 8 hardcoded hex values. All colors now derive from named tokens. Left-align header, Ft2 footer. |
||
| .github | ||
| migrations | ||
| src | ||
| status-page | ||
| .gitignore | ||
| .oxlintrc.json | ||
| .prettierrc.json | ||
| AGENTS.md | ||
| eslint.config.js | ||
| LICENSE | ||
| package.json | ||
| pnpm-lock.yaml | ||
| pnpm-workspace.yaml | ||
| README.md | ||
| tsconfig.json | ||
| vitest.config.ts | ||
| wrangler.example.toml | ||
Atalaya Uptime Monitor
Atalaya (Spanish for watchtower) is an uptime & status page monitoring service running on Cloudflare Workers and Durable Objects allowing checks from multiple regions.
It runs entirely on Cloudflare's free tier, so you get a self-hosted uptime monitor and status page without paying for servers. It's aimed at hobbyists who want control over their monitoring and don't mind living inside Cloudflare's ecosystem.
Live example.
⚠️ 99% of the code has been generated by an AI agent under human supervision, bearing in mind that I haven't used TypeScript before. You have been warned!
🏴☠️
|
_ _|_ _
|;|_|;|_|;|
\\. . /
\\: . /
||: |
||:. |
||: .|
||: , |
||: |
||: . |
_||_ |
__ ----~ ~`---,
__ ,--~' ~~----____
Features
- HTTP/HTTPs, TCP, and DNS monitoring.
- Regional monitoring from specific Cloudflare locations.
- Configurable retries with immediate retry on failure.
- Configurable failure thresholds before alerting.
- Custom alert templates for notifications (currently only webhooks are supported).
- Historical data stored in Cloudflare D1.
- Status page built with Astro 6 SSR, served by the same Worker via Static Assets.
- 90-day uptime history with daily bars.
- Response time charts (uPlot) with downtime bands.
- Basic auth or public access modes.
- Dark/light mode.
- Custom banner image support with optional clickable link.
Documentation
Read the docs for setup, configuration, alerts, and more.
Development
# Run worker locally
wrangler dev --test-scheduled
# Run status page locally
pnpm dev:pages
# Trigger cron manually
curl "http://localhost:8787/__scheduled?cron=*+*+*+*+*"
Testing
# First build the status page
pnpm build:pages
# Worker tests
pnpm test
# Status page unit tests
pnpm test:pages
# Type checking and linting
pnpm check # worker (typecheck + lint + format)
pnpm check:pages # pages (astro check + tsc + lint)
TODO
- Add support for TLS checks (certificate validity, expiration). Apparently, the Workers API does not support certificate data access, even at the socket level. An external service may be required.
- Refine the status page to look... well... less AI-generated.
- Per-monitor maintenance windows
- Initial support for incident management (manual status overrides, incident timeline).
- Branded status page (simple custom banner).
- Add support for notifications other than webhooks.