O GoBarber é uma aplicação feita para o gerenciamento de serviços entre barbeiros e clientes. Nele é possível se registrar e marcar um horário/serviço com seu barbeiro e/ou se tornar um prestador desses serviços.
Esta é uma das aplicações que compõem todo o sistema GoBarber.
Para explorar as outras, acesse os links a seguir:
As principais tecnologias utilizadas para a construção dessa API foram:
Antes de baixar e executar o projeto, é necessário ter o Node.js já instalado e, em seguida, instalar as seguintes ferramentas:
Abra o terminal do seu sistema operacional e execute os seguintes comandos:
# Clonar o repositório
git clone https://github.com/antonylemos/gobarber-api.git
# Entrar no diretório
cd gobarber-api
# Instalar as dependências
yarn install
Utilizando o Docker, iremos baixar as imagens dos bancos de dados necessários para a execução da API:
# Baixar o PostgreSQL
docker run --name gostack_postgres -e POSTGRES_PASSWORD=docker -p 5432:5432 -d postgres
# Baixar o MongoDB
docker run --name mongodb -p 27017:27017 -d -t mongo
# Baixar o Redis
docker run --name redis -p 6379:6379 -d -t redis:alpine
Para saber se os bancos de dados estão em execução, rode o seguinte comando:
docker ps
Caso não estejam, execute o seguinte comando:
docker start gostack_postgres mongodb redis
Observação: caso queira interromper a execução, substitua start
por stop
.
Para ajudar na visualização dos dados que estão sendo salvos nos bancos de dados, você poderá utilizar as seguintes ferramentas:
Com essas ferramentas, também é possível criar os databases que serão utilizados na aplicação. Certifique-se de criar os seguintes databases antes de executar a aplicação:
- gostack_gobarber (PostgreSQL)
- gobarber (MongoDB)
Para mais informações, verifique o arquivo ormconfig.json
.
Na raíz do projeto você encontrará o arquivo .env.example
. A partir dele, crie um outro arquivo chamado .env
utilizando a mesma estutura.
Com os bancos de dados em execução e estando no diretório da API, execute os seguintes comandos:
# Criar as tabelas no PostgreSQL
yarn typeorm migration:run
# Executar o servidor
yarn dev:server
Para testar as rotas, você poderá utilizar o Insomnia. O workspace completo dessa API está disponível para uso, basta clicar no botão abaixo:
Caso deseje utilizar outra forma para realizar as requisições, as rotas disponíveis são:
POST /sessions
e deve ser enviado via Bearer nas referidas rotas. No Insomnia, após realizar a autenticação, o token é automaticamente compartilhado com as demais rotas.
-
POST /users
: A rota deve receber os camposname
,email
epassword
no corpo da requisição para que se possa cadastrar um novo usuário. -
GET /profile
: A rota deve receber o token do usuário usuário autenticado e retorna as informações desse usuário. -
PATCH /users/avatar
: A rota deve receber o token do usuário autenticado e um arquivo de imagem para que se possa atualizar o avatar do usuário. -
PUT /profile
: A rota deve receber o token do usuário autenticado e pode receber os camposname
,email
,old_password
,password
epassword_confirmation
no corpo da requisição para que se possa atualizar os dados do usuário em questão. -
POST /sessions
: A rota deve receber os camposemail
epassword
no corpo da requisição para que se possa autenticar o usuário usuário. -
POST /password/forgot
: A rota deve receber o campoemail
no corpo da requisição. Isso fará com que um email seja enviado para que seja feita a recuperação da senha. -
POST /password/reset
: A rota deve receber os campospassword
,password_confirmation
etoken
no corpo da requisição para que se possa alterar a senha do usuário.
-
POST /appointments
: A rota deve receber o token do usuário autenticado e os camposprovider_id
edate
no corpo da requisição para que se possa cadastrar um novo agendamento. -
POST /appointments/me
: A rota deve receber o token do usuário usuário autenticado e retorna os agendamentos que foram marcados com ele. -
GET /providers
: A rota deve receber o token do usuário usuário autenticado e retorna os provedores cadastrados no sistema. -
POST /providers/:provider_id/month-availability
: A rota deve receber o token do usuário usuário autenticado, o campoprovider_id
como parâmetro da rota e os camposmonth
eyear
como query da requisição e retorna os dias disponíveis no mês informado. -
POST /providers/:provider_id/day-availability
: A rota deve receber o token do usuário usuário autenticado, o campoprovider_id
como parâmetro da rota e os camposday
,month
eyear
como query da requisição e retorna os horários disponíveis no dia informado.
Desenvolvido com 💜 por Antony Lemos 🧑🏽🚀