Deploy to Cloudflare
StatusBeam runs entirely on Cloudflare: a Cron Worker for checks and an Astro
site for the page, backed by D1 (time-series) and KV (current snapshot). The repo
ships a scripted path and a manual one — the outline below mirrors the repo’s
DEPLOYMENT.md, which is the authoritative reference.
-
Provision D1 + KV. Create the D1 database and KV namespace in your Cloudflare account.
-
Wire the resource IDs into each app’s
wrangler.jsonc(thedatabase_idand KVidplaceholders). -
Write your config — see Configuration.
-
Apply the D1 schema to create the time-series and incident tables.
-
Upload the config to KV under the
configkey. -
Set secrets for optional integrations (Slack/webhook URLs live inside the KV
config, cache-purge credentials as Worker secrets). -
Deploy.
Terminal window bun run deployThis deploys the check Worker and the web app to Cloudflare.
-
Verify the first cron run has populated D1/KV and the page renders.
Deploying these docs
Section titled “Deploying these docs”This documentation site is a separate app (apps/docs). It is a fully static
Starlight build deployed to a Cloudflare Pages project (statusbeam-docs) —
no D1/KV, no server adapter:
bun run --filter '@statusbeam/docs' deployThe site is reached at docs.statusbeam.dev (a custom domain on the Pages
project), while its bundled assets (_astro/* JS, CSS, fonts) load from the
project’s own statusbeam-docs.pages.dev origin. That split is configured via
Astro’s build.assetsPrefix
in astro.config.ts; the cross-origin assets are made CORS-readable by
public/_headers.