This project was started just to practice a CQRS architecture. There is no business logic (just some CRUD operations). This project contains multiple technologies and architecture patterns.
- C#
- ASP.NET Core Api
- MediatR
- Ef core
- RabbitMQ.Client
- FluentValidation
- MimeKit
- The project was developed on macOS Ventura(V13.0)
- Should work on any other distros.
- You will need a database running (I used postgress) and a RabbitMQ instance.
- The project has 2 APIs, names WebApi and Notifications.
- WebApi is the API responsible for the queries and commands in our application, while Notification has backgroundJobs for sending emails when an action is perfomed.
- The application uses Mapperly for mapping the objects between layers.
- Users have multiple roles. This is handled in ShouldHaveRoleAttribute.cs
- All controllers has a base controller ApiController
- Errors are parsed with the help of an Result object
- In the instracture lalyer we have an email service
Refer to the board.