databuddy-analytics / databuddy-analytics/Databuddy
docs(notifications): TODO.md claims Discord/Teams/Telegram/Google Chat providers exist — they don't
Nobody has claimed this yet.
- Dominant language
- TypeScript
- Stars
- 1.2k
- Forks
- 216
- Avg merge
- 14h 53m
- Merged PRs (30d)
- 154
Description
Summary
packages/notifications/TODO.md checks off Discord, Microsoft Teams, Telegram, and Google Chat as [x] done:
- [x] **Slack** - Webhook support
- [x] **Discord** - Webhook support
- [x] **Email** - Injected send function
- [x] **Webhook** - Generic HTTP webhook
- [x] **Microsoft Teams** - Adaptive Cards via webhook
- [x] **Telegram** - Bot API (sendMessage)
- [x] **Google Chat** - Cards via webhook
But packages/notifications/src/providers/ only contains slack.ts, email.ts, webhook.ts, and base.ts — no matching files for the other four. NotificationChannel (packages/notifications/src/types.ts:1) is typed "slack" | "email" | "webhook" only, and NotificationClient (packages/notifications/src/client.ts) only wires those three up. The alarms-system section of the same TODO.md (line 13) still lists discord/teams/telegram/google-chat as channels an alarm should be able to target, so this looks like real missing functionality rather than just stale docs.
Proposal
Add a Discord provider (webhook-based, mirroring the existing SlackProvider) as a first, self-contained slice:
- New
providers/discord.tsfollowing theSlackProvider/WebhookProviderpattern - Extend
NotificationChanneland wire it intoNotificationClient - Tests mirroring the existing Slack provider tests
- Fix the TODO.md checkboxes to reflect reality
Keeping this scoped to Discord only — happy to do Teams/Telegram/Google Chat as separate follow-up PRs if this shape is right, rather than one big PR.
Checking scope/interest before opening a PR, per the AI policy here — let me know if this is wanted or if there's context I'm missing (e.g. planned elsewhere / superseded by a different design).
Disclosure: I used Claude Code to grep the providers directory against TODO.md and the type definitions; verified manually before writing this up.
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start with packages/notifications/src/providers/slack.ts and webhook.ts, then inspect packages/notifications/src/types.ts, client.ts, and the existing Slack provider tests. Add the Discord provider and client/type wiring in the same pattern, update packages/notifications/TODO.md to match the implemented scope, and verify the Discord-focused tests pass.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- typescript
- Domain
- backend
- Issue type
- Feature
- Difficulty
- 3/5
- Estimated time
- 1-2 days
- Activity status
- Quiet
- Clarity
- Clearly specified
- Newbie friendliness
- 78/100