Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
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
- Host: GitHub
- URL: https://github.com/joaoespacheco/trybe-project-25-store-manager
- Owner: joaoespacheco
- Created: 2022-11-14T22:48:12.000Z (about 2 years ago)
- Default Branch: main
- Last Pushed: 2022-12-23T00:33:51.000Z (about 2 years ago)
- Last Synced: 2024-11-06T13:56:35.542Z (2 months ago)
- Topics: api, chaijs, docker, expressjs, joi-validation, mochajs, mysql, nodejs, sinonjs
- Language: JavaScript
- Homepage:
- Size: 259 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
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 requisitosRequisitos
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 produtoRequisitos 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çãoDiagrama 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 cadastradosGET /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 produtoGET /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 cadastradosPOST /products
Cadastra um novo produto no banco de dados
> * Se bem-sucedido, retorna status 201 e um objeto contendo os dados do novo produtoPUT /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 produtoDELETE /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 cadastradasGET /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 vendaPOST /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 vendidosPUT /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 vendidosDELETE /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)