Implement notification system in shanty-notify #20

Open
opened 2026-03-17 16:39:24 -04:00 by connor · 0 comments
Owner

The shanty-notify crate sends notifications to the user when events occur (new releases detected, downloads completed, errors requiring attention, etc.).

  1. Notification backends — implement a trait-based notification system supporting:

    • Apprise — a notification aggregator that supports 80+ services (Discord, Slack, Telegram, email, Pushover, Gotify, etc.). By integrating with Apprise, Shanty gets all those services for free.
    • Webhook — simple HTTP POST to a user-configured URL with a JSON payload
    • Log only — just log the notification (useful as a default/fallback)
  2. Event types:

    • NewReleaseDetected — a monitored artist has a new release
    • DownloadCompleted — a download finished successfully
    • DownloadFailed — a download failed (after retries)
    • IndexingCompleted — a library scan finished
    • TaggingCompleted — auto-tagging finished
  3. Configuration — per-event-type notification settings (e.g., notify on new releases via Discord but not on download completion)

Acceptance Criteria

  • Notification trait exists with multiple backend implementations
  • Apprise integration works (via shelling out to apprise CLI or its API)
  • Webhook backend sends proper HTTP POST with JSON payload
  • Notifications are triggered by the appropriate events
  • Per-event-type configuration works
  • CLI: shanty-notify test sends a test notification

Dependencies

  • Issue #1 (workspace scaffolding)
  • Issue #19 (new release monitoring — primary trigger for notifications)
The `shanty-notify` crate sends notifications to the user when events occur (new releases detected, downloads completed, errors requiring attention, etc.). 1. **Notification backends** — implement a trait-based notification system supporting: - **Apprise** — a notification aggregator that supports 80+ services (Discord, Slack, Telegram, email, Pushover, Gotify, etc.). By integrating with Apprise, Shanty gets all those services for free. - **Webhook** — simple HTTP POST to a user-configured URL with a JSON payload - **Log only** — just log the notification (useful as a default/fallback) 2. **Event types:** - `NewReleaseDetected` — a monitored artist has a new release - `DownloadCompleted` — a download finished successfully - `DownloadFailed` — a download failed (after retries) - `IndexingCompleted` — a library scan finished - `TaggingCompleted` — auto-tagging finished 3. **Configuration** — per-event-type notification settings (e.g., notify on new releases via Discord but not on download completion) ### Acceptance Criteria - [ ] Notification trait exists with multiple backend implementations - [ ] Apprise integration works (via shelling out to `apprise` CLI or its API) - [ ] Webhook backend sends proper HTTP POST with JSON payload - [ ] Notifications are triggered by the appropriate events - [ ] Per-event-type configuration works - [ ] CLI: `shanty-notify test` sends a test notification ### Dependencies - Issue #1 (workspace scaffolding) - Issue #19 (new release monitoring — primary trigger for notifications)
connor added the LowPriority label 2026-03-19 12:29:22 -04:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: Shanty/Main#20