Problem
Many services needed to notify users reliably across channels without coupling to delivery details or blocking on slow providers.
What I built
An event-driven notification service: producers emit events, the service resolves templates and channels (email/SMS), and background workers handle delivery with retries and monitoring.
Architecture / technical decisions
- Queue-backed delivery via RabbitMQ for decoupling and resilience.
- Template engine for per-channel, per-locale content.
- Workers with retry/backoff and dead-lettering.
- Monitoring and production debugging hooks for delivery visibility.
Result / impact
Reliable, decoupled notifications across the platform with clear delivery observability.
Lessons learned
Idempotency and dead-letter handling are what make a notification system trustworthy in production.
