Skip to content

Repositório com instruções para candidatos a vaga de desenvolvedor backend dotnet

Notifications You must be signed in to change notification settings

lucasbenhur/MotorcycleMaintenance

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

60 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

MotorcycleMaintenance

Introdução

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.

Domínio

Banco De Dados

O projeto utiliza MongoDB com a estrutura de collections abaixo:

image

Arquitetura

image

Componentes Principais

  1. Cliente: Representa o usuário final ou sistema externo que interage com a aplicação.
  2. Ocelot API Gateway: Age como ponto de entrada único para o cliente, roteando requisições para os microserviços apropriados.
  3. Microserviços:
    • Motorcycle API
    • Rent API
    • DeliveryMan API
  4. MongoDB: Utilizado para armazenar os dados das entidades, notificações e logs.
  5. RabbitMQ: Utilizado para comunicação de eventos.
  6. Docker: Os serviços são containerizados usando Docker.

Princípios e Padrões

  • 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

Rodando o projeto

  • Clone esse repositório.
  • Abra o terminal na pasta raiz do repositório e execute o comando docker-compose up --build -d para 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:

image

Documentação - Swagger

image

image

image

Logs

  • Os logs gerados pela aplicação podem ser consultados na collection Logs no banco de dados

image

Exceções

  • Exceções foram tratadas para serem exibidas de forma amigável ao usuário.

image

Notificações

  • As notificações geradas pelo Evento Moto Cadastrada podem ser consultadas na collection Notifications no banco de dados

image

Imagens CNH

  • As imagens de CNH dos entregadores são armazenadas no disco local do container deliveryman-api:

image

Requisitos

  • Docker
  • .NET 8
  • As seguintes portas tem que estar livres: 80, 27017, 15672, 5672

About

Repositório com instruções para candidatos a vaga de desenvolvedor backend dotnet

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages

  • C# 97.7%
  • Dockerfile 2.3%