https://github.com/tonyycruz/store_manager
Desenvolvimento de uma API de vendas utilizando a arquitetura MSC
https://github.com/tonyycruz/store_manager
commit-conventions express mysql mysql2 nodejs
Last synced: 2 months ago
JSON representation
Desenvolvimento de uma API de vendas utilizando a arquitetura MSC
- Host: GitHub
- URL: https://github.com/tonyycruz/store_manager
- Owner: TonyyCruz
- Created: 2022-08-25T01:47:58.000Z (over 2 years ago)
- Default Branch: main
- Last Pushed: 2022-10-16T20:20:28.000Z (over 2 years ago)
- Last Synced: 2025-01-27T12:14:12.663Z (4 months ago)
- Topics: commit-conventions, express, mysql, mysql2, nodejs
- Language: JavaScript
- Homepage:
- Size: 421 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
Projeto Store Manager
Desenvolvimento de uma API de vendas utilizando a arquitetura MSC (model-service-controller)
---
Diagrama DER (Diagrama de Entidade-Relacionamento)
---
📃 Sobre o Projeto
A API desenvolvida é um sistema de gerenciamento de vendas no formato dropshipping em que será possível criar, visualizar, deletar e atualizar produtos e vendas. A API é RESTful e a gestão de dados é feita com o MySQL.
---
Rotas utilizáveis
Ver rotas
- POST `/products` para cadastrar produtos. Utilize um body nesse formato:```jsx
{
"name": "ProductName"
}
```
---
- POST `/sales` para cadastrar vendas. Utilize um body nesse formato:```jsx
[
{
"productId": 1,
"quantity":3
},
]
```
---- GET `/products` ou `/sales` para receber todos os produtos ou vendas.
---
- GET `/products/:id` ou `/sales/:id` para receber produtos ou vendas de acordo com o id.
---
- GET `/products/search?q=` para buscar produto por palavra chave.
---
- DELETE `/products/:id` ou `/sales/:id` para deletar produtos ou vendas de acordo com o id.
---
- PUT `/products/:id` para atualizar o nome do produto. Utilize um body nesse formato:
```jsx
{
"name": "ProductName"
}
```
---- PUT `/sales/:id` para atualizar a venda. Utilize um body nesse formato:
```jsx
[
{
"productId": 1,
"quantity":2
},
]
```
---
### 🛠 Tecnologias e Bibliotecas utilizadas no desenvolvimento do projeto
- **[Node.js](https://nodejs.org/en/)**
- **[MySQL](https://www.mysql.com/products/workbench/)**
- **[Mysql2](https://www.npmjs.com/package/mysql2)**
- **[Express](http://expressjs.com/pt-br/)**
- **[Nodemon](https://www.npmjs.com/package/nodemon)**
---
### 🚀 Como executar o projeto
_Pré-requisitos_
Antes de começar, você vai precisar ter instalado em sua máquina as seguintes ferramentas:
[Git](https://git-scm.com),
[Node.js](https://nodejs.org/en/).É recomendado utilizar algum cliente HTTP, como [Postman](https://www.postman.com/) ou o [Insomnia](https://insomnia.rest/download).
Além disto é bom ter um editor para trabalhar com o código como [VSCode](https://code.visualstudio.com/)
---
_Clone o repositorio_
```jsx
git clone [email protected]:TonyyCruz/store_manager.git
```---
:whale: Rodando no Docker
## Com Docker
_Rode o serviço `node` com o comando_```jsx
docker-compose up -d
```- Esse serviço irá inicializar dois containers chamados `store_manager e store_manager_db`, respectivamente.
- A partir daqui você pode rodar o container via CLI ou abri-lo no VS Code._Via CLI use o comando_
```jsx
docker exec -it store_manager bash
```
- Ele te dará acesso ao terminal interativo do container store_manager(node) criado pelo compose, que está rodando em segundo plano._Instale as dependências `dentro do container` com_
```jsx
npm install
```⚠️Atenção: Caso opte por utilizar o Docker, TODOS os scripts disponíveis no package.json devem ser executados DENTRO do container, ou seja, no terminal que aparece após a execução do comando docker exec.
---
:computer: Rodando Localmente
_Instale as dependências com o comando_
```jsx
npm install
```
- Para rodar o projeto desta forma, **obrigatoriamente** você deve ter o `node` instalado em seu computador.
- Recomenda-se a versão `^16`
⚠️Atenção: Não esqueça de renomear/configurar o arquivo .env.example---
### 💡 Scripts prontos
Scripts
- Criar o banco de dados e gerar as tabelas:
```sh
npm run migration
```- Limpar e popular o banco de dados:
```sh
npm run seed
```- Iniciar o servidor Node:
```sh
npm start
```- Iniciar o servidor Node com nodemon:
```sh
npm run dev
```- Executar os testes de unidade:
```sh
npm run test:mocha
```
---