// the find
nikoksr/notify
A dead simple Go library for sending notifications to various messaging services.
notify is a Go library that wraps 30+ messaging service clients behind a single `Send(ctx, subject, message)` interface. You add services as receivers, call Send once, and it fans out. Aimed at developers who need alerting or notifications without wiring up each service SDK separately.
1. The interface is genuinely minimal — `UseServices()` + `Send()` covers 90% of use cases, and the middleware-style design means you can stack services without any glue code. 2. Most services have proper mock-based unit tests with mockery, so coverage isn't just smoke tests. 3. Service isolation is clean — each provider lives in its own package with its own go files, so you only import what you need and don't pull in 30 SDKs for one Slack message. 4. Actively maintained: Renovate bot keeps dependencies current, and last push was this month.
1. The `Send()` signature only takes subject and message strings — no attachments, no priority, no per-service metadata. If one of your services supports rich formatting (Slack blocks, PagerDuty severity) you can't reach it through this interface without bypassing the library entirely. 2. Error handling on fan-out is basic: one service failing doesn't stop others, but the error reporting doesn't tell you which services succeeded vs. failed, just that something went wrong. 3. WhatsApp is listed but marked broken — the underlying library it depends on (`Rhymen/go-whatsapp`) has been abandoned, so that entry in the README is misleading. 4. No retry logic or backoff built in — if Slack is temporarily down, your notification is silently dropped unless you implement retries yourself.