# Notification System A scalable backend system for managing and delivering various types of notifications using modern technologies. ## Overview This project demonstrates a notification processing pipeline built with Java Spring Boot, Apache Kafka, and MongoDB. It processes notification requests from multiple sources and delivers them through different channels (email, SMS, push notifications). ## Tech Stack - **Java 17+**: Core programming language - **Spring Boot 3.2.x**: Application framework - **Apache Kafka**: Message queue for notification processing - **MongoDB**: Database for storing notification records - **Maven**: Build and dependency management ## Features - REST API for notification submission - Asynchronous processing with Kafka - Multiple notification types (Email, SMS, Push) - Status tracking and delivery confirmation - Retry mechanisms for failed notifications - Metrics and monitoring endpoints ## Getting Started ### Prerequisites - Java JDK 17 or 21 - Maven (or use the Maven wrapper) - MongoDB (local installation or Docker) - Kafka (local installation or Docker) ### Running the Application 1. Clone the repository ``` git clone https://www.alexselimov.com/git/aselimov/NotificationServer.git cd NotificationServer ``` 2. Build and run the application ``` mvn spring-boot:run ``` 3. The service will be available at `http://localhost:8080`