This repository showcases a comprehensive implementation of Domain-Driven Design (DDD) principles within a modular monolith architecture. It includes multiple services such as User, Product, Order, and Notifications, with JWT-based authentication and authorization.
- ✅ Modular Monolith Architecture
- ✅ Domain-Driven Design Principles
- ✅ Event Sourcing
- ✅ CQRS Pattern
- ✅ JWT Authentication and Authorization
- ✅ User, Product, Order, and Notifications Services
- ✅ Unit Testing, Integration Testing, and Architecture Testing
- ✅ CI/CD Pipelines
- ✅ C#
- ✅ .NET Core
- ✅ ASP.NET Core
- ✅ PostgreSQL
- ✅ Docker
- ✅ Azure Virtual Machine
- ✅ Domain-Driven Design
- ✅ Event Sourcing
- ✅ Clean Architecture
- ✅ Mediator Pattern
- ✅ FluentValidation
- ✅ CQRS
- ✅ RESTful API
- ✅ EF Core
- ✅ Serilog
- ✅ MassTransit
- ✅ RabbitMQ
- ✅ Redis
- ✅ .NET 6 SDK
- ✅ Docker
- ✅ PostgreSQL
- ✅ Redis
- ✅ RabbitMQ
-
Clone the repository:
git clone https://github.com/Ebrahem-Outlook/DDD.git cd DDD
-
Build and run Docker containers:
docker-compose up --build
- Ensure all dependencies (PostgreSQL, Redis, RabbitMQ) are running.
- Start the application using Docker or your preferred method.
- Access the provided API endpoints to interact with the various services.
- Detailed API documentation can be found here.
Contributions are welcome! Please read the contributing guidelines first. You can:
- Fork the repository
- Create a feature branch (
git checkout -b feature/fooBar
) - Commit your changes (
git commit -am 'Add some fooBar'
) - Push to the branch (
git push origin feature/fooBar
) - Create a new Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
Feel free to reach out for any questions or feedback:
- Ebrahem Mohamed
- GitHub Profile
- LinkedIn Profile