Skip to content

Teste técnico: José Vitor Lemos Oliveira#72

Open
JoseVitorLemos wants to merge 16 commits into
theossistemas:masterfrom
JoseVitorLemos:teste-tecnico/jose.vitor
Open

Teste técnico: José Vitor Lemos Oliveira#72
JoseVitorLemos wants to merge 16 commits into
theossistemas:masterfrom
JoseVitorLemos:teste-tecnico/jose.vitor

Conversation

@JoseVitorLemos
Copy link
Copy Markdown

Library API

Descrição Geral

A Library API é uma aplicação estruturada seguindo boas práticas de SOLID, Clean Architecture e DDD, com foco em escalabilidade, manutenção e desempenho.

Funcionalidades principais:

  • Sistema de logs com Serilog para erros gerais e tratamento de exceções, armazenados na pasta Api/Logs.
  • Logs de integração com banco de dados via Audit Log, configurados para ignorar propriedades sensíveis das entidades.
  • Consultas paginadas para garantir performance.
  • Aplicação das boas práticas SOLID e Clean Architecture, com separação clara de camadas.
  • Uso de DDD (Domain-Driven Design) para centralizar regras de negócio na camada de domínio.
  • Validação fluida e performática utilizando FluentValidation.
  • Swagger configurado com versionamento para documentação da API.
  • Autenticação JWT com ClaimsIdentity.
  • Scripts de DDL e DML disponíveis em App/scripts para criação e carga inicial do banco de dados.

Estrutura do Projeto

Library.Api

Camada de apresentação:

  • Implementa os endpoints da aplicação.
  • Utiliza o padrão Mediator para reduzir acoplamento.
  • Valida Commands e Queries via FluentValidation.

Library.Application

Camada de aplicação:

  • Recebe requisições da camada de apresentação.
  • Implementa Commands e Queries, acionando regras de negócio.
  • Interage com a persistência via repositórios.

Library.CrossCutting

Camada de infraestrutura transversal:

  • Implementa autenticação e segurança da aplicação.

Library.Domain

Camada de domínio:

  • Contém as entidades centrais e regras de negócio do core.
  • Expõe interfaces de repositório via DIP (Dependency Inversion Principle).
  • Evita que regras de negócio vazem para camadas superiores.

Library.Infraestructure

Camada de infraestrutura:

  • Depende apenas da camada Domain.
  • Configura comunicação com o banco de dados, incluindo providers e mapeamentos customizados.
  • Implementa logs de integração com banco via Audit.NET.

Library.Shared

Camada de recursos compartilhados:

  • Contém mensagens globais, middlewares, DTOs de resposta, validadores e utilitários comuns.

Library.IoC

Camada de injeção de dependência:

  • Centraliza configuração de serviços e interfaces.
  • Reduz acoplamento via Dependency Injection.

Library.UnitTests

Camada de testes:

  • Contém testes unitários de funções e regras de negócio.
  • Testa apenas o comportamento lógico isolado, sem avaliar a execução completa da aplicação.

Scripts de Banco de Dados

Todos os scripts de DDL e DML foram adicionados na pasta:
Esses scripts permitem criar o esquema do banco de dados e popular tabelas iniciais para testes e desenvolvimento.


Tecnologias Utilizadas

  • .NET 8
  • Entity Framework Core
  • Audit.NET
  • Serilog
  • FluentValidation
  • JWT Authentication
  • MediatR
  • Swagger/OpenAPI

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant