GithubHelp home page GithubHelp logo

polls's Introduction

Cover

NLW Expert (Node.js)

Sistema de votos em tempo real, onde uma enquete pode ser criada, o usuário pode votar em uma das opções de uma enquete e isso é refletido automaticamente via websocket para visualização em tempo real.

Requisitos

Setup

  • Clone o repositório com (git clone https://github.com/juanvieiraprado99/polls.git)
  • Instalar as dependências do projeto (pnpm install);
  • Subir container com Redis e PostgreSQL (docker compose up -d);
  • Copie o arquivo .env.example (cp .env.example .env);
  • Rodar a aplicação (pnpm run dev);
  • Para testar as chamadas é possível utilizar o Hoppscotch, pessoalmente prefiro o Insomnia.

HTTP

POST /polls

Criar uma nova enquete.

Request body

{
  "title": "Qual é o melhor framework?",
  "options": ["Angular", "React", "Vue", "Next"]
}

Response body

{
  "pollId": "a06fa8a5-209d-4829-8256-98e5d099b858"
}

GET /polls/:pollId

Retorna detalhes de uma enquete.

Response body

{
  "poll": {
    "id": "a06fa8a5-209d-4829-8256-98e5d099b858",
    "title": "Qual é o melhor framework?",
    "options": [
      {
        "id": "0d79ffac-22d0-4417-9f7c-910f7e8ae8d4",
        "title": "Angular",
        "score": 1
      },
      {
        "id": "6e504cbf-0882-42cf-aada-7b5588712374",
        "title": "React",
        "score": 0
      },
      {
        "id": "c385f034-05f7-4914-ad64-f459740b45d3",
        "title": "Vue",
        "score": 0
      },
      {
        "id": "1d41d6e9-c13b-4347-b90b-6bbb9423859c",
        "title": "Next",
        "score": 0
      }
    ]
  }
}

POST /polls/:pollId/votes

Adiciona um voto em uma enquete especifica.

Request body

{
  "pollOptionId": "0d79ffac-22d0-4417-9f7c-910f7e8ae8d4"
}

WebSockets

ws /polls/:pollId/results

Rota de WebSocket para retornar a quantidade de votos em tempo real.

Message

{
  "pollOptionId": "0d79ffac-22d0-4417-9f7c-910f7e8ae8d4",
  "votes": 1
}

polls's People

Contributors

juanvieiraprado99 avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.