API foi desenvolvida ultilzando uma arquitetura bem definida e desacoplada, ultilizando TDD como metotologia de trabalho e Clean Architecture para fazer a distribição das resposabildades em camadas, e sempre que possível ultilizando os principios do SOLID.
API conciste em um mapeamento onde estão situados Pontos epecíficos de coleta de lixo seletivo, onde os usuários podem está cadastrando esses pontos atravez de coordenadas de latitude e longitude do local. Além das localizações, os items que os pontos podem recolher/coletar so podem ser cadastrados via Administrador do sistema.
A Aplicação está em constante desenvolvimento, cabendo sempre que possível novas funcionalidades.
Os requisitos necessários são:
- Node
- npm
- Mongodb
Faça o clone do projeto e rode o comando npm install
para instalar as dependências.
npm install
Subir o servidor de desenvolvimento atravéz do comando npm run dev
npm run dev
Configurar as variáveis de ambiente criando um arquivo .env
na raiz do projeto, e seguindo o examplo do arquivo .env.example
.
npm test
npm run test:unit
npm run test:integration
npm run test:ci
A documentação foi desenvolvida utilizando o Swagger, e pode ser acessada através do endpoits /documentation
- Cadastro
- Login
- Criar Itens
- Listar Itens
- Criar Localização
- Listar Localização
[POST] /api/v1/signup
{
"name": "string",
"email": "string",
"password": "string",
"passwordConfirmation": "string"
}
{
"access_token": "string",
"name": "string"
}
{
"error": "string"
}
[POST] /api/v1/login
{
"email": "string",
"password": "string"
}
{
"access_token": "string",
"name": "string"
}
{
"error": "string"
}
[POST] /api/v1/item
{
"x-access-token": "string"
}
{
"title": "string",
"image": "string"
}
{
"error": "string"
}
[GET] /api/v1/item
{
"x-access-token": "string"
}
[
{
"id": "string",
"title": "string",
"image": "string"
}
]
{
"error": "string"
}
[POST] /api/v1/location
{
"x-access-token": "string"
}
{
"name": "string",
"email": "string",
"latitude": number,
"longitude": number,
"city": "string",
"uf": "string",
"items": [
{ "id": "string"},
{ "id": "string"},
]
}
{
"surveyId": "string",
"question": "string",
"answers": [
{
"image": "string",
"answer": "string",
"count": number,
"percent": number,
"isCurrentAccountAnswer": boolean
}
],
"date": "string"
}
{
"error": "string"
}
[GET] /api/v1/location/{locationId}
{
"locationId": "string"
}
{
"id": "string",
"location": {
"name": "string",
"email": "string",
"latitude": number,
"longitude": number,
"city": "string",
"uf": "string"
},
"items": [
{
"title": "string"
},
{
"title": "string"
}
],
}
{
"error": "string"
}
[GET] /api/v1/location
[
{
"id": "string",
"location": {
"name": "string",
"email": "string",
"latitude": number,
"longitude": number,
"city": "string",
"uf": "string"
},
"items": [
{
"title": "string"
},
{
"title": "string"
}
],
}
]
[GET] /api/v1/location?city={city}&uf={uf}
{
"city": "string",
"uf": "string"
}
[
{
"id": "string",
"location": {
"name": "string",
"email": "string",
"latitude": number,
"longitude": number,
"city": "string",
"uf": "string"
},
"items": [
{
"title": "string"
},
{
"title": "string"
}
],
}
]
{
"error": "string"
}