This project was developed in GoStack Bootcamp from Rocketseat. It is the backend of an application for barbershops named GoBarber. The frontend can be accessed here and the mobile version here.
Objective • Technologies • How to run the application •
This project allows the customer to make an appointment with a specific barber and the barber can see the appointments of a particular day. This project was developed using DDD, TDD and some SOLID principles.RF
- o usuário deve poder recuperar sua senha informando o seu e-mail;
- o usuário deve receber um e-mail com instruções de recuperação de senha;
- O usuário deve poder resetar sua senha;
RNF
- Utilizar mailtrap.io para testar envios em ambiente de dev;
- Utilizar Amazon SES para envios em produção;
- O envio de e-mails deve acontecer em segundo plano (background job);
RN
- O link enviado por email para resetar senha deve expirar em 2hs;
- O usuário precisa confirmar a nova senha ao resetar sua senha;
RF
- O usuário deve poder atualizar o seu nome, email e senha;
RN
- O usuário não pode alterar seu email para um email já utilizado;
- Para atualizar sua senha, o usuário deve informar a senha antiga;
- Para atualizar sua senha, o usuário precisa confirmar a nova senha;
RF
- O usuário deve poder listar seus agendamentos de um dia específico
- O prestador deve receber uma notificação sempre que houver um novo agendamento
- O prestador deve poder visulizar as notificações não lidas
NF
- Os agendamentos do prestador no dia devem ser armazenados em cache
- As notificações do prestador devem ser armazenadas no MongoDB
- As notificações do prestador devem ser enviadas em tempo-real utilizando Socket.io
RN
- A notificação deve ter um status de lida ou não lida para que o prestador possa controlar
RF
- O usuário deve poder listar todos os prestadores de serviços cadastrados;
- O usuário deve poder listar os dias de um mês com pelo menos um horário disponível de um prestador;
- O usuário deve poder listar horários disponiveis de um dia especifico de um prestador
- O usuário deve poder realizar um novo agendamento com um prestador;
RNF
- A listagem de prestadores deve ser armazenada em cache;
RN
- Cada agendamento deve durar 1h exatamente;
- Os agendamentos devem estar disponiveis entre 8h às 18 (Primeiro às 8h, último às 17h);
- O usuário não pode agendar em um horário já ocupado;
- O usuário não pode agendar em um horário que já passou;
- O usuário não pode agendar serviços consigo mesmo;
It was used these technologies in this project.
- Node.js
- Typescript
- Express
- Typeorm
- Tsyringe
- Jest
- Celebrate
- Ethereal (For sending email in development environment)
- Amazon Simple Email Service (For sending email in production environment)
- Postgres
- MongoDB
- Redis
You will need these tools instaled in your machine: