Skip to content

gustavo-martins-pereira/NLW_14-NodeJS-Polls

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

9 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

NLW 14 - Trilha Node.Js - Sistema de Enquetes (Poll)

API de sistema de enquetes feito em Node.Js usando conceitos de requisições HTTP e Websockets, em conjunto com as principais bibliotecas:

  • Prisma - Para relacionamento com o banco de dados;
  • Fastify - Para conceitos de requisições HTTP e uso de Websockets;

💻 Tecnologias Usadas

JavaScript Logo  TypeScript Logo  Node.Js Logo  Postgres Logo  Fastify Logo  Postman Logo  Docker Logo 

⚙ Configurações Iniciais

  1. Instale as dependências do projeto com o comando abaixo:
npm install
  1. Construa o container com o comando:
docker compose up -d
  1. Execute o servidor com:
npm run dev

Caso você queira ver os dados armazenados através da lib do Prisma, execute o comando:

npx prisma studio
  1. No seu Postman, clique no botão "Import" no canto superior esquerdo, e selecione o arquivo JSON com todas as rotas disponíveis para uso.

  2. Para acessar a rota do Websocket, crie um novo arquivo no seu Postman do tipo Websocket e use o caminho: ws://localhost:3333/polls/{POLL_ID}/results

💿 Como Executar

A aplicação consiste em criar enquetes, opções de enquetes e votar em alguma das opções da enquete. Cada enquete é independente da outra, ou seja, é possivel votar em uma opção de uma enquete, e votar em outra opção de outra enquete, sem que as 2 entrem em conflito.

Caso seja votado outra opção de uma enquete que já foi votada, o voto é excluido depois criado na nova opção, mantendo a independência dos votos.

As rotas para a entidade Poll são as seguintes:

HTTP

Websockets

  • ws://localhost:3333/polls/{POLL_ID}/results - Cria uma conexão constante entre o cliente e o servidor para notificar o cliente quando o ranking de votos de uma enquete mudar.