Uma API REST construída com ASP.NET Core para análise de dados de usuários a partir de um arquivo JSON contendo milhares de registros.
Este projeto faz parte de um desafio técnico que propõe:
- O carregamento de um arquivo JSON com 100.000 usuários (usando 1.000 no ambiente de testes)
- Processamento dos dados na memória
- Exposição de endpoints performáticos para análise
- Um endpoint de autoavaliação da própria API
- ASP.NET Core 8
- C#
- System.Text.Json
- Swagger / Swashbuckle
- LINQ
- Injeção de Dependência (DI)
- HttpClientFactory
UserAnalysisAPI/
├── Controllers/
├── Models/
├── Services/
├── Data/
└── Program.cs
| Método | Rota | Descrição |
|---|---|---|
| GET | /api/users | Retorna todos os usuários |
| GET | /api/users/superusers | Retorna usuários com score >= 900 e ativo = true |
| GET | /api/users/top-countries | Retorna os 5 países com mais superusuários |
| GET | /api/users/team-insights | Estatísticas por equipe: membros, líderes, projetos |
| GET | /api/users/active-users-per-day | Retorna logins por data, com filtro opcional ?min=3000 |
| GET | /api/evaluation | Executa testes internos em todos os endpoints |
O endpoint /api/evaluation testa os principais endpoints da aplicação:
- Mede tempo de resposta (ms)
- Valida status HTTP
- Verifica se o retorno é JSON válido
# Clone o repositório
git clone https://github.com/lucasbemlucas/UserAnalysisAPI.git
cd UserAnalysisAPI
# Execute a aplicação
dotnet run
# Acesse o Swagger:
http://localhost:5000/swagger🔥 Certifique-se de que o arquivo
usuarios_1000.jsonesteja em./Data/e com os campos corretos.
{
"id": "abc123",
"nome": "Lucas Bellucci",
"score": 950,
"ativo": true,
"pais": "Brasil",
"equipe": {
"nome": "Frontend Avengers",
"lider": true,
"projetos": [{ "nome": "API", "concluido": true }]
},
"logs": [{ "data": "2025-03-25T00:00:00", "acao": "login" }]
}Lucas Bellucci Almendra
🔗 GitHub: @lucasbemlucas
Este projeto foi criado para fins de estudo e demonstração de habilidades com .NET. Livre para forks e contribuições.