Skip to content

DevAmarkr/notification-service

Repository files navigation

Nest Logo

A progressive Node.js framework for building efficient and scalable server-side applications.

NPM Version Package License NPM Downloads CircleCI Discord Backers on Open Collective Sponsors on Open Collective Donate us Support us Follow us on Twitter

Notification Service (Backend System Design Project)

A production-grade, event-driven Notification Service built using NestJS to demonstrate real-world backend engineering principles such as modular architecture, asynchronous processing, dependency injection, and extensibility.

This project is intentionally designed to go beyond CRUD, focusing on system design, scalability, and clean architecture — the kind of backend work expected in serious engineering teams.


🎯 Purpose of This Project

This service is built to:

  • Strengthen backend system design skills
  • Practice clean, modular architecture using NestJS
  • Demonstrate async processing with queues
  • Showcase how to design extensible notification systems
  • Serve as a portfolio-ready project for backend interviews

🧠 What This Service Does

  • Accepts notification requests via API
  • Processes notifications asynchronously
  • Supports multiple delivery channels (Email, SMS, Push)
  • Handles retries and failures gracefully
  • Designed for easy extension (new channels, providers, consumers)

🏗️ Architecture Overview

Client / Producer Service
⬇️
Notification API (NestJS)
⬇️
Message Queue
⬇️
Notification Workers
⬇️
External Providers (Email / SMS / Push)

Key architectural principles:

  • Separation of concerns
  • Loose coupling via queues
  • Dependency Injection
  • Strategy pattern for channels

🧩 Tech Stack

  • Backend Framework: NestJS (Node.js + TypeScript)
  • Architecture: Modular, event-driven
  • Queue (Planned): Redis + BullMQ
  • Database (Planned): PostgreSQL / MongoDB
  • Validation: class-validator
  • Config Management: @nestjs/config
  • Version Control: Git

Folder Responsibilities

  • notification/
    Core notification domain (API, services, channel strategies)

  • dto/
    Request/response contracts with validation rules

  • channels/
    Channel-specific implementations (Email, SMS, Push)

  • common/
    Shared utilities, base classes, guards, interceptors

  • config/
    Environment and application configuration

  • main.ts
    Application entry point


🚀 Roadmap

  • Project setup & architecture
  • Notification API contracts
  • Channel strategy implementation
  • Async queue integration
  • Retry & failure handling
  • Persistence & delivery tracking
  • Observability & logging

🔍 Why This Project Matters

Most demo projects stop at sending an email.
This service focuses on how backend systems actually work in production:

  • Decoupled services
  • Asynchronous workflows
  • Failure-tolerant design
  • Clean boundaries and extensibility

👨‍💻 Author

Built as a backend system design learning project to develop strong fundamentals and showcase real-world engineering thinking.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors