API REST desenvolvida para aprimoramento prático no desenvolvimento backend utilizando ASP.NET Core, aplicando conceitos modernos de arquitetura, autenticação, testes automatizados e boas práticas utilizadas no mercado.
O projeto foi construído utilizando os princípios de Clean Architecture, com foco em separação de responsabilidades, organização em camadas, escalabilidade e manutenção facilitada.
- ASP.NET Core Web API
- C#
- Entity Framework Core
- PostgreSQL
- ASP.NET Identity
- JWT Authentication
- AutoMapper
- Docker
- xUnit
- Moq
- Swagger
O projeto foi estruturado utilizando Clean Architecture, dividido nas seguintes camadas:
src/ ├── Domain ├── Application ├── Infrastructure └── API
- Separação de responsabilidades
- Desacoplamento entre camadas
- Facilidade de manutenção
- Escalabilidade
- Melhor testabilidade
- Autenticação e autorização com JWT
- Cadastro e gerenciamento de livros
- Cadastro de categorias
- Solicitações de empréstimo
- Paginação de resultados
- Tratamento global de exceções
- Rate Limiting
- Testes unitários e de integração
- Documentação da API com Swagger
O projeto utiliza PostgreSQL juntamente com Entity Framework Core para persistência de dados.
Durante os testes automatizados, é utilizado banco em memória (InMemoryDatabase) para isolamento dos testes.
Pré-requisitos
- .NET 8 SDK
- PostgreSQL
- Docker (opcional)
O projeto utiliza User Secrets para armazenamento seguro da chave JWT em ambiente de desenvolvimento.
Inicialize o User Secrets
-
dotnet user-secrets init
-
Configure a chave JWT
-
dotnet user-secrets set "Jwt:Secret" "sua_chave_super_secreta"
-
Configure a string de conexão do banco de dados
-
dotnet user-secrets set "ConnectionStrings:DefaultConnection" "Host=localhost;Port=portaAcesso;Database=nomeBanco;Username=username;Password=senhaBanco;SSL Mode=Disable;Trust Server Certificate=true"
Na camada de infra, basta rodar o comando abaixo para adequação do banco ao sistema, realizando a verificação e criação de tabelas necessárias
- dotnet ef database update
dotnet run
Após executar a aplicação, acesse:
https://localhost:xxxx/swagger
O projeto possui:
- Testes unitários
- Validação de regras de negócio
- Mocks utilizando Moq
Para executar os testes:
dotnet test