diff --git a/README.md b/README.md index a591b90..4ad4597 100644 --- a/README.md +++ b/README.md @@ -2,15 +2,16 @@ A generic bridge between service providers and notification targets. -Notify Bridge monitors services (like Immich photo servers) for changes and dispatches -notifications to configurable targets (Telegram, webhooks) using customizable templates. +Notify Bridge monitors services (Immich, Gitea, Planka, NUT, Google Photos, generic webhooks, +and internal scheduler) for changes and dispatches notifications to configurable targets +(Telegram, Discord, Slack, Matrix, ntfy, email, generic webhooks) using customizable templates. ## Architecture -- **Service Providers** — Connectors to external services (Immich, more coming) +- **Service Providers** — Connectors to external services (Immich, Gitea, Planka, NUT, Google Photos, generic Webhook, internal Scheduler) - **Trackers** — Monitor specific collections within a provider for changes - **Tracking Configs** — Define what events to watch for and scheduling rules -- **Notification Targets** — Where to send notifications (Telegram chats, webhook URLs) +- **Notification Targets** — Where to send notifications (Telegram, Discord, Slack, Matrix, ntfy, email, webhook URLs) - **Template Configs** — Jinja2 templates that format notifications per provider type ## Project Structure @@ -167,4 +168,48 @@ npm run dev ## Supported Providers -- **Immich** — Photo/video server with album change detection +- **Immich** — Photo/video server with album change detection (polling) +- **Gitea** — Git server with push / issue / PR / release events (webhook) +- **Planka** — Kanban board with card / list / board events (webhook) +- **NUT** — Network UPS Tools for battery / power events (polling) +- **Google Photos** — Album change detection (polling) +- **Generic Webhook** — Catch arbitrary JSON payloads and route them via templates (webhook) +- **Scheduler** — Internal provider for time-based scheduled messages + +## Supported Notification Targets + +- **Telegram** — Bot API with rich formatting, media groups, and inline commands +- **Discord** — Webhook-based delivery with embeds +- **Slack** — Incoming webhooks with Block Kit formatting +- **Matrix** — Homeserver delivery with HTML formatting +- **ntfy** — Self-hostable push notifications +- **Email** — SMTP with HTML / plain-text templates +- **Generic Webhook** — POST custom JSON payloads to any URL + +## Bot Commands + +Telegram bots can serve interactive commands per provider. All commands use +Jinja2 templates that you can customize from the **Command Templates** page. + +| Provider | Commands | +| -------- | -------- | +| Immich | `/status` `/albums` `/events` `/summary` `/latest` `/memory` `/random` `/search` `/find` `/person` `/place` `/favorites` `/people` `/help` | +| Gitea | `/status` `/repos` `/issues` `/prs` `/commits` `/help` | +| Planka | `/status` `/boards` `/cards` `/lists` `/help` | +| NUT | `/status` `/devices` `/battery` `/help` | +| Google Photos | `/status` `/albums` `/latest` `/search` `/random` `/help` | +| Generic Webhook | `/status` `/help` | + +Every provider also responds to `/start`, and rate-limit / empty-result +fallback messages are templated as well. + +## Smart Actions + +Beyond notifications, providers can run **actions** against the source service. +Currently implemented: + +- **Immich — Auto-Organize** — Automatically sort newly-detected assets into + albums based on configurable rules. Each rule combines criteria (people in + the photo, search query, favorites, date range) with a target album, and can + create the album if it doesn't exist. Supports dry-run mode for previewing + what would move before committing.