HobaiGuigui / gobarber-web-ts

:computer: :iphone: Plataforma Web para barbeiros gerenciar seus clientes e agendamentos em ReactJs.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool


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:

🔒 Recuperação de senha

  • 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;

👥 Atualização de perfil de usuário

  • 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;

💻 Painel do Prestador de serviços (Barbeiro)

  • 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;

📅 Agendamento de serviços

  • 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;
Rodrigo Gonçalves Santana - 2020

About

:computer: :iphone: Plataforma Web para barbeiros gerenciar seus clientes e agendamentos em ReactJs.


Languages

Language:TypeScript 99.1%Language:HTML 0.8%Language:JavaScript 0.1%