Skip to content

Ghitado/ControlaEstoqueAPI

Repository files navigation

Controla Estoque

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.


Estrutura do Projeto

Backend

  • 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.

Shared

  • Communication
    DTOs e contratos de comunicação entre camadas.

  • Exceptions
    Classes customizadas para tratamento de erros e exceções.


Endpoints da API

Autenticação

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" }

Produtos

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

Categorias

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

Clientes

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

Vendas

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

Configuração e execução

Desenvolvimento

  • 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 run ou pela IDE

Produção

  • Configure a connection string via variáveis de ambiente ou em appsettings.Production.json
  • Rode as migrations manualmente:
dotnet ef database update

Configuração de Segurança

Informaçõ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.


Próximos Passos

  • 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.

About

ControlaEstoqueAPI - Sistema para controle de estoque e vendas

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages