Sistema básico para controle de estoque e vendas, com funcionalidades essenciais para gerenciar produtos, categorias, clientes, vendas e relatórios, usando Clean Architecture e ASP.NET Core.
-
Api
Contém a API REST, controllers, filtros, middleware e configurações específicas do web. -
Application
Casos de uso, serviços de aplicação e interfaces dos repositórios. -
Domain
Entidades, enums e regras de negócio puras, sem dependências externas. -
Infrastructure
Implementação dos repositórios, Entity Framework Core, Identity, configurações do banco e injeção de dependência.
-
Communication
DTOs e contratos de comunicação entre camadas. -
Exceptions
Classes customizadas para tratamento de erros e exceções.
| Método | Rota | Descrição | Corpo da requisição |
|---|---|---|---|
| POST | /api/auth/register | Registrar novo usuário | { "name", "email", "password" } |
| POST | /api/auth/login | Login e gerar token JWT | { "email", "password" } |
| POST | /api/auth/refresh-token | Atualizar token JWT | { "refreshToken" } |
| Método | Rota | Descrição | Corpo da requisição |
|---|---|---|---|
| GET | /api/products | Listar todos os produtos | — |
| GET | /api/products/{id} | Obter produto por ID | — |
| POST | /api/products | Criar novo produto | { "name", "purchasePrice", "salePrice", "categoryId", "quantityInStock" } |
| PUT | /api/products/{id} | Atualizar produto | Mesmo corpo do POST |
| DELETE | /api/products/{id} | Deletar produto | — |
| Método | Rota | Descrição | Corpo da requisição |
|---|---|---|---|
| GET | /api/categories | Listar categorias | — |
| POST | /api/categories | Criar categoria | { "name" } |
| PUT | /api/categories/{id} | Atualizar categoria | { "name" } |
| DELETE | /api/categories/{id} | Deletar categoria | — |
| Método | Rota | Descrição | Corpo da requisição |
|---|---|---|---|
| GET | /api/customers | Listar clientes | — |
| POST | /api/customers | Criar cliente | { "name", "email", "phone" } |
| PUT | /api/customers/{id} | Atualizar cliente | Mesmo corpo do POST |
| DELETE | /api/customers/{id} | Deletar cliente | — |
| Método | Rota | Descrição | Corpo da requisição |
|---|---|---|---|
| GET | /api/sales | Listar vendas | — |
| GET | /api/sales/{id} | Obter venda por ID | — |
| POST | /api/sales | Registrar nova venda | { "customerId", "items": [ { "productId", "quantity", "unitPrice" } ] } |
| PUT | /api/sales/{id} | Atualizar venda | Mesmo corpo do POST |
| DELETE | /api/sales/{id} | Cancelar venda | — |
- Configure a connection string no
appsettings.Development.json - Ao rodar a API, o banco e as migrations são criados/aplicados automaticamente
- Execute a aplicação com
dotnet runou pela IDE
- Configure a connection string via variáveis de ambiente ou em
appsettings.Production.json - Rode as migrations manualmente:
dotnet ef database updateInformações sensíveis como chave JWT e strings de conexão devem ser configuradas de forma segura. No ambiente de desenvolvimento, recomenda-se usar o User-Secrets do .NET para armazenar essas informações localmente, evitando que fiquem expostas no código ou no controle de versão.
Exemplo para configurar User-Secrets:
dotnet user-secrets init
dotnet user-secrets set "ConnectionStrings:DefaultConnection" "SuaConnectionStringAqui"
dotnet user-secrets set "JwtSettings:SecretKey" "SuaChaveJwtAqui"No ambiente de produção, use variáveis de ambiente para essas configurações, garantindo maior segurança e flexibilidade.
- Implementar testes unitários e de integração.
- Dockerizar o projeto para facilitar o ambiente local e o deploy.
- Criar pipelines CI/CD usando GitHub Actions ou Azure DevOps.
- Geração de relatórios e dashboards com gráficos completos.