Skip to content

Repository files navigation

Sistema Gerenciador de Pedidos (SGP)

Build SonarCloud CodeQL DevSkim License

Lines of Code Coverage Maintainability Rating Security Rating Vulnerabilities Bugs Code Smells

Visão geral

O SGP é um sistema gerenciador de pedidos desenvolvido com arquitetura limpa e princípios de DDD, SOLID e boas práticas de testes. O projeto demonstra uma API RESTful em ASP.NET Core 10 com integração de SQL Server, Redis e observabilidade.

Recursos principais

  • API RESTful construída com ASP.NET Core 10
  • Camadas separadas: SGP.PublicApi, SGP.Application, SGP.Domain, SGP.Infrastructure, SGP.Shared
  • Persistência com Entity Framework Core 10 e SQL Server
  • Cache distribuído com Redis
  • Injeção de dependência com Scrutor e padrões de design como Decorator
  • Validação de entrada com FluentValidation
  • Tratamento funcional de erros com FluentResults
  • Monitoramento com MiniProfiler for .NET
  • Health checks para verificação de integridade
  • Testes unitários e de integração com xUnit, FluentAssertions e NSubstitute
  • Integração contínua e análise de qualidade com GitHub Actions e SonarCloud

Pré-requisitos

  • .NET SDK 10
  • Docker e Docker Compose (opcional para execução em contêiner)
  • SQL Server LocalDB ou outra instância SQL Server configurada

Executando localmente

  1. Abra o terminal na pasta do repositório.
  2. Restaure os pacotes:
dotnet restore SGP.slnx
  1. Execute a API:
dotnet run --project src\SGP.PublicApi\SGP.PublicApi.csproj
  1. Acesse a documentação Swagger:
http://localhost:8000/swagger/

Executando com Docker

Para rodar a aplicação em contêineres Docker:

docker-compose up --build

Em seguida, abra:

http://localhost:8000/swagger/

MiniProfiler

Acesse os dados de performance em:

http://localhost:8000/profiler/results-index

Configuração de banco de dados

Por padrão, a aplicação utiliza o DefaultConnection definido em src\SGP.PublicApi\appsettings.Development.json.

Exemplo de configuração:

{
  "ConnectionStrings": {
    "DefaultConnection": "Server=(localdb)\\mssqllocaldb;Database=SgpContext;Trusted_Connection=True;MultipleActiveResultSets=true;",
    "Collation": "Latin1_General_CI_AI"
  }
}

Se você usar SQL Server em contêiner, atualize a string de conexão conforme necessário.

Testes

Execute os testes com:

dotnet test SGP.slnx

Estrutura do repositório

  • src/SGP.PublicApi/ - aplicação Web API e pontos de entrada
  • src/SGP.Application/ - lógica de aplicação e casos de uso
  • src/SGP.Domain/ - entidades de domínio, agregados e regras de negócio
  • src/SGP.Infrastructure/ - persistência, caches e integrações externas
  • src/SGP.Shared/ - abstrações compartilhadas, validações e constantes
  • tests/SGP.Tests/ - testes automatizados

Contribuição

Contribuições são bem-vindas! Se quiser colaborar:

  1. Crie uma issue descrevendo a mudança.
  2. Abra um pull request com pequenas alterações.
  3. Verifique se todos os testes passam antes de submeter.

Licença

Licenciado sob a MIT License.