Event-Driven Notification System

Build a notification system with event publishing, multi-channel delivery (email, push, in-app), user preferences, and delivery tracking.

Overview

Create a scalable notification service. Events flow in (user_signed_up, order_placed, payment_failed), notification templates are applied, and messages are delivered through the user's preferred channels. Track delivery status, handle retries, and respect user preferences.

Notification systems are one of the most common microservices in production architectures. Every application with users needs to send emails, push notifications, in-app messages, and SMS alerts. Building a dedicated notification service that handles all of these channels through a unified event-driven pipeline teaches you patterns that apply to any event-driven architecture.

The engineering complexity comes from the multi-channel delivery pipeline. Each channel has different delivery semantics: email is fire-and-forget with eventual delivery, push notifications require device token management and can silently fail, in-app notifications need real-time WebSocket delivery, and SMS has strict rate limits and delivery receipts. Handling retries, respecting user preferences, enforcing quiet hours, and tracking delivery status across all channels requires careful orchestration.

For system design interviews, notification systems are a staple question. Building one gives you concrete experience with event-driven architecture, pub/sub patterns, template rendering, multi-channel delivery, idempotency, and user preference management. You can discuss fan-out strategies, delivery guarantees, and scaling to millions of notifications per day with working code to back up your claims.

Interview questions

  • How does the event flow work?
  • How do I implement the template system?
  • How do I handle delivery retries?
  • How do user preferences work?
  • How do I track delivery status?
  • How do I implement notification batching?

Sign up free to read the full topic

More Projects topics

Start free on Cariara · Coding problems · System design studio