This project contains a suite of microservices designed for various messaging functionalities, including SMS, Email, OTP generation, and Notifications, orchestrated through an API Gateway using Ocelot. Each service is built using Clean Architecture principles and Domain-Driven Design to ensure scalability, maintainability, and adherence to business-driven models. Technologies such as Hangfire for background tasks, RabbitMQ for message brokering, SMTP for email dispatch, Twilio for SMS services, and SignalR for real-time web functionality are integrated to enhance service capabilities.
To utilize the Email and SMS services, specific settings must be configured in the appsettings.json file of each respective service. These settings are currently commented out and include:
- Email Service: SMTP server details, authentication credentials.
- SMS Service: Twilio API credentials and configuration settings.
Uncomment and update these sections with your specific details to activate the services.
Ensure the .NET 8.0 SDK and Docker Desktop are installed on your machine. Then execute:
git clone https://github.com/KristiyanEnchev/MessagingMicroservices.git
cd MessagingMicroservices/
docker-compose up --build -d
Access real-time operational data through the following dashboards:
- RabbitMQ Dashboard: http://localhost:15672 (username: john123, password: 123456)
- Hangfire Email: http://localhost:5070/hangfire (username: Admin, password: password)
- Hangfire SMS: http://localhost:5073/hangfire (username: Admin, password: password)
- Hangfire Notification: http://localhost:5071/hangfire (username: Admin, password: password)
- Redis Commander UI: http://localhost:8081 (username: masterauth, password: password)
- Redis Server Password: password
- .NET Core 8.0
- ASP.NET Core 8.0
- ASP.NET Core WebAPI 8.0
- Entity Framework Core 8.0
- FluentValidation
- AutoMapper
- MediatR
- SignalR
- RabbitMQ
- Redis
- Hangfire
- Ocelot API Gateway
- Twilio
- SMTP
This project is licensed under the MIT License - see the LICENSE file for details
Give a β if you like this project!