PD-Breja é uma API REST desenvolvida em Javascript com NodeJS, em que o usuário consegue realizar tarefas como cadastrar e encontrar PDVs de cerveja gelada mais próximo de forma simples e segura.
PDV = Ponto de Venda :)
O PD-Breja foi desenvolvido em NodeJs com o framework Express v4 e utiliza o banco de dados noSQL MongoDb, embora as instruções são voltadas para o Linux o NodeJS tem um ótimo suporte Cross-Plataform, sendo assim, você consegue rodar o PD-breja no Linux, Windows ou OSX com alguns ajustes.
- node v8
- npm v5
- docker v17 --dev
- docker-compose v1.16 --dev
Instale os pacotes necessários
npm install
Suba um container do MongodDB
sudo docker-compose up -d
O PD-breja utliza um gerenciador de processos chamado PM2
Para iniciar uma intância do app:
npm start
Para executar os testes basta executar o comando
npm test
Assim que é feito um commit na branch master, o Travis CI executa os testes e faz o deploy no app do heroku:
https://pd-breja.herokuapp.com/
**Toda requisição necessita de um token de autenticação
Para executar o migration de dados
npm run migrate
Os Pontos de Vendas são cadastrados com um POST
- Todos os campos são necessários
- O campo document é unico
- Os campos coverageArea e address seguem o padrão GeoJSON
Url: https://pd-breja.herokuapp.com/pdv/
Exemplo de corpo da requisição:
{
"tradingName": "PDBreja - Franca",
"ownerName": "Eduardo Hattori",
"document": "36167948895",
"coverageArea": {
"type": "MultiPolygon",
"coordinates": [
[[[30, 20], [45, 40], [10, 40], [30, 20]]],
[[[15, 5], [40, 10], [10, 20], [5, 10], [15, 5]]]
]
},
"address": {
"type": "Point",
"coordinates": [-46.57421, -21.785741]
}
}
Exemplo de Resposta com o StatusCode 201:
{
"pdvs": [
{
"tradingName": "PDBreja - Franca",
"ownerName": "Eduardo Hattori",
"document": "36167948895",
"id": "49"
}
]
}
Url: https://pd-breja.herokuapp.com/pdv/:id
Exemplo de Resposta com o StatusCode 200:
{
"pdvs": [
{
"id": "51",
"tradingName": "Bar Legal",
"ownerName": "Eduardo Pedroso",
"document": "73.068.991/0001-18",
"coverageArea": {
"coordinates": [
[
[
...
]
]
],
"type": "MultiPolygon"
},
"address": {
"coordinates": [
-46.772907,
-23.528173
],
"type": "Point"
}
}
]
}
Url: https://pd-breja.herokuapp.com/pdv?lng=-46.772907&lat=-23.528173
Exemplo de Resposta com o StatusCode 200:
{
"pdvs": [
{
"id": "51",
"tradingName": "Bar Legal",
"ownerName": "Eduardo Pedroso",
"document": "73.068.991/0001-18",
"coverageArea": {
"coordinates": [
[
[
...
]
]
],
"type": "MultiPolygon"
},
"address": {
"coordinates": [
-46.772907,
-23.528173
],
"type": "Point"
}
}
]
}
Exemplo de erros com StatusCode 400, 404 ou 500:
{
"pdvs": [],
"error": [
"document: "36167948895" already exist"
]
}
- Implementar Swagger
- Configurar Servidor para logs
- Implementar BDD
Eduardo Hattori – @eHattori