mirror of
https://github.com/dcarrillo/atalaya.git
synced 2026-09-26 03:45:12 +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 |
|---|---|---|
Bumps the npm-minor-patch group with 5 updates: | Package | From | To | | --- | --- | --- | | [@cloudflare/workers-types](https://github.com/cloudflare/workerd) | `5.20260911.1` | `5.20260915.1` | | [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) | `25.9.6` | `25.9.7` | | [eslint-plugin-oxlint](https://github.com/oxc-project/eslint-plugin-oxlint) | `1.82.0` | `1.83.0` | | [oxlint](https://github.com/oxc-project/oxc/tree/HEAD/npm/oxlint) | `1.82.0` | `1.83.0` | | [wrangler](https://github.com/cloudflare/workers-sdk/tree/HEAD/packages/wrangler) | `4.131.0` | `4.132.0` | Updates `@cloudflare/workers-types` from 5.20260911.1 to 5.20260915.1 - [Release notes](https://github.com/cloudflare/workerd/releases) - [Changelog](https://github.com/cloudflare/workerd/blob/main/RELEASE.md) - [Commits](https://github.com/cloudflare/workerd/commits) Updates `@types/node` from 25.9.6 to 25.9.7 - [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases) - [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node) Updates `eslint-plugin-oxlint` from 1.82.0 to 1.83.0 - [Release notes](https://github.com/oxc-project/eslint-plugin-oxlint/releases) - [Commits](https://github.com/oxc-project/eslint-plugin-oxlint/compare/v1.82.0...v1.83.0) Updates `oxlint` from 1.82.0 to 1.83.0 - [Release notes](https://github.com/oxc-project/oxc/releases) - [Changelog](https://github.com/oxc-project/oxc/blob/main/npm/oxlint/CHANGELOG.md) - [Commits](https://github.com/oxc-project/oxc/commits/oxlint_v1.83.0/npm/oxlint) Updates `wrangler` from 4.131.0 to 4.132.0 - [Release notes](https://github.com/cloudflare/workers-sdk/releases) - [Commits](https://github.com/cloudflare/workers-sdk/commits/wrangler@4.132.0/packages/wrangler) --- updated-dependencies: - dependency-name: "@cloudflare/workers-types" dependency-version: 5.20260915.1 dependency-type: direct:development update-type: version-update:semver-minor dependency-group: npm-minor-patch - dependency-name: "@types/node" dependency-version: 25.9.7 dependency-type: direct:development update-type: version-update:semver-patch dependency-group: npm-minor-patch - dependency-name: eslint-plugin-oxlint dependency-version: 1.83.0 dependency-type: direct:development update-type: version-update:semver-minor dependency-group: npm-minor-patch - dependency-name: oxlint dependency-version: 1.83.0 dependency-type: direct:development update-type: version-update:semver-minor dependency-group: npm-minor-patch - dependency-name: wrangler dependency-version: 4.132.0 dependency-type: direct:development update-type: version-update:semver-minor dependency-group: npm-minor-patch ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> |
||
| .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.