Add notification channels and a provider abstraction

Users get a notification_channels table (replacing users.ntfy_topic); pages fan
out to every enabled channel through a notify.Provider registry, with ntfy as
the first provider. Fallbacks are typed {type, address}. Schema edited in place:
existing databases must be recreated.

Claude-Session: https://claude.ai/code/session_016mBLURvJoMuUEr9cB2RpUN
This commit is contained in:
Niklas Ye
2026-10-12 21:00:40 +02:00
parent 6292ad6708
commit b114251f45
42 changed files with 2200 additions and 611 deletions
+3 -3
View File
@@ -16,9 +16,9 @@ answers, and tracked to resolution. One binary, one Postgres.
cross-talk. [Details](./docs/incidents.md)
- **On-call rota.** Each team keeps its own rota, and new incidents go to whoever is on call.
[Web UI](./docs/web-ui.md)
- **Pages that escalate.** Push notifications through [ntfy](https://ntfy.sh), with an
Acknowledge button right in the notification, and escalation ladders that move on to the next
level when nobody answers. [Notifications](./docs/notifications.md) ·
- **Pages that escalate.** Notifications through pluggable channels ([ntfy](https://ntfy.sh)
today), with an Acknowledge button right in the notification where the channel can show one,
and escalation ladders that move on to the next level when nobody answers. [Notifications](./docs/notifications.md) ·
[Escalation](./docs/escalation.md)
- **Notices when the alerts stop.** Dead man's switches turn the absence of a heartbeat such as
`Watchdog` into an incident. [Details](./docs/dead-mans-switch.md)