Skip to content

Avi-Rana-1718/Herald

Repository files navigation

Herald

A Spring Boot-based microservice that handles multi-channel notifications (Email, SMS) through a Kafka-driven event streaming architecture.

Overview

Herald is designed to process notification events from a Kafka stream and deliver them through multiple channels including email (via Mailjet) and SMS (via Twilio). It provides a scalable, event-driven architecture for managing notifications across your system.

Features

  • Multi-Channel Notifications: Support for Email and SMS notifications
  • Kafka Event Streaming: Asynchronous event processing for high throughput
  • Email Provider Integration: Mailjet integration for reliable email delivery
  • SMS Provider Integration: Twilio integration for SMS messaging
  • OTP Management: One-time password generation and validation
  • Redis Caching: Built-in caching layer for improved performance
  • Database Migrations: Flyway-based schema management
  • Docker Support: Containerized deployment ready

Tech Stack

  • Framework: Spring Boot 3.x
  • Messaging: Apache Kafka
  • Cache: Redis
  • Email: Mailjet API
  • SMS: Twilio API
  • Database: PostgreSQL (via migrations)
  • Logging: Logstash integration
  • Build Tool: Maven

Project Structure

Herald/
├── src/
│   ├── main/
│   │   ├── java/com/notification/herald/
│   │   │   ├── controllers/        # REST endpoints
│   │   │   ├── services/           # Business logic
│   │   │   ├── consumers/          # Kafka consumers
│   │   │   ├── providers/          # Email & SMS providers
│   │   │   ├── dto/                # Data transfer objects
│   │   │   ├── entities/           # JPA entities
│   │   │   ├── configurations/     # App configurations
│   │   │   └── utils/              # Utility classes
│   │   └── resources/
│   │       ├── application.yml     # Application configuration
│   │       └── db/migration/       # Database migrations
│   └── test/
├── docker-compose.yaml             # Local development setup
├── Dockerfile                       # Container image definition
├── pom.xml                         # Maven configuration
└── logstash/                       # Log aggregation config

Getting Started

Prerequisites

  • Java 17+
  • Maven 3.8+
  • Docker & Docker Compose
  • Kafka
  • Redis
  • PostgreSQL

Support

For issues, questions, or contributions, please refer to the project repository or contact the development team.

About

Herald is a Spring Boot-based microservice that handles multi-channel notifications (Email, SMS) through a Kafka-driven event streaming architecture.

Resources

Stars

Watchers

Forks

Contributors

Languages