You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
A Spring Boot-based microservice that handles multi-channel notifications (Email, SMS, In-App) 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), SMS (via Twilio), and in-app messages (persisted to a user inbox). It provides a scalable, event-driven architecture for managing notifications across your system, and also handles OTP generation/validation and reusable notification templates.
A REST request is persisted with a generated request ID, published to a Kafka topic, and processed asynchronously by a channel-specific consumer that calls the underlying provider. Delivery results are persisted back to PostgreSQL, and failed sends are retried (3 attempts, 1s delay).
# Start infrastructure (Kafka, Redis, ELK stack)
docker-compose up -d
# Build
./mvnw clean package
# Run
./mvnw spring-boot:run
The app runs on port 9500.
Infrastructure Ports
Service
Port
App
9500
Kafka
9092
Redis
6379
Elasticsearch
9200
Kibana
5601
APM Server
8200
Development
Formatting — Spotless with Google Java Format runs on verify and fails the build if code is unformatted. Run ./mvnw spotless:apply to fix.
Coverage — JaCoCo reports are generated during the test phase.
Support
For issues, questions, or contributions, refer to the project repository or contact the development team.
About
Herald is a Spring Boot-based microservice for multi-channel notifications (Email, SMS, In-App) with OTP and templates, through a Kafka-driven event streaming architecture.