How williamnyongesa/sms-notification-system works
This is an asynchronous SMS notification system: clients submit validated single or bulk requests, the REST API creates queued messages and publishes them to Kafka, and a consumer dispatches each message through a mock provider. The README also documents health checks, Kafka UI monitoring, and optional real-provider integration. The consumer logs delivery outcomes; the sampled code does not show delivery-state persistence or retry handling. The principal processing code was sampled; Kafka UI and deployment services are represented from README documentation.
Main entry points: SmsController.java SMS controller · SmsProducerService.java SMS producer · SmsKafkaConsumer.java Kafka listener · docker-compose.yml Kafka broker
Components 16
REST API
- SMS controller
sms-api/src/main/java/com/sms/controller/SmsController.java - Request validation
sms-api/src/main/java/com/sms/dto/SmsRequest.java - Error responses
sms-api/src/main/java/com/sms/controller/GlobalExceptionHandler.java - API response
sms-api/src/main/java/com/sms/dto/ApiResponse.java
Message production
- SMS producer
sms-api/src/main/java/com/sms/service/SmsProducerService.java - Queued message
sms-api/src/main/java/com/sms/dto/SmsMessage.java - Kafka producer config
sms-api/src/main/java/com/sms/config/KafkaConfig.java
Message delivery
- Kafka consumer config
sms-consumer/src/main/java/com/sms/config/KafkaConsumerConfig.java - Kafka listener
sms-consumer/src/main/java/com/sms/consumer/SmsKafkaConsumer.java - Consumer message
sms-consumer/src/main/java/com/sms/dto/SmsMessage.java - SMS dispatcher
sms-consumer/src/main/java/com/sms/service/SmsDispatcherService.java
Messaging platform
- Kafka broker
docker-compose.yml - Zookeeper
docker-compose.yml - Kafka UI
docker-compose.yml
Other components
- API client
- SMS provider
Connections 15
- API client → SMS controller: submits request
- SMS controller → Request validation: validates
- SMS controller → Error responses: routes validation errors
- SMS controller → SMS producer: queues messages
- SMS producer → Queued message: creates
- SMS producer → Kafka producer config: uses producer
- SMS producer → Kafka broker: publishes
- SMS controller → API response: returns accepted
- Kafka broker → Kafka listener: delivers topic records
- Kafka consumer config → Kafka listener: configures listener
- Kafka listener → Consumer message: receives payload
- Kafka listener → SMS dispatcher: dispatches
- SMS dispatcher → SMS provider: sends SMS
- Kafka UI → Kafka broker: browses messages
- Zookeeper → Kafka broker: coordinates