Task Breakdown: Notification Channels
Feature ID: notification-channels
Last updated: 2026-05-28
Each task = one Jira child issue. Target ~10 min per task.
Phase 1 — Contracts + facade
- T1 Declare
NOTIFICATION_CHANNELumbrella + 5 channel-specific capability constants. - T2 Define
INotificationChannelPlugininterface + canonical DTOs. - T3
NotificationChannelFacadeServicescaffold (resolve user channels → fanout). - T4 Per-channel retry policy (3 attempts exp-backoff).
- T5 In-app channel built-in adapter (wraps existing notifications v1 service).
- T6 BullMQ
notification-channel-retryqueue + dead-letter handler.
Phase 2 — Data model
- T7
notification-channel.entity.ts+ repository. - T8
notification-channel-delivery-log.entity.ts+ repository. - T9 Migration
<unix>-AddNotificationChannelsTables.tswith idempotency index.
Phase 3 — REST API
- T10
NotificationChannelsController— list/create/update/delete. - T11
POST /api/notification-channels/:id/testtest-send endpoint. - T12
POST /api/notification-channels/events/:pluginIdwebhook ingestion. - T13 Signature verification + 401 on mismatch.
- T14
@nestjs/throttlerrate limit.
Phase 4 — Agent integration
- T15
notifyChanneltool descriptor. - T16 Activity-log actions for channel notifications.
Phase 5 — Provider plugins
- T17
packages/plugins/discord-channel/— webhook send + signature verify. - T18
packages/plugins/discord-channel/— Vitest tests. - T19
packages/plugins/slack-channel/— incoming webhook + Block Kit. - T20
packages/plugins/slack-channel/— Vitest tests. - T21
packages/plugins/telegram-channel/— bot API sendMessage. - T22
packages/plugins/telegram-channel/— Vitest tests. - T23
packages/plugins/whatsapp-channel/— Business API template send. - T24
packages/plugins/whatsapp-channel/— Vitest tests. - T25
packages/plugins/novu-channel/— trigger API integration. - T26
packages/plugins/novu-channel/— Vitest tests.
Phase 6 — UI
- T27
/settings/integrations/channelspage — list view. - T28 Add-channel wizard (provider picker → target config → test).
- T29 Per-channel "Test" button + delivery log preview.
Phase 7 — Testing
- T30 Facade unit tests (fan-out, failover, retry).
- T31 Playwright E2E: connect Discord webhook → test message → delivery log assertion.
Phase 8 — Docs
- T32 "Connect a notification channel" guide.
- T33 Per-provider setup notes (5 providers).
Status legend
[ ] not started · [~] in progress · [x] done · [!] blocked