Esse projeto é uma Application Programming Interface (API) em desenvolvimento da rede social Kaloom para acesso e persistência de dados de alunos, usuários e intituições Etecs e Fatecs em MySQL, desenvolvida em C# com .NET, ASP.NET Core, Entity Framework Core e FluentValidation. O projeto combina elementos da arquitetura MVC do ASP.NET com a Clean Architecture para manter uma estrutura limpa, organizada e escalável, contendo Controllers, Models, DTOs, Repositories, validações, comunicação entre camadas, tratamento de exceções costumizadas, respostas padronizadas e testes de unidade.
Indice: Arquiteturas | Tecnologias | Execução | Endpoints | Licença
Camadas da Clean Architecture:
- API: contém Controllers que expõem endpoints e Filters que filtram erros;
- Application: contém casos de uso, SharedValidator para validações compartilhadas do FluentValidation, Factories para fabricar DTOs, Facades para agregar use cases e profiles de mapeamento do AutoMapper;
- Communication: gerencia os DTOs (Data Transfer Objects) e comunicação;
- Domain: contém Models, Enums e abstrações de repositórios;
- Infrastructure: contém implementação de Repositórios para a camada de acesso a dados, Context do banco de dados, Migrations, configurações e seeds;
- Exceptions: centraliza o controle e padronização de erros.
- Tests: testes unitários e mocks para testar endpoints.
Essa arquitetura permite separar responsabilidades de forma clara, facilitando manutenção, testes e evolução do código.
| Tipo | Tecnologia | Descrição |
|---|---|---|
| 💻 Linguagem | C# | Alto nível, moderna, orientada a objetos, multiparadigma e tipagem forte/inferida/dinâmica. |
| ⚙️ Frameworks | .NET / ASP.NET Core | .NET é a plataforma de desenvolvimento e o ASP.NET é um framework para criação de APIs web. |
| 🗃️ ORM | Entity Framework Core | O EF é um Object-Relational Mapping, técnica para traduzir e executar querys SQL com POO. |
| 🐬 Banco de Dados | MySQL | Sistema de Gerenciamento de Banco de Dados Relacional para armazenar dados em tabelas. |
| 🔌 Driver EF | Pomelo | Driver de conexão com banco de dados provedor para o EF Core, feito sobre o MySqlConnector. |
| ✅ Validação | FluentValidation | Biblioteca para validações de dados recebidos na API. |
| 🔁 Mapper | AutoMapper | Mapeador objeto-objeto baseado em convenções para mapear DTOs. |
| 🧪 Testes unitários | xUnit.net | Ferramenta de teste de unidade gratuita e de código aberto para .NET. |
| 🎭 Mock | Moq | Biblioteca de mocking .NET, usada para criar objetos simulados de dependências, permitindo testar unidades de código isoladamente. |
| 🧰 IDE usada e recomendada | Visual Studio 2026 | Ambiente de Desenvolvimento Integrado mais abrangente para desenvolvimento .NET. |
| 📦 Package Manager | NuGet | Gerenciador de pacotes .NET para fazer instalações, atualizações e configurações de bibliotecas. |
- Sistema operacional Windows
- .NET SDK instalado (versão 8.0 ou superior)
- Visual Studio com o componente ASP.NET e Desenvolvimento Web instalado
- Tenha o MySQL instalado
-
Clone o repositório
git clone https://github.com/kaloom-team/api-kaloom.git cd api-kaloom -
Abra o projeto no Visual Studio
- Clique duas vezes no arquivo .sln ou abra pelo Visual Studio via Arquivo > Abrir > Projeto/Solução
-
Configure a string de conexão
Coloque seu usuário e senha do MySQL no arquivo
appsettings.Development.json:{ "ConnectionStrings": { "DefaultConnection": "Server=localhost;Database=kaloom;User=root;Password=root;" } } -
Instale a ferramenta dotnet-ef
dotnet tool install --global dotnet-ef
-
Execute as migrations
dotnet ef database update --project Kaloom.Infrastructure
ou
cd Kaloom.Infrastructure dotnet ef database update -
Inicie a aplicação
- Pressione
F5
ou
- Clique em Iniciar (Start) para compilar e rodar a API
ou via CLI
cd Kaloom.API dotnet watch runO Swagger irá abrir no navegador se a aplicação estiver sendo executada em ambiente de desenvolvimento.
- Pressione
As entidades Aluno, Usuario, TipoAluno, Etec e Fatec tem os seguintes endpoints base:
| Método | Rota | Descrição |
|---|---|---|
| GET | /api/entidade | Retorna todos os registros |
| GET | /api/entidade/{id} | Retorna um registro pelo ID |
| POST | /api/entidade | Cria um novo registro |
| PUT | /api/entidade/{id} | Atualiza um registro |
| DELETE | /api/entidade/{id} | Deleta um registro |
Sinta-se à vontade para abrir Pull Requests com melhorias de código ou Issues com sugestões caso queira contribur ao projeto.
Este projeto está licenciado sob a licença MIT, veja o arquivo LICENSE para detalhes.
Etec Juscelino Kubitschek de Oliveira - Diadema/SP - 2025