A api está hospedada no Heroku e pode ser acessada através da url:
"https://eatflavor-bd.herokuapp.com/"
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
- 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
Esse projeto foi desenvolvido com:
Testes
# 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
- Utilizar socket.io para atualização em tempo real
- End Point para atualizar o menu da semana automaticamente
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"
},
...
]
}
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"
}
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"
},
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"
},
...
]
},
...
]
}
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"
},
...
]
},
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"
},
...
]
},
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"
}
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"
}