- Faça o download do arquivo de coleção de testes de requisição: desafio-tecnico-nevoa-collection-jhonatan
- Importe ele no Insomnia(Recomendado) ou Postman
- Inicie a API
- Faça a autenticação
- Use seu token no hearder para testar as rotas no seu aplicativo de escolha
- .NET 8 SDK
- Docker (para SQL Server)
- Clone, restaure as dependências e builde o projeto
git clone https://github.com/jhonatanwen/desafio-tecnico-nevoa.git
cd desafio-tecnico-nevoa
dotnet restore
dotnet build- Configure o banco de dados com Docker
Execute um dos scripts abaixo de acordo com seu sistema operacional para configurar automaticamente o banco de dados no docker
# Linux/Mac
setup-docker-sqlserver.sh
# Windows
setup-docker-sqlserver.bat- Execute as migrations
# Necessário que esteja dentro dessa pasta para que as migrations sejam aplicadas corretamente
cd src/DeviceManagement.API
# Cria o banco de dados e aplica as migrations
dotnet ef database update --project ../DeviceManagement.Infrastructure- Execute a aplicação
dotnet run
# caso queira usar https -> dotnet run --urls "http://localhost:5231;https://localhost:7254"- Acesse a API
- Endpoint base para diz que a API está funcionando: http://localhost:5231/api/v1 (ou https://localhost:7254/api/v1)
- Documentação: http://localhost:5231/docs (ou https://localhost:7254/docs)
Se preferir usar SQL Server local ao invés do Docker, edite a connection string em src/DeviceManagement.API/appsettings.json:
{
"ConnectionStrings": {
"DefaultConnection": "Server=localhost;Database=DeviceManagement;Integrated Security=true;TrustServerCertificate=true;"
}
}Para testar endpoints você precisa se autenticar e pegar o token JWT:
- Login
POST /api/v1/auth/login
Content-Type: application/json
{
"username": "admin",
"password": "123456"
}- Use o token retornado no header
Authorization: Bearer <token-jwt>GET /api/v1/clientes- Listar todosGET /api/v1/clientes/{id}- Buscar por IDPOST /api/v1/clientes- Criar novoPUT /api/v1/clientes/{id}- AtualizarDELETE /api/v1/clientes/{id}- Excluir
GET /api/v1/dispositivos/{id}- Buscar por IDGET /api/v1/dispositivos/cliente/{clienteId}- Buscar por clientePOST /api/v1/dispositivos- Criar novo
GET /api/v1/eventos/all- Listar todosGET /api/v1/eventos?startDate=2024-01-01&endDate=2024-12-31- Por períodoGET /api/v1/eventos/dispositivo/{id}- Por dispositivoPOST /api/v1/eventos- Registrar evento
GET /api/v1/dashboard- Estatísticas dos últimos 7 dias
src/
├── DeviceManagement.Domain/ # Entidades, Value Objects
├── DeviceManagement.Application/ # Casos de Uso, DTOs
├── DeviceManagement.Infrastructure/ # Repositórios, Migrations
└── DeviceManagement.API/ # Controllers, Validações
- .NET 8, Entity Framework Core 9
- SQL Server, JWT Authentication
- FluentValidation, Swagger/OpenAPI