Sobre:
O GoBarber é uma plataforma WEB e MOBILE para agendamentos de serviços de barbearia.
Você está no repostório da plataforma Web do GoBarber que é voltado para o prestador de serviço gerenciar seus agendamentos, atendimentos e clientes.
Recursos da Plataforma:
- Permite que um usuário consiga recuperar a senha informando o e-mail cadastrado;
- A API envia para o usuário um e-mail con instruções de recuperação de senha;
- A API envia um link com token por e-mail para resetar a senha e por segurança o token enviado expira em 2h;
- Cadastro e autenticação de usuários com geração de JwToken;
- Autenticação de usuários com JwToken;
- Permite usuário cadastrar-se e atualizar seu perfil (incluindo imagem de avatar);
- Validação de e-mails no cadastro, não é possível cadastrar dois usuários com mesmo e-mail;
- Para atualizar a senha, o usuário deve informar a senha antiga e a nova senha;
- Lista os agendamentos do prestador de serviços de um dia específico;
- O prestador recebe uma notificação sempre que houver um novo agendamento;
- O prestador pode visualizar as notificações não lidas;
- A notificação possui estado de lida ou não-lida para que o prestador de serviços consiga gerenciar suas notificações;
- Os agendamentos do prestador no dia também são armazenados em cache para acelerar o carregamento;
- As notificações do prestador de serviço são armazenadas no MongoDB;
- As notificações do prestador de serviço são enviadas em tempo real utilizando Socket.io;
- O usuário pode listar todos os prestadores de serviços cadastrado;
- O usuário pode listar os dias de um mês com pelo meos um horário disponível de um prestador de serviço;
- O usuário pode listar os horários disponíveis em um dia específico de um prestador;
- O usuário deve poder realizar um novo agendamento com um prestador;
- Por padrão, cada agendamento possui duração de 1h;
- Os agendamentos estão disponíveis das 8h00 às 18h00 (Primeiro às 8h, último às 17h);
- Os usuário não pode agendar um serviços em uma data ou horário que já passou;
- O usuário não pode agendar serviços consigo mesmo;
- A listagem de prestadores é armazenada em cache para acelerar o carregamento;
Banco de Dados e estratégias de armazenamento:
O backend foi desenvolvido em NodeJs. Para banco de dados, foi utilizado o Postgres para armazenar os dados que envolvem relacionamentos da regra de negócio da aplicação, MongoDB para armazenar as notificações e Redis para lidar com filas de processamentos em segundo plano.
Ferramentas, Técnicas e Bibliotecas da API:
- Utilização da biblioteca Unform para lidar com os dados de formulários;
- Utilização do Yup para validação de dados;
- Utilização do Context API do React para compartilhar estados com a aplicação;
- Utilização do react-spring para animação das mensagens toast;
- Utilização da biblioteca DayPicker para a criação de um calendário personalizado;
- Aplicação de testes no frontend. Testes de componentes, hooks e funcionalidades;