Sistema de Manutenção de Motos
Este projeto é uma aplicação baseada em microserviços desenvolvida em .NET Core 8.0, utilizando uma arquitetura limpa e boas práticas de design. A aplicação é composta por 3 microserviços, cada um responsável por uma funcionalidade específica, e um API Gateway Ocelot para roteamento de requisições.
Os microsserviços são:
- Motos - Cadastro de Motos, atualização da placa, consulta pela placa ou pelo Id ou todos e exclusão.
- Entregadores - Cadastro de Entregadores e upload da foto da CNH.
- Locação - Cadastro de locação de Motos para Entregadores e devolução, calculo do custo total do aluguel na devolução, consulta de locação pelo Id.
O projeto utiliza MongoDB com a estrutura de collections abaixo:
- Cliente: Representa o usuário final ou sistema externo que interage com a aplicação.
- Ocelot API Gateway: Age como ponto de entrada único para o cliente, roteando requisições para os microserviços apropriados.
- Microserviços:
- Motorcycle API
- Rent API
- DeliveryMan API
- MongoDB: Utilizado para armazenar os dados das entidades, notificações e logs.
- RabbitMQ: Utilizado para comunicação de eventos.
- Docker: Os serviços são containerizados usando Docker.
- Microservices: Cada serviço é responsável por uma funcionalidade específica e pode ser implantado de forma independente.
- Clean Architecture: Segue os princípios da arquitetura limpa, separando a lógica de negócios, a lógica de aplicação e a lógica de infraestrutura.
- CQRS: Command Query Responsibility Segregation para separar operações de leitura e escrita.
- Event-Driven Architecture: Utiliza RabbitMQ para comunicação de eventos.
- Dependency Injection: Para gerenciar dependências e melhorar a testabilidade.
- Repository Pattern: Para abstrair a lógica de acesso aos dados e facilitar a substituição de implementações
- Clone esse repositório.
- Abra o terminal na pasta raiz do repositório e execute o comando
docker-compose up --build -dpara compilar os projetos, publicá-los no docker e iniciar os containers.
Após o comando executado com sucesso o Docker deverá ter a seguinte estrutura de containers:
-
Com os containers em execução no docker é possível acessar o swagger de cada microsserviço em:
- Os logs gerados pela aplicação podem ser consultados na collection
Logsno banco de dados
- Exceções foram tratadas para serem exibidas de forma amigável ao usuário.
- As notificações geradas pelo
Evento Moto Cadastradapodem ser consultadas na collectionNotificationsno banco de dados
- As imagens de CNH dos entregadores são armazenadas no disco local do container deliveryman-api:
- Docker
- .NET 8
- As seguintes portas tem que estar livres: 80, 27017, 15672, 5672









