gmmunis / GoBarber

App desenvolvido com Node.js, React.js, React Native, Typescript, PostGreSQL durante GoStack 11 da RocketSeat

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

GoStack BOOTCAMP

Plataforma de agendamento e gerenciamento para barbearias

šŸ’¬ Sobre

API GoBarber, aplicaĆ§Ć£o que conecta prestadores de serviƧo (Barbeiros e Cabeleireiros) aos clientes em suas regiƵes. AplicaĆ§Ć£o montada durante o bootcamp GoStack aplicando todo o conhecimento adquirido durante a jornada. Neste projeto foi utilizada as melhores prĆ”ticas na construĆ§Ć£o do projeto, com o uso das tecnologias TypeScript, Express, TypeORM em cima do Ambiente e execuĆ§Ć£o de javascript, o NodeJS.

šŸš€ Tecnologias

šŸ”– Layout

Uma API Rest, que retorna o conteĆŗdo em JSON que vai ser consumida tanto por um Front-end em ReactJS quanto por uma aplicaĆ§Ć£o Mobile Hibrido com React Native.

Base da AplicaĆ§Ć£o.

Requisitos funcionais:
  [] 100% de cobertura de testes nos services da aplicaĆ§Ć£o.
  [] Tratamento de exceƧƵes global
  

Requisitos NĆ£o Funcionais: Framework da API - Express Linguagem de ProgramaĆ§Ć£o - TypeScript Banco de dados utilizado na aplicaĆ§Ć£o - Postgres ORM - TypeORM Lib de testes - Jest Utilizar Mailtrap para testar envios de email em ambiente de desenvolvimento Utilizar Amazon SES para envios de email em ambiente de ProduĆ§Ć£o. Utilizar Eslint, Prettier e EditorConfig para padronizar o cĆ³digo em ambiente de desenvolvimento, com a style guide do AirBnb

CriaĆ§Ć£o de usuĆ”rio

Requisitos Funcionais:
  [x] CriaĆ§Ć£o de conta com (Nome, Email, Senha);
  [] Envio de email confirmando criaĆ§Ć£o de conta;

Requisitos NĆ£o Funcionais: Envio de email utilizando lib Nodemailer;

Regras de NegĆ³cio: [] NĆ£o pode ser criado duas contas com o mesmo email; [] O usuĆ”rio deve confirmar a senha ao criar uma conta. [] A senha deve ser Hasheada antes de ser gravada no banco de dados;

AutenticaĆ§Ć£o

Requisitos Funcionais:
  [] O usuƔrio deve poder se Autenticar utilizando email e senha;

Requisitos NĆ£o Funcionais: A autenticaĆ§Ć£o deve ser feita com Json Web Token (JWT);

Regras de NegĆ³cio: [x] No payload do token deve ser armazenado o ID do usuĆ”rio;

RecuperaĆ§Ć£o de Senha

Requisitos Funcionais:
  [x] O usuƔrio deve poder recuperar sua senha informando o seu email;
  [x] O usuĆ”rio de receber um email com instruƧƵes de recuperaĆ§Ć£o de senha;
  [x] O usuƔrio deve poder resetar sua senha ;

Requisitos NĆ£o Funcionais: Envio de email utilizando lib Nodemailer; O envio de email deve acontecer em segundo plano (background job);

Regras de NegĆ³cio: [x] O link enviado por email para resetar a senha, deve expirar em 2h; [x] O usuĆ”rio precisa confirmar a nova senha ao resetar sua senha.

AtualizaĆ§Ć£o de Perfil

Requisitos Funcionais:
  [] O usuƔrio deve poder atualizar seu perfil (nome, email, senha, Avatar);

Regras de NegĆ³cio: [x] O usuĆ”rio nĆ£o pode alterar seu email para um email ja em uso na aplicaĆ§Ć£o [x] Para atulizar sua senha, o usuĆ”rio deve informar a senha antiga; [x] Para atulizar sua senha, o usuĆ”rio precisa confirmar a senha;

Painel de usuƔrio (Prestador de serviƧo)

Requisitos Funcionais:
  [] O prestador deve poder listar os seus agendamentos de um dia especifico;
  [] O prestador deve poder receber uma notificaĆ§Ć£o sempre que houver um novo agendamento;
  [] O prestador deve poder visualizar as notificaƧƵes nĆ£o lidas;

Requisitos NĆ£o Funcionais: Os agendamentos 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;

Regras de NegĆ³cio: [] A notificaĆ§Ć£o deve ter um status de lida ou nĆ£o-lida para que o prestador possa controlar;

Agendamento de serviƧo

Requisitos Funcionais:
  [] O usuƔrio deve poder listar todos os prestadores de serviƧo cadastrados;
  [] O usuĆ”rio deve poder visualizar os dias de um mĆŖs com pelo menos um horĆ”rio disponĆ­vel de um prestador;
  [] O usuƔrio deve poder visualizar os horƔrios disponƭveis de um dia especifico de um prestador;
  [] O usuƔrio deve poder realizar um novo agendamento com um prestador;
  [] O usuƔrio deve poder listar os agendamentos jƔ marcados;
  [] O usuƔrio deve poder cancelar um agendamento marcado.

Requisitos NĆ£o Funcionais: A listagem de prestadores devem ser armazenadas em cache.

Regras de NegĆ³cio: [] Cada agendamento deve durar 1h exatamente; [] Os agendamentos devem estar disponĆ­veis entre 8h Ć s 18h sendo o Ćŗltimo agendamento iniciado as 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 consigo mesmo;

tips/scripts

criar migrations:
  • Terminal:
    yarn typeorm migration:create -n CreateAppointments
  • Execugtar migration:
    yarn typeorm migration:run
  • Rollback desfazer:
    yarn typeorm migration:revert

Ver quais migrations jĆ” foram executadas:

yarn typeorm migration:show

Este projeto tambĆ©m possui a parte frontend que foi desenvolvida em ReactJs e a versĆ£o mobile que foi desenvolvida em ReactNative.

About

App desenvolvido com Node.js, React.js, React Native, Typescript, PostGreSQL durante GoStack 11 da RocketSeat


Languages

Language:TypeScript 55.3%Language:HTML 35.4%Language:JavaScript 4.2%Language:Java 1.7%Language:CSS 1.5%Language:Objective-C 1.2%Language:Ruby 0.2%Language:Starlark 0.2%Language:Handlebars 0.1%Language:Shell 0.1%