Service Provision

API de prestação de serviços. Basicamente, a ideia é que um usuário consiga se cadastrar na plataforma, visualizar as empresas e os serviços que elas prestam e agendar um atendimento para a execução do serviço desejado com a empresa escolhida. Ademais, sempre que um novo agendamente for efetivado, a empresa da qual ele for direcionado, deve receber um e-mail com as informações do agendamento.

Aplicação

Para o desenvolvimento dessa solução utilizamos o NodeJS com express para criar a API baseada no padrão REST e os bancos de dados não relacionais MongoDB e Redis. Esse primeiro banco foi utilizado para o armazenamento de todas as informações cadastradas no sistema, como os usuários, empresas e os agendamentos. Escolhemos o MongoDB porque estudamos a ferramenta durante a disciplina e gostaríamos de colocar em prática os conhecimento adquiridos. Já o segundo foi utilizado pela biblioteca Bee-Queue para o gerenciamento do serviço de envio de e-mail, armazenando em fila os agendamentos cadastrados no sistema com as empresas que devem ser notificadas.

Modelos de Requisição

User

{
	"name" : <nome do usuário> : string,
	"email" : <email do usuário> : string,
	"password" : <senha do usuário> : string,
	"address" : {
		"street" : <nome da rua> : string,
		"number" : <número do local> : string,
		"city" : <nome da cidade> : string,
		"state" : <nome do estado> : string
	}
}

Company

{
   	"name" : <nome da empresa> : string,
	"email" : <email da empresa> : string,
	"password" : <senha da empresa> : string,
	"service" : <serviço prestado pela empresa> string,
	"description" : <descrição do serviço prestado> string,
	"address" : {
		"street" : <nome da rua> : string,
		"number" : <número do local> : string,
		"city" : <nome da cidade> : string,
		"state" : <nome do estado> : string
	}
}

Appointment

{
   	"user" : <id do usuário> : string,
	"company" : <id da empresa> : string,
	"date" : <data para a realização do serviço> : string
}

Endpoints

  • /user
    • GET: Retorna todos os usuários presentes no banco de dados.
    • POST: Armazena o usuário passado no body ao banco de dados.
  • /company
    • GET: Retorna todas as empresas presentes no banco de dados.
    • POST: Armazena a empresa passada no body ao banco de dados.
  • /appointment
    • GET: Retorna todos os agendamentos presentes no banco de dados.
    • POST: Armazena o agendamento passado no body ao banco de dados.
  • /appointment/user/{idUser}
    • GET: Retorna os agendamentos solicitados pelo usuário com id passado por parâmetro.
  • /appointment/company/{idCompany}
    • GET: Retorna os agendamentos solicitados para a empresa com id passado por parâmetro.

Executando o Projeto

Download das dependências

npm install 

Configuração das variáveis

MongoDB: Para alterar a url do MongoDB, é necessário alterar a url informada no método mongo() no arquivo app.js.
Redis: Para alterar a url do Redis, é necessário alterar os valores no arquivo config/redis.js.
Express: Para alterar a porta em que o express vai executar, é necessário alterar o valor no arquivo server.js.
Email: Para alterar as informações sobre o serviço de email, é necessário alterar o arquivo config/mail.js.

Inicializando a API

yarn dev 

Inicializando a fila

yarn queue