Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/joaoespacheco/trybe-project-25-store-manager

Projeto de uma API RESTful de gerenciamento de vendas no formato dropshipping utilizando arquitetura MSC
https://github.com/joaoespacheco/trybe-project-25-store-manager

api chaijs docker expressjs joi-validation mochajs mysql nodejs sinonjs

Last synced: 14 days ago
JSON representation

Projeto de uma API RESTful de gerenciamento de vendas no formato dropshipping utilizando arquitetura MSC

Awesome Lists containing this project

README

        

# Store Manager 🏬

## 📄 Sobre:

Projeto desenvolvido durante o módulo de back-end do curso de desenvolvimento web da [Trybe](https://www.betrybe.com/).

Neste projeto foi desenvolvida uma API RESTful de gerenciamento de vendas no formato dropshipping. Dentro da API é possível criar, visualizar, deletar e atualizar os produtos e as vendas.

Para está aplicação foi utilizado um banco de dados MySQL.

A API foi criada utilizando arquitetura MSC (model-service-controller).

Foram desenvolvidos testes unitários para a aplicação utilizando as ferramentas Mocha, Chai e Sinon.

Desempenho
Aprovado com 100% de desempenho em todos os requisitos

Requisitos

Requisitos obrigatórios:

1. Crie endpoints para listar produtos
2. Desenvolva testes que cubram no mínimo 5% das camadas da sua aplicação
3. Crie endpoint para cadastrar produtos
4. Crie validações para produtos
5. Desenvolva testes que cubram no mínimo 10% das camadas da sua aplicação
6. Crie endpoint para validar e cadastrar vendas
7. Desenvolva testes que cubram no mínimo 15% das camadas da sua aplicação
8. Crie endpoints para listar vendas
9. Desenvolva testes que cubram no mínimo 20% das camadas da sua aplicação
10. Crie endpoint para atualizar um produto
11. Desenvolva testes que cubram no mínimo 25% das camadas da sua aplicação
12. Crie endpoint para deletar um produto

Requisitos bônus:

13. Desenvolva testes que cubram no mínimo 30% das camadas da sua aplicação
14. Crie endpoint para deletar uma venda
15. Desenvolva testes que cubram no mínimo 35% das camadas da sua aplicação
16. Crie endpoint para atualizar uma venda
17. Desenvolva testes que cubram no mínimo 40% das camadas da sua aplicação
18. Crie endpoint products/search?q=searchTerm
19. Desenvolva testes que cubram no mínimo 50% das camadas da sua aplicação
20. Desenvolva testes que cubram no mínimo 60% das camadas da sua aplicação

Diagrama Entidade-Relacionamento

![image](https://user-images.githubusercontent.com/99846604/209247552-b1c6ddba-8506-44c3-ae2f-d40bbd496f99.png)

## ↪️ Rotas:
### Products:

GET /products

Lista todos os produtos cadastrados no banco de dados
> * Se bem-sucedido, retorna status 200 e um array com todos os produtos cadastrados

GET /products/:id

Lista apenas o produto correspondente ao id da rota
> * Se bem-sucedido, retorna status 200 e um objeto contendo as informações do produto

GET /products/search?q=searchTerm

Lista todos os produtos que possuem em seu nome o termo passado na rota
> * Se bem-sucedido, retorna status 200 e um array contendo os produtos que correspondem a busca
> * Se o termo de busca for vazio, retorna status 200 e um array contendo todos os produtos cadastrados

POST /products

Cadastra um novo produto no banco de dados
> * Se bem-sucedido, retorna status 201 e um objeto contendo os dados do novo produto

PUT /products/:id

Altera as informações de um produto cadastrado no banco de dados
> * Se bem-sucedido, retorna status 200 e um objeto contendo os dados atualizados do produto

DELETE /products/:id

Remove um produto cadastrado do banco de dados
> * Se bem-sucedido, retorna apenas o status 204

### Sales:

GET /sales

Lista todas as vendas cadastradas no banco de dados
> * Se bem-sucedido, retorna status 200 e um array com todas as vendas cadastradas

GET /sales/:id

Lista apenas a venda correspondente ao id da rota
> * Se bem-sucedido, retorna status 200 e um array contendo as informações da venda

POST /sales

Cadastra uma nova venda no banco de dados
> * Se bem-sucedido, retorna status 201 e um objeto contendo o id da venda e um array com as informações dos produtos vendidos

PUT /sales/:id

Altera as informações de uma venda cadastrada no banco de dados
> * Se bem-sucedido, retorna status 200 e um objeto contendo o id da venda e um array com as informações atualizadas dos produtos vendidos

DELETE /sales/:id

Remove uma venda cadastrada no banco de dados
> * Se bem-sucedido, retorna apenas um status 204

## 🤹🏽 Habilidades Desenvolvidas:
* Criar uma aplicação utilizando Express.js
* Criar uma API RESTful utilizando arquitetura MSC (Model-Service-Controller)
* Validar dados das requisições utilizando a biblioteca Joi
* Implementar testes unitários utilizando as ferramentas Mocha, Chai e Sinon

## 🧰 Ferramentas:
* JavaScript
* Node.js
* Express.js
* DotEnv
* Joi
* MySQL
* Mocha.js
* Chai.js
* Sinon.js
* Docker

## 📝 Desenvolvido por:
* [João Emanuel Soares Pacheco](https://github.com/joaoespacheco)