A comprehensive web interface to test all notification system endpoints end-to-end.
- Test all notification channels (Email, SMS, Push, In-App)
- Use templates with variables or direct content
- Set priority levels (LOW, NORMAL, HIGH, URGENT)
- Add event IDs for deduplication testing
- Send the same notification to multiple users
- Perfect for testing marketing campaigns or system announcements
- Support for template variables and direct content
- Get Notification by ID - Retrieve specific notification details
- User Inbox - View all notifications for a user
- Unread Count - Check unread notification count
- Mark as Read - Mark individual notifications as read
- Mark All as Read - Mark all user notifications as read
- History Search - Filter notifications by user and channel
- Create Templates - Add new notification templates
- Get by ID/Name - Retrieve specific templates
- Update Templates - Modify existing templates
- Delete Templates - Soft delete templates
- List Templates - View all templates with channel filtering
- Find by Email - Lookup users by email address
- Find by Phone - Lookup users by phone number
- Push-Eligible Users - Get all users with device tokens for push notifications
- Basic Health Check - Simple service availability check
- Detailed Health Check - Monitor database, Redis, and Kafka connectivity
| Category | Endpoint | Method | UI Feature |
|---|---|---|---|
| Notifications | /api/v1/notifications |
POST | Send Single |
| Notifications | /api/v1/notifications/bulk |
POST | Send Bulk |
| Notifications | /api/v1/notifications/{id} |
GET | Get by ID |
| Notifications | /api/v1/notifications/user/{userId} |
GET | User Inbox |
| Notifications | /api/v1/notifications/user/{userId}/unread-count |
GET | Unread Count |
| Notifications | /api/v1/notifications/{id}/read |
PATCH | Mark as Read |
| Notifications | /api/v1/notifications/user/{userId}/read-all |
PATCH | Mark All as Read |
| Templates | /api/v1/templates |
POST | Create Template |
| Templates | /api/v1/templates |
GET | List Templates |
| Templates | /api/v1/templates/{id} |
GET | Get by ID |
| Templates | /api/v1/templates/name/{name} |
GET | Get by Name |
| Templates | /api/v1/templates/{id} |
PUT | Update Template |
| Templates | /api/v1/templates/{id} |
DELETE | Delete Template |
| Users | /api/v1/users/email/{email} |
GET | Find by Email |
| Users | /api/v1/users/phone/{phone} |
GET | Find by Phone |
| Users | /api/v1/users/push-eligible |
GET | Push-Eligible Users |
| Health | /api/v1/health |
GET | Basic Health |
| Health | /api/v1/health/detailed |
GET | Detailed Health |
# Start all services (PostgreSQL, Redis, Kafka)
docker-compose up -d
# Start the application
mvn spring-boot:run# Start with H2 in-memory database (no external dependencies)
mvn spring-boot:run -Dspring-boot.run.profiles=dev- Visit: http://localhost:8080
- The UI loads automatically at the root path
- Go to "Send Single" tab
- Select channel (Email/SMS/Push/In-App)
- Choose template or enter direct content
- Click "Send Notification"
- Check response and status
- Go to "Send Bulk" tab
- Enter multiple user IDs (comma-separated)
- Configure notification content
- Click "Send Bulk Notifications"
- Review bulk response summary
- Go to "History" tab
- Enter user ID in "User Inbox" section
- Click "Get User Inbox" to see all notifications
- Click "Get Unread Count" for unread summary
- Use "Mark as Read" to update notification status
- Go to "Templates" tab
- Create new template in "Create New Template" section
- Retrieve template by ID or name
- Update template content
- Delete template when no longer needed
- Go to "Users" tab
- Test email and phone lookups
- View push-eligible users for push notification testing
-
Start the application:
mvn spring-boot:run
-
Open the tester:
- Visit:
http://localhost:8080 - The UI will load automatically
- Visit:
-
Test notifications:
- Use the pre-filled test user ID:
550e8400-e29b-41d4-a716-446655440001 - Try different channels and priorities
- Check the response and status
- Use the pre-filled test user ID:
550e8400-e29b-41d4-a716-446655440001(has email, phone, device token)550e8400-e29b-41d4-a716-446655440002550e8400-e29b-41d4-a716-446655440003
welcome-email- Welcome email with userName variableotp-sms- OTP SMS with otpCode variable
-
Basic Email Notification:
- Channel: Email
- Content: "Hello from the notification system!"
-
Template Email:
- Use Template: ✅
- Template Name:
welcome-email - Variables:
userName= "John Doe"
-
SMS with Deduplication:
- Channel: SMS
- Event ID:
test-event-123 - Send twice to test deduplication
-
Bulk Push Notifications:
- Add multiple user IDs
- Channel: Push
- Content: "System maintenance in 30 minutes"
| Endpoint | Method | Purpose |
|---|---|---|
/api/v1/notifications |
POST | Send single notification |
/api/v1/notifications/bulk |
POST | Send bulk notifications |
/api/v1/notifications/user/{userId} |
GET | Get user notifications |
/api/v1/templates |
GET | List templates |
/api/v1/health |
GET | Basic health check |
/api/v1/health/detailed |
GET | Detailed health check |
- Check if Kafka is running
- Check consumer logs for errors
- Notifications will be retried automatically
- Wait for the rate limit window to reset (1 hour)
- Or use a different user ID
- Check Redis for rate limit counters
- Ensure template exists and is active
- Check variable names match template placeholders
- Verify channel compatibility
- Database: Check PostgreSQL connection
- Redis: Check Redis server status
- Kafka: Check Kafka broker connectivity
- The UI uses vanilla JavaScript (no frameworks)
- All API calls include proper error handling
- Responses are displayed in formatted JSON
- The interface is responsive and works on mobile devices
This UI is for testing purposes only. In production:
- Remove or secure the static files
- Use proper authentication
- Implement rate limiting on the UI endpoints
- Add input validation and sanitization
This UI tester now provides complete coverage of all notification system endpoints:
- 19 total endpoints across 4 controllers
- All CRUD operations for templates and notifications
- User management and lookup functionality
- Health monitoring with dependency checks
- Real-time testing without external tools
Ready for comprehensive end-to-end testing! 🚀