A arquitetura do sistema foi inspirada na “arquitetura da cebola” (Onion Architecture), que visa a reduzir o acoplamento entre camadas mantendo o modelo e as regras de negócio no núcleo do sistema e movendo a infraestrutura para fora do domínio.
Princípios a serem seguidos:
Camada de domínio do sistema. Todo o modelo de dados e as validações são implementados aqui. Esta camada não deve depender de nenhuma outra.
Contém as abstrações dos serviços da aplicação que atuam sobre o domínio.
Contém as implementações dos serviços da aplicação. É responsável pelo fluxo da aplicação.
Implementações específicas do serviços externos que a aplicação utiliza, incluindo banco de dados, serviço de envio de e-mail e APIs de terceiros.
Contém as classes responsáveis pela configuração do acesso ao banco de dados, mapeamento das entidades no banco de dados, inicialização dos dados e migrações.
Também contém as classes de configuração e envio de e-mails.
Projeto web baseado no ASP.NET Core MVC.
Testes unitários, de integração e de interface.