Code Monkey home page Code Monkey logo

coleta-seletiva's Introduction

API Coleta seletiva de lixo

NodeJS TypeScript Mongodb Jest Express.js NPM Docker ESLint Swagger

API para cadastro de pontos de coleta de lixo seletivo

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.

Instruções para rodar o projeto

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.

Testes

Rodar todos os testes

npm test

Rodar testes de unidade

npm run test:unit

Rodar testes de integração

npm run test:integration

Rodar testes covarage

npm run test:ci

Documentação

A documentação foi desenvolvida utilizando o Swagger, e pode ser acessada através do endpoits /documentation

Principais funcionalidades

  • Cadastro
  • Login
  • Criar Itens
  • Listar Itens
  • Criar Localização
  • Listar Localização

Endpoints da aplicação

Rota de Cadastro

[POST] /api/v1/signup

Request body

{
   "name": "string",
   "email": "string",
   "password": "string",
   "passwordConfirmation": "string"
}

Responses

Generic badge

{
    "access_token": "string",
    "name": "string"
}

Generic badge

{
    "error": "string"
}

Rota de Login

[POST] /api/v1/login

Request body

{
  "email": "string",
  "password": "string"
}

Responses

Generic badge

{
    "access_token": "string",
    "name": "string"
}

Generic badge

{
    "error": "string"
}

Rota de Criar Item private

[POST] /api/v1/item

Parameters in header

{
    "x-access-token": "string"
}

Request body

{
    "title": "string",
    "image": "string"
}

Responses

success

Generic badge

error

Generic badge Generic badge Generic badge

{
    "error": "string"
}

Rota de Listar Itens private

[GET] /api/v1/item

Parameters in header

{
    "x-access-token": "string"
}

Responses

success

Generic badge

[
  {
	"id": "string",
	"title": "string",
	"image": "string"
  }
]

error

Generic badge Generic badge Generic badge

{
    "error": "string"
}

Rota para criar Localização private

[POST] /api/v1/location

Parameters in header

{
    "x-access-token": "string"
}

Request body

{
  	"name": "string",
	"email": "string",
	"latitude": number,
	"longitude": number,
	"city": "string",
	"uf": "string",
	"items": [
		{ "id": "string"},
		{ "id": "string"},
	]
}

Responses

success

Generic badge

{
  "surveyId": "string",
  "question": "string",
  "answers": [
    {
      "image": "string",
      "answer": "string",
      "count": number,
      "percent": number,
      "isCurrentAccountAnswer": boolean
    }
  ],
  "date": "string"
}

error

Generic badge Generic badge Generic badge

{
    "error": "string"
}

Rota para consultar uma localização por id

[GET] /api/v1/location/{locationId}

Parameters in route

{
"locationId": "string"
}

Responses

success

Generic badge

{
    "id": "string",
  	"location": {
		"name": "string",
		"email": "string",
		"latitude": number,
		"longitude": number,
		"city": "string",
		"uf": "string"
	},
	"items": [
		{
			"title": "string"
		},
		{
			"title": "string"
		}
	],
}

Generic badge Generic badge

{
    "error": "string"
}

Rota para consultar uma localização por filtros, uf, city.

[GET] /api/v1/location

Responses

success

Generic badge

[
    {
        "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}

Parameters in query string

{
"city": "string",
"uf": "string"
}

Responses

success

Generic badge

[
    {
        "id": "string",
      	"location": {
    		"name": "string",
    		"email": "string",
    		"latitude": number,
    		"longitude": number,
    		"city": "string",
    		"uf": "string"
    	},
    	"items": [
    		{
    			"title": "string"
    		},
    		{
    			"title": "string"
    		}
    	],
    }
]

Generic badge Generic badge

{
    "error": "string"
}

coleta-seletiva's People

Contributors

juniorpaula avatar

Stargazers

 avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.