feat: add zulip integration

This commit is contained in:
Jet 2026-03-23 22:18:23 -07:00
parent 50468db20b
commit 3a0d464234
No known key found for this signature in database
14 changed files with 430 additions and 5 deletions

View file

@ -0,0 +1,28 @@
# Zulip Bridge
Receives webhooks from the cache service and posts door status updates into a Zulip stream.
Validates inbound webhooks with a Bearer token, then sends a stream message through the Zulip API using a bot email and API key.
## API
| Method | Path | Auth | Description |
|--------|------|------|-------------|
| `POST` | `/webhook` | Bearer | Status update from the cache service |
| `GET` | `/health` | - | Health check |
## Configuration
NixOS options under `services.noisebell-zulip`:
| Option | Default | Description |
|--------|---------|-------------|
| `domain` | required | Caddy virtual host domain |
| `zulipUrl` | required | Base URL of the Zulip server |
| `botEmail` | required | Zulip bot email address |
| `apiKeyFile` | required | Zulip bot API key file |
| `stream` | required | Zulip stream for updates |
| `topic` | `noisebell` | Zulip topic for updates |
| `imageBaseUrl` | `https://noisebell.extremist.software/image` | Base URL for status image links |
| `webhookSecretFile` | required | Shared secret with the cache service |
| `port` | `3003` | Listen port |