Logo

GitHub top language GitHub language count Stars Repository Size

A api está hospedada no Heroku e pode ser acessada através da url:
"https://eatflavor-bd.herokuapp.com/"

📃 Sobre

Este repositório contém o back-end do site de delivery da EatFlavor. A api foi feita com Node, ultilizando o framework Express e banco de dados MongoDb. São 3 tabelas do banco de dados para usuários, produtos e vendas. Há dois tipos de usuário, administrador e cliente, o cliente tem permissão para listar produtos, listar vendas e atualizar o status desta, enquanto o administrador também tem permissão para adicionar produtos. O sistema de autenticação foi desenvolvido com JWT para aferir as permissões necessárias. Foi utilizado o modelo de arquiterura MSC para a comunicação com o banco de dados, validações e comunicação com o usuário. Os models e os services foram feitos com TDD (Test Driven Development) utlizando Mocha, Chai e Sinon e testando cada camada individualmente. A api está hospedada no Heroku e pode ser acessada através da url: "https://eatflavor-bd.herokuapp.com/", o bango de dados foi hospedado em cluster pelo MongoDB Atlas

🔧 Recursos

  • Listar produtos
  • Listar produto por id
  • Criar produto
  • Listar vendas
  • Listar venda por id
  • Criar venda
  • Atualizar venda
  • Registrar usuário
  • Validar usuário
  • Validar token

🔨 Tecnologias

Esse projeto foi desenvolvido com:

Testes

⬇️ Instalação

  # Clone o repositório:
  $ https://github.com/lucasSCsantos/eat-flavor-back-end

  # Entre no diretório:
  $ cd eat-flavor-back-end
  
  # Instale as dependencias:
  $ yarn
  
  # Inicie o app:
  $ yarn start

⏭ Próximos Passos

  • Utilizar socket.io para atualização em tempo real
  • End Point para atualizar o menu da semana automaticamente

⛓ End Points

Produtos

Listar todos os produtos:

https://eatflavor-bd.herokuapp.com/products
{
	"products": [
		{
			"_id": "123456789123",
 			"name": "Serradura",
			"description": "Uma sobremesa cremosa e saborosa, misturada com o crocante da bolacha triturada",
  		"price": 6.99,
			"url_image": "https://imagem.sobremesa/bonita.png",
			"category": "dessert",
			"type": "Fria"
		},
		...
	]
}

Acessar um produto pelo id:

https://eatflavor-bd.herokuapp.com/products/:id
{
	"_id": "123456789123",
  "name": "Serradura",
	"description": "Uma sobremesa cremosa e saborosa, misturada com o crocante da bolacha triturada",
  "price": 6.99,
	"url_image": "https://imagem.sobremesa/bonita.png",
	"category": "dessert",
	"type": "Fria"
}

Adicionar um produto:

https://eatflavor-bd.herokuapp.com/products

A estrutura para adicionar um produto deve ser essa:

{
	"name": "Serradura",
	"description": "Uma sobremesa cremosa e saborosa, misturada com o crocante da bolacha triturada",
	"price": 6.99,
	"url_image": "https://imagem.sobremesa/bonita.png",
	"category": "dessert",
	"type": "Fria"
},

O retorno deve ser:

{
	"_id": "123456789123",
	"name": "Serradura",
	"description": "Uma sobremesa cremosa e saborosa, misturada com o crocante da bolacha triturada",
	"price": 6.99,
	"url_image": "https://imagem.sobremesa/bonita.png",
	"category": "dessert",
	"type": "Fria"
},

Produtos

Listar todas as vendas:

https://eatflavor-bd.herokuapp.com/sales
{
	"sales": [
		{
			"_id": "123456789125",
			"user_id": "Arroz",
			"address": "Rua feia",
			"total_price": 20.99,
			"sale_date": "Mon Feb 07 2022 20:35:16 GMT-0300",
			"status": "pending",
			"products": [
				{
					"_id": "123456789123",
					"name": "Arroz",
					"description": "Um arroz sequinho, delicioso, recheado com pato e farinheira",
					"price": 10.99,
					"url_image": "https://imagem.arroz/pato.jpeg",
					"category": "food",
					"type": "Carne Branca"
				},
				...
			]
		},
		...
	]
}

Acessar um produto pelo id:

https://eatflavor-bd.herokuapp.com/sales/:id
{
	"_id": "123456789123",
	"user_id": "Arroz",
	"address": "Rua feia",
	"total_price": 20.99,
	"sale_date": "Mon Feb 07 2022 20:35:16 GMT-0300",
	"status": "pending",
	"products": [
		{
			"name": "Arroz",
			"description": "Um arroz sequinho, delicioso, recheado com pato e farinheira",
			"price": 10.99,
			"url_image": "https://imagem.arroz/pato.jpeg",
			"category": "food",
			"type": "Carne Branca"
		},
		...
	]
},

Adicionar uma venda:

https://eatflavor-bd.herokuapp.com/sales

A estrutura para adicionar uma venda deve ser essa:

{
	"user_id": "Arroz",
	"address": "Rua feia",
	"total_price": 20.99,
	"sale_date": "Mon Feb 07 2022 20:35:16 GMT-0300",
	"status": "pending",
	"products": [
		{
			"name": "Arroz",
			"description": "Um arroz sequinho, delicioso, recheado com pato e farinheira",
			"price": 10.99,
			"url_image": "https://imagem.arroz/pato.jpeg",
			"category": "food",
			"type": "Carne Branca"
		},
		...
	]
},

O retorno deve ser:

{
	"_id": "123456789123",
	"user_id": "Arroz",
	"address": "Rua feia",
	"total_price": 20.99,
	"sale_date": "Mon Feb 07 2022 20:35:16 GMT-0300",
	"status": "pending",
	"products": [
		{
			"name": "Arroz",
			"description": "Um arroz sequinho, delicioso, recheado com pato e farinheira",
			"price": 10.99,
			"url_image": "https://imagem.arroz/pato.jpeg",
			"category": "food",
			"type": "Carne Branca"
		},
		...
	]
},

Usuários

Registrar usuário:

https://eatflavor-bd.herokuapp.com/register

A estrutura para adicionar um usuário deve ser essa:

{
	"name": "Ednaldo",
	"email": "ednaldo@gmail.com",
	"password": "senha_secreta_do_ednaldo"
}

O retorno deve ser:

{
	"_id": "123456789123",
	"name": "Ednaldo",
	"email": "ednaldo@gmail.com",
	"token": "eyJhbGciOiJIUzI1NIsInR5cCI6IkpXVCJ9.eyJlbWFpbCI6ImFfsefscCFrD43ZXhwIjoxNjQ0MzY4NTQwfQ.jFr2oShUqNHY_vXSz3GDQVlki4urSYvzo"
}

Logar com usuário:

https://eatflavor-bd.herokuapp.com/login

A estrutura para fazer login deve ser essa:

{
	"name": "Ednaldo",
	"email": "ednaldo@gmail.com",
	"password": "senha_secreta_do_ednaldo"
}

O retorno deve ser:

{
	"_id": "ednaldo@gmail.com",
	"name": "Ednaldo",
	"token": "eyJhbGciOiJIUzI1NIsInR5cCI6IkpXVCJ9.eyJlbWFpbCI6ImFfsefscCFrD43ZXhwIjoxNjQ0MzY4NTQwfQ.jFr2oShUqNHY_vXSz3GDQVlki4urSYvzo"
}