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.
- 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
- .NET SDK 10
- Docker e Docker Compose (opcional para execução em contêiner)
- SQL Server LocalDB ou outra instância SQL Server configurada
- Abra o terminal na pasta do repositório.
- Restaure os pacotes:
dotnet restore SGP.slnx- Execute a API:
dotnet run --project src\SGP.PublicApi\SGP.PublicApi.csproj- Acesse a documentação Swagger:
http://localhost:8000/swagger/
Para rodar a aplicação em contêineres Docker:
docker-compose up --buildEm seguida, abra:
http://localhost:8000/swagger/
Acesse os dados de performance em:
http://localhost:8000/profiler/results-index
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.
Execute os testes com:
dotnet test SGP.slnxsrc/SGP.PublicApi/- aplicação Web API e pontos de entradasrc/SGP.Application/- lógica de aplicação e casos de usosrc/SGP.Domain/- entidades de domínio, agregados e regras de negóciosrc/SGP.Infrastructure/- persistência, caches e integrações externassrc/SGP.Shared/- abstrações compartilhadas, validações e constantestests/SGP.Tests/- testes automatizados
Contribuições são bem-vindas! Se quiser colaborar:
- Crie uma issue descrevendo a mudança.
- Abra um pull request com pequenas alterações.
- Verifique se todos os testes passam antes de submeter.
Licenciado sob a MIT License.