A full-stack notification platform built with Spring Boot and React.
It supports sending notifications over multiple channels, tracks delivery state, and includes an admin console for operations like retries, templates, user preferences, and runtime health/metrics.
- Notification API to create and track notifications
- Multi-channel delivery support (
EMAIL,SMS,PUSH) - Kafka-based async processing with retry + DLQ flow
- Idempotency support on send requests (
Idempotency-Keyheader) - Per-user/channel preference management
- Admin APIs for notification listing and manual retry
- Template management APIs (upsert/list/get by channel)
- Redis-based caching and rate limiting
- Actuator health/info/metrics exposure
- React admin dashboard with tabs for:
- Notifications
- Templates
- Preferences
- Actuator
- Metrics
Backend:
- Java 21
- Spring Boot 4
- Spring Web MVC, Validation, JPA
- Kafka
- Redis
- MySQL
- Spring Actuator
Frontend:
- React + Vite
- Tailwind CSS
Base URL: http://localhost:8080
POST /notifications-> create notification (accepts optionalIdempotency-Key)GET /notifications/{notificationId}-> get current statusGET /admin/notifications?status=...-> list notifications for adminPOST /admin/notifications/{notificationId}/retry-> trigger manual retryPUT /admin/templates-> create/update templateGET /admin/templates-> list templatesGET /admin/templates/{templateId}?channel=...-> fetch specific templatePUT /preferences/{userId}-> create/update user preferencesGET /preferences/{userId}-> get user preferencesGET /actuator/healthGET /actuator/infoGET /actuator/metrics
Make sure these are running locally:
- MySQL on
3306 - Kafka on
9092 - Redis on
6379
Default values are already configured in src/main/resources/application.properties, but can be overridden using environment variables.
./mvnw spring-boot:runBackend starts on http://localhost:8080.
cd webapp
npm install
npm run devFrontend starts on http://localhost:5173.