Sistema de gerenciamento de vendas construído através de uma API RESTful.
Nesse projeto foi desenvolvido as seguintes capacidades:
- Conectado uma aplicação ao banco de dados MySQL;
- Estruturado a aplicação em camadas MSC (Models, Services e Controllers);
- Delegado corretamente a responsabilidade de cada camada;
- Escrito código reutilizável;
- Aplicado padrões REST;
- Escrito testes unitários para a aplicação.
Nessa aplicação é possível:
- Listar todos os produtos;
- Cadastrar um novo produto;
- Cadastrar uma nova venda;
- Listar todas as vendas;
- Atualizar um produto;
- Deletar um produto;
- Deletar uma venda;
- Atualizar uma venda;
- Pesquisar produtos através do nome; Essas Funcionalidades são feitas através dos endpoints explicados abaixo;
🐳 Rodando no Docker vs Localmente
Antes de começar, seu docker-compose precisa estar na versão 1.29 ou superior. Veja aqui ou na documentação como instalá-lo. No primeiro artigo, você pode substituir onde está com
1.26.0por1.29.2.
- Clone o repositório:
git clone git@github.com:hgo19/store-manager.git- Inicie os containers através do comando:
docker-compose up -d- Entre no container com node e instale as dependências:
docker exec -it store_manager bashDentro do Container:
npm installnpm run migrationnpm run seed- A aplicação estará rodando na porta 3000, para acessála basta acessar o endereço: http://localhost:3000 e então utilizar os endpoints.
- Instale as dependências com:
npm install-
Na aplicação tem um arquivo chamado .env.example, renomei e o configure para que consiga rodar localmente.
-
Para rodar localmente você precisa ter instalado o
Node.jsna sua máquina, em que, a versão deve ser"node": ">=16.0.0"e a versão do"npm": ">=7.0.0".
Na aplicação foram usados os seguintes endpoints:
products:
- GET
/productsque retorna todos os produtos cadastrados; - GET
/products/search?q=queryque pesquisa o produto pelo nome; - GET
/products/:idque retorna o produto pelo id passado, caso seja um id válido; - POST
/productspara postar um produto novo, o body deve ter a propriedadename; - PUT
/products/:idpara atualizar um produto em caso de id válido, no body da requisição deve ter as propriedadesname; - DELETE
/products/:idpara deletar um produto em caso de id válido.
sales:
- POST
/salesadicionará uma nova venda, o body da requisição precisa ter as propriedades:productIdsendo o id válido de um produto existente na tabela, equantitysendo um número maior que 0; - GET
/salesretorna todas as vendas cadastradas; - GET
/sales/:idem caso de id válido, retorna a venda cadastrada de acordo com o id passado; - DELETE
/sales/:iddeleta uma venda em caso de id válido; - PUT
/sales/:idatualiza uma venda em caso de id válido, o body da requisição precisa ter as propriedades:productIdsendo o id válido de um produto existente na tabela, equantitysendo um número maior que 0;
Projeto desenvolvido por: Hugo Leonardo.