Incident management for teams that want clear, durable incident state with low operational overhead.
Slack / Dashboard actions
|
v
services/incidentd
(Cloudflare Worker + Durable Objects + Workflows)
|
+--> services/dashboard (operator UI)
+--> services/status-page (public HTML status pages)
+--> packages/db (shared Postgres schema)
Core incident runtime.
- Durable Object is source of truth for incident state/events.
- Outbox + alarms forward events to workflows.
- Workflows dispatch side effects (D1 index updates, Slack/status-page updates, etc.).
SolidJS operator dashboard.
- Incident and configuration UI.
- Server functions with auth middleware.
- TanStack Router + Query patterns documented in
services/dashboard/AGENTS.md. - Includes a browser-only demo mode at
demo.firedash.ai(local IndexedDB-backed behavior).
Next.js service that returns public status page HTML.
- Domain-based page resolution.
- Incident history pages and RSS/Atom feeds.
- Reads status-page data from shared DB schema.
Shared Drizzle schema package (@fire/db) used across services.
bun install
bun run dev
# Run services individually
bun run dev:dashboard
bun run dev:incidentd
bun run dev:status-pageEach service uses its own .env file. See service READMEs for required variables.
Dashboard demo mode runs at demo.firedash.ai and stores data locally in the browser.
When adding new dashboard features, include demo-mode support in the same change when practical. If a feature is not supported in demo mode yet, gate it clearly in UI with an explicit message.
MIT