All Projects → tgmarinho → gobarber-api-gostack11

tgmarinho / gobarber-api-gostack11

Licence: other
API GoBarber / NodeJS / Express / Typescript / SOLID

Programming Languages

typescript
32286 projects
javascript
184084 projects - #8 most used programming language
HTML
75241 projects

Projects that are alternatives of or similar to gobarber-api-gostack11

node-backend-template
A template for NodeJS backend projects
Stars: ✭ 19 (-51.28%)
Mutual labels:  postgres, eslint, jest, typeorm, multer
Typescript Express Starter
🚀 TypeScript Express Starter
Stars: ✭ 238 (+510.26%)
Mutual labels:  eslint, jest, jsonwebtoken
Express-REST-API-Template
Minimal starter project for a Node.js RESTful API based off express generator
Stars: ✭ 26 (-33.33%)
Mutual labels:  eslint, jest
reactjs-vite-tailwindcss-boilerplate
ReactJS + Vite boilerplate to be used with Tailwindcss.
Stars: ✭ 103 (+164.1%)
Mutual labels:  eslint, jest
express-typeorm-rest-boilerplate
Boilerplate code to get started with building RESTful API Services (Express, TypeORM MongoDB stack)
Stars: ✭ 53 (+35.9%)
Mutual labels:  jest, typeorm
webpack
Готовая сборка webpack
Stars: ✭ 21 (-46.15%)
Mutual labels:  eslint, jest
Hotseat Api
Rest API of a barber shop application - Built with Express, TypeORM and Postgres
Stars: ✭ 27 (-30.77%)
Mutual labels:  postgres, solid
React-Redux-Enterprise
A React-Redux boilerplate for enterprise/large scaled web applications
Stars: ✭ 77 (+97.44%)
Mutual labels:  eslint, jest
teanjs
🔥 TypeORM - Express - Angular 8 - NestJS Server Side Rendering (SSR) 😺
Stars: ✭ 62 (+58.97%)
Mutual labels:  postgres, typeorm
ng-nest-cnode
Angular 10 Front-End and Nestjs 7 framework Back-End build Fullstack CNode
Stars: ✭ 17 (-56.41%)
Mutual labels:  jest, typeorm
typescript-nuxtjs-boilerplate
🍱 Nuxt.js with TypeScript and Run with docker and docker-compose 🐶🦄🔥 visit: https://typescript-nuxtjs-boilerplate.netlify.com/example
Stars: ✭ 51 (+30.77%)
Mutual labels:  eslint, jest
ts-nextjs-tailwind-starter
🔋 Next.js + Tailwind CSS + TypeScript starter packed with useful development features
Stars: ✭ 880 (+2156.41%)
Mutual labels:  eslint, jest
Retro Board
Retrospective Board
Stars: ✭ 622 (+1494.87%)
Mutual labels:  postgres, jest
Ar Uuid
Override migration methods to support UUID columns without having to be explicit about it.
Stars: ✭ 41 (+5.13%)
Mutual labels:  postgres, uuid
eslint-plugin-sql
SQL linting rules for ESLint.
Stars: ✭ 56 (+43.59%)
Mutual labels:  postgres, eslint
zero
📦 A zero config scripts library
Stars: ✭ 17 (-56.41%)
Mutual labels:  eslint, jest
pg-error-enum
TypeScript Enum for Postgres Errors with no runtime dependencies. Also compatible with plain JavaScript.
Stars: ✭ 18 (-53.85%)
Mutual labels:  postgres, typeorm
Express Mongoose Es6 Rest Api
💥 A boilerplate application for building RESTful APIs Microservice in Node.js using express and mongoose in ES6 with code coverage and JsonWebToken Authentication
Stars: ✭ 2,811 (+7107.69%)
Mutual labels:  eslint, jsonwebtoken
Nodebestpractices
✅ The Node.js best practices list (December 2021)
Stars: ✭ 72,734 (+186397.44%)
Mutual labels:  eslint, jest
Coursera-Clone
Coursera clone
Stars: ✭ 48 (+23.08%)
Mutual labels:  jest, multer



GoBarber - Web Aplication


licenceMIT


💬 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.

Faz parte do projeto GoBarber

🚀 Tecnologias

⚠️ Durante o desenvolvimento irei atualizando a lista de tecnologia

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

📖 Thiago Marinho

Desafio realizado por Thiago Marinho de Oliveira.

tips/scripts

criar migrations:

  • Tem um script no package para auxiliar nisso, uma vez que estamos usando ts.

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

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].