Skip to content

Implementação back-end de um sistema de enquetes com atualização em tempo real de score.

Notifications You must be signed in to change notification settings

atlas-jedi/node-polls

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

10 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Node Polls

Node Polls é um sistema backend, construído em Node.js, no qual realiza enquetes com atualização em tempo real do score de votação através de websockets.

Instalação

  1. Clone este repositório:
  git clone https://github.com/atlas-jedi/node-polls.git
  1. Instale as dependências (Node v20.11.0):
  cd node-polls
  npm install
  1. Inicie os containers (Postgresql e Redis)
  docker compose up -d
  1. Execute o servidor de desenvolvimento
  npm run dev

Tecnologias Utilizadas

  • Node.js
  • Fastify
  • Prisma
  • Postgresql
  • Redis
  • WebSockets
  • Typescript

O servidor HTTP é construído com Fastify, um framework web de alta eficiência por ser rápido e de baixo custo. O Prisma é usado como ORM para facilitar a interação com o banco de dados. O Redis foi utilizado para gerenciar o score de votação em conjunto de websockets para que a aplicação possua uma comunicação em tempo real das atualizações de votos de forma independente do banco de dados principal.

Documentação da API

Retorna uma enquete específica com seus itens

  GET /polls/:pollId
Parâmetro Tipo Descrição
pollId string Obrigatório. ID da enquete a ser retornada

Cria uma enquete

  POST /polls
  • Corpo da requisição (JSON):
  {
    "title": "Nome da enquete",
    "options": ["Opção 1", "Opção 2", "Opção 3"]
  }

Vota em um item específico em uma enquete específica

  POST /polls/:pollId
Parâmetro Tipo Descrição
pollId string Obrigatório. ID da enquete a ser votada
  • Corpo da requisição (JSON):
  {
    "pollOptionId": "ID do item a ser votado"
  }

Canal de comunicação websocket

  • URL: ws://localhost:3333/polls/:pollId/results
  • Protocolo: WebSocket
Parâmetro Tipo Descrição
pollId string Obrigatório. ID da enquete para ouvir as atualizações de score

Este endpoint fornece uma conexão WebSocket para comunicação em tempo real. A partir dessa conexão, o servidor irá enviar atualizações de score de votação especificado em tempo real.

Contribuindo

Contribuições são sempre bem-vindas! Sinta-se à vontade para abrir um pull request com melhorias ou correções.

Releases

No releases published

Packages

No packages published