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.0
por1.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 bash
Dentro do Container:
npm install
npm run migration
npm 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.js
na 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
/products
que retorna todos os produtos cadastrados; - GET
/products/search?q=query
que pesquisa o produto pelo nome; - GET
/products/:id
que retorna o produto pelo id passado, caso seja um id válido; - POST
/products
para postar um produto novo, o body deve ter a propriedadename
; - PUT
/products/:id
para atualizar um produto em caso de id válido, no body da requisição deve ter as propriedadesname
; - DELETE
/products/:id
para deletar um produto em caso de id válido.
sales:
- POST
/sales
adicionará uma nova venda, o body da requisição precisa ter as propriedades:productId
sendo o id válido de um produto existente na tabela, equantity
sendo um número maior que 0; - GET
/sales
retorna todas as vendas cadastradas; - GET
/sales/:id
em caso de id válido, retorna a venda cadastrada de acordo com o id passado; - DELETE
/sales/:id
deleta uma venda em caso de id válido; - PUT
/sales/:id
atualiza uma venda em caso de id válido, o body da requisição precisa ter as propriedades:productId
sendo o id válido de um produto existente na tabela, equantity
sendo um número maior que 0;
Projeto desenvolvido por: Hugo Leonardo.