3salles / delivery-rest

Project created to obatin grade into Distributed System subject.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Market SD

License

Este projeto vale nota parcial da cadeira de Sistemas Distribuídos

🗂 Table of Contents

📖 Sobre o projeto

Foi proposto a criação de um projeto em Node.js em REST que simulasse um sistema de supermercado delivery com as operações:

  • Listar os produtos disponível
  • Colocar um produto no carrinho
  • Remover um produto do carrinho
  • Pagar o pedido
  • Solicitar a entrega

🧱 Instalação

Este projeto usa Node.js eYarn, você precisará deles para instalar as dependências.

🚧 Pré-requisitos

Clone este repositório:

$ git clone https://github.com/3salles/delivery-rest.git

# Entre na pasta `delivery-rest`:

$ cd delivery-rest

🚨 Se você não possui git instalado em sua máquina, você pode instalá-lo aqui.

🚧 Instalando dependências

Na pasta delivery-rest, instale as dependências pelo seguinte comando:

$ yarn install

▶️ Rodando o Projeto

Rode os seguintes comando:

# Para o servidor

$ yarn server

A aplicação funcionará em http://localhost:3333.

Podendo ser visto em deploy no seguinte link: https://market-sd.herokuapp.com.

📑 Documentação

  • Listar produtos

    GET /products

    Retorna um JSON com a lista de produtos cadastrados

      {
      "drinks": [
      	{
      		"id": 0,
      		"imageURL": "https://images.unsplash.com/photo-1594631252845-29fc4cc8cde9?ixlib=rb-1.2.1&ixid=MnwxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8&auto=format&fit=crop&w=774&q=80",
      		"name": "Chá",
      		"price": 6.9
      	},
      	{
      		"id": 1,
      		"imageURL": "https://images.unsplash.com/photo-1641327512258-375610e81f86?ixlib=rb-1.2.1&ixid=MnwxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8&auto=format&fit=crop&w=870&q=80",
      		"name": "Café",
      		"price": 14.9
      	},
      	{
      		"id": 2,
      		"imageURL": "https://images.unsplash.com/photo-1595641190867-138b14a23a7a?ixlib=rb-1.2.1&ixid=MnwxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8&auto=format&fit=crop&w=694&q=80",
      		"name": "Achocolatado",
      		"price": 13.62
      	}
      ],
      "snacks": [
      	{
      		"id": 3,
      		"imageURL": "https://images.unsplash.com/photo-1558961363-fa8fdf82db35?ixlib=rb-1.2.1&ixid=MnwxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8&auto=format&fit=crop&w=930&q=80",
      		"name": "Nikito",
      		"price": 2
      	},
      	{
      		"id": 4,
      		"imageURL": "https://images.unsplash.com/photo-1499195333224-3ce974eecb47?ixlib=rb-1.2.1&ixid=MnwxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8&auto=format&fit=crop&w=1502&q=80",
      		"name": "Fini",
      		"price": 4.45
      	},
      	{
      		"id": 5,
      		"imageURL": "https://images.unsplash.com/photo-1626697556651-67ebdcb8cbd6?ixlib=rb-1.2.1&ixid=MnwxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8&auto=format&fit=crop&w=1770&q=80",
      		"name": "Barra de Chocolate",
      		"price": 5
      	}
      ],
      "food": [
      	{
      		"id": 6,
      		"imageURL": "https://images.unsplash.com/photo-1596560548464-f010549b84d7?ixlib=rb-1.2.1&ixid=MnwxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8&auto=format&fit=crop&w=1770&q=80",
      		"name": "Arroz",
      		"price": 17.89
      	},
      	{
      		"id": 7,
      		"imageURL": "https://images.unsplash.com/photo-1551462147-ff29053bfc14?ixlib=rb-1.2.1&ixid=MnwxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8&auto=format&fit=crop&w=774&q=80",
      		"name": "Macarrão",
      		"price": 1.57
      	},
      	{
      		"id": 8,
      		"imageURL": "https://images.unsplash.com/photo-1612257416648-ee7a6c533b4f?ixlib=rb-1.2.1&ixid=MnwxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8&auto=format&fit=crop&w=1193&q=80",
      		"name": "Feijão",
      		"price": 6.9
      	}
      ]

}


- Fazer um pedido

> POST /order

Envia uma requisição no seguinte formato:

```json

{
  "category":"drinks",
  "id": "2"
  }
  

E retorna a seguinte resposta:

{
  	"id": 2,
  	"imageURL": "https://images.unsplash.com/		photo-1595641190867-138b14a23a7a?ixlib=rb-1.2.1&		ixid=MnwxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8&auto=format&fit=crop&		w=694&q=80",
  	"name": "Achocolatado",
  	"price": 13.62
  }
  • Solicitar entrega

    POST /address

    Envia uma requisição no seguinte formato:

    {
      "address": "Rua H, 03",
      "complement": "bloco D",
      	"neighborhood": "Araçagi",
      "cep": "65138-000",
      "city": "Raposa",
      "state": "MA"
    }
    

    E retorna a seguinte resposta:

    "Rua H, 03, bloco D, Araçagi. Raposa - MA. CEP: 65138-000"
  • Pagar pedido

    GET /payment

    Retorna o carrinho atual com os items de pedido, endereço de entrega e total a ser pago

    {
      "orders": [
      	{
      		"id": 0,
      		"imageURL": "https://images.unsplash.com/photo-1596560548464-f010549b84d7?ixlib=rb-1.2.1&ixid=MnwxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8&auto=format&fit=crop&w=1770&q=80",
      		"name": "Arroz",
      		"price": 17.89
      	}
      ],
      "total": 17.89,
      "address": "Rua H, 03, bloco D, Araçagi. Raposa - MA. CEP: 65138-000"

}


- Remover produto

> DELETE /product/:category/:id

Deve ser colocado nos parâmetros da rota a categoria do produto e o id e retorna a lista de produtos atualizada.

Exemplo: > /product/drinks/0

```json

{
  "drinks": [
  	{
  		"id": 0,
  		"imageURL": "https://images.unsplash.com/photo-1594631252845-29fc4cc8cde9?ixlib=rb-1.2.1&ixid=MnwxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8&auto=format&fit=crop&w=774&q=80",
  		"name": "Chá",
  		"price": 6.9
  	},
  	{
  		"id": 1,
  		"imageURL": "https://images.unsplash.com/photo-1641327512258-375610e81f86?ixlib=rb-1.2.1&ixid=MnwxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8&auto=format&fit=crop&w=870&q=80",
  		"name": "Café",
  		"price": 14.9
  	}
  ],
  "snacks": [
  	{
  		"id": 0,
  		"imageURL": "https://images.unsplash.com/photo-1558961363-fa8fdf82db35?ixlib=rb-1.2.1&ixid=MnwxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8&auto=format&fit=crop&w=930&q=80",
  		"name": "Nikito",
  		"price": 2
  	},
  	{
  		"id": 1,
  		"imageURL": "https://images.unsplash.com/photo-1499195333224-3ce974eecb47?ixlib=rb-1.2.1&ixid=MnwxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8&auto=format&fit=crop&w=1502&q=80",
  		"name": "Fini",
  		"price": 4.45
  	},
  	{
  		"id": 2,
  		"imageURL": "https://images.unsplash.com/photo-1626697556651-67ebdcb8cbd6?ixlib=rb-1.2.1&ixid=MnwxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8&auto=format&fit=crop&w=1770&q=80",
  		"name": "Barra de Chocolate",
  		"price": 5
  	}
  ],
  "food": [
  	{
  		"id": 0,
  		"imageURL": "https://images.unsplash.com/photo-1596560548464-f010549b84d7?ixlib=rb-1.2.1&ixid=MnwxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8&auto=format&fit=crop&w=1770&q=80",
  		"name": "Arroz",
  		"price": 17.89
  	},
  	{
  		"id": 1,
  		"imageURL": "https://images.unsplash.com/photo-1551462147-ff29053bfc14?ixlib=rb-1.2.1&ixid=MnwxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8&auto=format&fit=crop&w=774&q=80",
  		"name": "Macarrão",
  		"price": 1.57
  	},
  	{
  		"id": 2,
  		"imageURL": "https://images.unsplash.com/photo-1612257416648-ee7a6c533b4f?ixlib=rb-1.2.1&ixid=MnwxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8&auto=format&fit=crop&w=1193&q=80",
  		"name": "Feijão",
  		"price": 6.9
  	}
  ]
}

📄 Licença

Este projeto usa a licença MIT.

👩‍💻 👨‍💻 Autores

Beatriz Salles
Lucas Cléopas

Developed with 💜

About

Project created to obatin grade into Distributed System subject.


Languages

Language:JavaScript 100.0%