- TypeScript 58.1%
- CSS 30.4%
- JavaScript 11.5%
| Filename | Latest commit message | Latest commit date |
|---|---|---|
|
|
||
| .forgejo/workflows | ||
| .vscode | ||
| migrations | ||
| public | ||
| scripts | ||
| src | ||
| test | ||
| .dev.vars.example | ||
| .editorconfig | ||
| .gitignore | ||
| .npmrc | ||
| .prettierrc | ||
| .prettierrc.js | ||
| _subdomains.json | ||
| AGENTS.md | ||
| eslint.config.js | ||
| eslint.ignores.js | ||
| favicon.ico | ||
| package.json | ||
| pnpm-lock.yaml | ||
| pnpm-workspace.yaml | ||
| README.md | ||
| schema.sql | ||
| seed.sql | ||
| status.svg | ||
| tsconfig.json | ||
| vitest.config.mts | ||
| worker-configuration.d.ts | ||
| wrangler.jsonc | ||
| wrangler.test.jsonc | ||
StatusFlare 🛰️
StatusFlare is a lightweight, edge-hosted system health monitoring dashboard built on Cloudflare Workers and D1 Database. It provides real-time monitoring, incident management, and dynamic status badges with zero infrastructure overhead.
This is useful for the following usecases:
- You want a FOSS solution for a system health deashboard, but you don't want to host it yourself.
- You want to be sure of your service's public availability, but you don't want to pay companies that you don't trust.
- You want a system health dashboard with discord webhook capabilities, a smooth default theme, and highly customizable interface that integrates with your current stack
- all of the above.
✨ Features
- Edge-native: Powered by Cloudflare Workers for global availability and high performance.
- Automated Health Checks: Scheduled monitoring via Cron triggers (default: every minute).
- Real-time Dashboard: A beautiful, responsive HTML dashboard with Light/Dark mode (Catppuccin theme).
- Incident Management: Create, manage, and resolve system-wide or service-specific incidents.
- Detailed Insights: View average latency, recent uptime percentages, and full response snippets.
- Dynamic SVG Badges: Embeddable status dots for your READMEs or websites (e.g.,
/badge/My%20Service.svg). - D1 Persistence: All data—services, health history, and incidents—is stored in Cloudflare's D1 SQL database.
- Admin Panel: Secure management interface with support for OIDC (Authelia) and legacy password login.
- Smart Parsing: Automatically prettifies JSON and GraphQL responses in the service detail view.
- Email Notifications: Integrated with Mailgun to send alerts when services go down or incidents are created/resolved.
🚀 Quick Start
Forking / Redistribution
This repo contains personal configuration (domains, emails, an admin password hash). Before publishing a fork, remove it:
pnpm clean:repo # replaces personal values with placeholders, deletes personal-only files
The only personal values remaining afterward are inside scripts/cleanup.mjs itself (its replacement table).
Fresh Deployment
New operators configure everything interactively (domain, notification email, admin auth — password or Authelia — plus optional Mailgun/Discord secrets, D1 creation, and local setup):
pnpm setup
An admin password or Authelia client ID + secret is required; all other inputs are optional.
Prerequisites
- Cloudflare Account
- Wrangler CLI installed and authenticated.
- Node.js and pnpm.
Setup
-
Clone the repository:
git clone https://github.com/yourusername/statusflare.git cd statusflare -
Install dependencies:
pnpm install -
Create your D1 Database:
pnpm exec wrangler d1 create status_dbCopy the
database_idfrom the output and update it in yourwrangler.jsonc. -
Initialize the database schema:
pnpm exec wrangler d1 execute status_db --file=schema.sql -
Set required secrets:
# Used for JWT session signing pnpm exec wrangler secret put SESSION_SECRET # Optional: For legacy password login (SHA-256 hash) pnpm exec wrangler secret put ADMIN_PASSWORD_HASH # Email Alerts (Mailgun) pnpm exec wrangler secret put MAILGUN_API_KEY -
Configure Mailgun Variables: Update your
wrangler.jsoncwith your Mailgun domain and recipient email:{ "vars": { "MAILGUN_DOMAIN": "mg.yourdomain.com", "MAILGUN_FROM": "StatusFlare <[email protected]>", "NOTIFICATION_EMAIL": "[email protected]", }, } -
Deploy to Cloudflare:
pnpm deploy
🛠️ Configuration
Edit wrangler.jsonc to configure your custom domain, OIDC provider (e.g., Authelia), and other environment variables:
{
"vars": {
"AUTHELIA_ISSUER": "https://auth.example.com",
"AUTHELIA_CLIENT_ID": "statusflare",
"OIDC_REDIRECT_URI": "https://status.example.com/admin/callback",
},
}
📈 Usage
- Dashboard:
https://your-status-page.com/ - Admin Panel:
https://your-status-page.com/admin - JSON API:
https://your-status-page.com/api/status - SVG Badges:
https://your-status-page.com/badge/Service%20Name.svg?w=128&h=128
🧪 Development & Testing
Run local development server:
pnpm dev
Run the test suite (Vitest + Cloudflare Workers Pool):
pnpm test
📄 License
MIT