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.
- TypeScript: Linguagem.
- NodeJs: Ambiente de execuĆ§Ć£o.
- Express: API Framework.
- JsonWebToken:AutenticaĆ§Ć£o JWT
- Multer:Upload de Arquivos
- Postgres:Banco de Dados
- Typeorm:ORM
- Jest:Testes
- tsyringe:Lib de injeĆ§Ć£o de dependencias. uuidv4: uuid.
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.
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
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;
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;
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.
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;
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;
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;
- 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