Esta é uma aplicação Full-Stack que gerência pedidos e entregas de bebidas, desenvolvida por meu grupo e eu, durante o curso de Desenvolvimento Web Full-Stack da Trybe.
Desenvolvido com a biblioteca React.js.
- React, ContextAPI;
- CSS3, Slick Carousel;
- React-Router-Dom, Axios;
apresentacao_app_delivery.mp4
Desenvolvido em Node.js, utilizando Express com Sequelize.
- Node.js, Express, Sequelize;
- Md5, JsonWebToken, Cors;
- Mysql2;
- Mocha, Chai, Chai-http, Sinon.
- Login;
- Registro de novos usuários;
- Relatório de usuários vendedores;
- Registro de novos pedidos;
- Relatório de uma venda/compra especifica.
- Relatório de vendas/compras realizadas;
- Alteração de status da compra/venda;
- Relatório de produtos disponiveis.
Sainda mais sobre os Endpoints!
-
Responsável pelo login de usuários cadastrados.
Entrada:
"body": { "email": "string", "password": "string", }
Saida:
{ "id": "number", "name": "string", "email": "string", "role": "string", "token": "token jwt" }
-
Responsável por registrar novos usuários, realizando a validação das informações. A senha é codificada usando md5, antes de salavr no banco de dados.
Entrada:
"body": { "name": "string", "email": "string", "password": "string", "role": "string", }
Saida:
{ "name": "string", "email": "string", "role": "string", "token": "token jwt", }
-
Similar a user/register, porém o cadastro é ralizado por uma pessoa admin.
Entrada:
"headers": { "authorization": "token jwt valido" }, "body": { "name": "string", "email": "string", "password": "string", "role": "string", }
Saida:
{ "name": "string", "email": "string", "role": "string", "token": "token jwt", }
-
Retorna todas as pessoas usuárias cadastradas como vendedoras.
Saida:
{ "id": "number", "name": "string", }
-
Rsponsavel por registrar novas vendas.
Entrada:
"headers": { "authorization": "token jwt valido" }, "body": { "name": "string", "sellerId": "number", "totalPrice": "decimal", "deliveryAddress": "string", "deliveryNumber": "string", "products": ["Array de produtos"], }
Saida:
{ "newOrderId": "number", }
-
Retorna uma lista das compras referentes ao id pessoa usuária.
Entrada:
"query": { "id": "string" }
Saida:
["Lista de objetos, cada objeto é uma compra"]
-
Retorna a venda referente ao id informado.
Entrada:
"params": { "id": "string" }
Saida:
{ "userID": "number", "sellerId": "number", "totalPrice": "decimal", "deliveryAddress": "string", "deliveryNumber": "string", "saleDate": "date", "status": "string", "seller": "informações do vendedor", "users": "informações do comprador", "products": ["Array de produtos"], }
-
Retorna as vendas referentes a um vendedor especifico:
Entrada:
"headers": { "authorization": "token jwt valido" },
Saida:
["Lista de objetos, cada objeto é uma venda"]
-
Responsável por alterar o status de um pedido
Entrada:
"params": { "id": "string", }, "body": { "status": "novo status", }
Saida:
{ "status": "novo status", }
-
Retorna uma todos os produtos registrados no banco.
Saida:
[ ..., { "id": "number", "name": "string", "price": "decimal", "urlImage": "string", }, ..., ]
O banco de dados utilizado foi o MySQL, um banco relacional, estruturado da seguinte forma:
Saiba mais sobre as Tabelas!
- users:
- Armazena os dados das pessoas usuárias, tanto compradores quanto vendedores.
- sales:
- Armazena as informações referentes as vendas, quem comprou, quem vendeu, onde foi entregue, a data da compra e o valor total.
- sales_products:
- Tabela intermediária para a relação N:N entre vendas e produtos, também armazena a quantidade vendida do produto.
- products:
- Armazena as informações referentes aos produtos, como nome, preço e sua imagem.