ProductClientHub é uma API RESTful construída com C# e ASP.NET Core para gerenciar Clientes e Produtos de forma simples, organizada e escalável.
O projeto utiliza Entity Framework Core com SQLite para persistência, aplicando boas práticas de arquitetura, validação e tratamento de erros.
Idealizado como um estudo prático para consolidar conhecimentos essenciais sobre:
- Estruturação de APIs REST
- Boas práticas com .NET
- CRUD completo (Create, Read, Update, Delete)
- Clean code e modularização
- Validação de dados e exceções
- CRUD de Clientes
- CRUD de Produtos
- Persistência com SQLite + EF Core
- Validação com FluentValidation
- Tratamento de erros com exceções customizadas
- Estrutura limpa, modular e de fácil manutenção
- Ambiente simples para desenvolvimento local
- .NET 8.0 / C#
- ASP.NET Core Web API
- Entity Framework Core 9.0.10
- SQLite
- FluentValidation
- Swagger / OpenAPI (se configurado)
- Visual Studio / VS Code / CLI .NET
ProductClientHub/
│
├─ ProductClientHub.API/ ← API principal
│ ├─ Controllers/ ← Endpoints REST (Clients, Products)
│ ├─ Entities/ ← Modelos de domínio
│ ├─ Infrastructure/ ← DbContext e configurações de banco
│ ├─ Services / UseCases / ... ← Lógica de negócio
│ ├─ Program.cs ← Configuração inicial da API
│ └─ ...
│
├─ ProductClientHub.Communication/ ← DTOs: requests/responses
├─ ProductClientHub.Exceptions/ ← Exceções customizadas e handlers
├─ ProductClientHub.sln ← Solução .NET
└─ README.md ← Este documento
- Clone o repositório:
git clone https://github.com/Iclasth/ProductClientHub.git
cd ProductClientHub/ProductClientHub.API- Restaure as dependências:
dotnet restore- Aplique as migrações e crie o banco SQLite:
dotnet ef database updateOu, caso queira recriar do zero:
dotnet ef database drop
dotnet ef database update- Execute a API:
dotnet run- Acesse o Swagger (se disponível) ou use Insomnia/Postman para testar.
| Método | Endpoint | Descrição |
|---|---|---|
| GET | /api/clients |
Lista todos os clientes |
| GET | /api/clients/{id} |
Busca cliente por ID |
| POST | /api/clients |
Cria novo cliente |
| PUT | /api/clients/{id} |
Atualiza cliente |
| DELETE | /api/clients/{id} |
Remove cliente |
{
"name": "João Silva",
"email": "joao@example.com"
}Estrutura equivalente aos endpoints de Clients.
- Separação clara entre camadas (Controllers, Entities, Infra, DTOs, Exceptions)
- Uso de EF Core + Migrations
- Validação robusta com FluentValidation
- Tratamento centralizado de exceções
- Padronização de respostas
- Código organizado e legível
- Implementar autenticação e autorização (JWT)
- Documentação avançada com exemplos completos no Swagger
- Criação de testes unitários e de integração
- Paginação e filtragem nas listagens
- Dockerização para deploy
- Logging estruturado (Serilog)
- Faça um fork do projeto
- Crie uma branch para sua feature:
git checkout -b feature/minha-feature- Commit com mensagens semânticas (ex.:
feat:,fix:,docs:) - Abra um Pull Request descrevendo suas alterações
Desenvolvido por Iclasth Projeto criado como parte do meu avanço nos estudos de .NET e APIs REST.
🔗 GitHub: https://github.com/Iclasth 🔗 LinkedIn: https://www.linkedin.com/in/iclasoliveira