-
Criar Nova Enquete:
- O usuário deve poder criar uma nova enquete.
- A enquete deve conter um id, título, opções de voto e data de criação.
-
Consultar Detalhes da Enquete:
- O usuário deve poder consultar os detalhes de uma enquete específica.
- Os detalhes devem incluir o título, opções de voto.
-
Votar em uma Enquete:
- O usuário deve conseguir votar em uma enquete.
- A votação deve ser em tempo real e refletir imediatamente na contagem de votos.
-
Restrição de Voto Único:
- Só deve ser possível para o usuário votar em uma única opção por enquete.
- O sistema deve usar cookies para garantir que o usuário não vote mais de uma vez.
-
Linguagem e Framework:
- A aplicação deve ser desenvolvida em Node.js.
- Utilizar TypeScript como linguagem principal.
- Fastify será utilizado como o framework web para otimização de desempenho.
-
Banco de Dados:
- O sistema de gerenciamento de banco de dados principal será o Prisma ORM.
- PostgreSQL será usado como banco de dados principal para armazenar informações de enquetes.
- Redis será utilizado para consultas em tempo real, otimizando o retorno da quantidade de votos.
-
Realtime:
- A comunicação em tempo real será implementada para refletir as votações instantaneamente.
- Redis será utilizado para gerenciar eventos de votação em tempo real.
-
Segurança:
- Cookies serão implementados para garantir a singularidade dos votos por usuário.
- As práticas de segurança recomendadas devem ser seguidas para proteger a aplicação contra vulnerabilidades.
-
Votação Única:
- Um usuário só pode votar uma vez em uma enquete.
- Os cookies serão utilizados para garantir a unicidade dos votos.
-
Estrutura da Enquete:
- Uma enquete deve ter um título significativo.
- As opções de voto devem ser claras e concisas.
-
Cookies de Segurança:
- A implementação de cookies deve ser segura para proteger a integridade do processo de votação.
- Os cookies não devem ser manipulados para evitar fraudes na votação.
Para executar este projeto localmente, siga as etapas abaixo:
# Clone o repositório
git clone https://github.com/RenanFachin/RS_NLW_poll-system-API.git
# Acesse a pasta do projeto
# Instale as dependências
npm install
# Execute a aplicação em ambiente de desenvolvimento
npm run dev
Subindo um container de um database com postgres
docker-compose up
Criando as tabelas (Rodando as migrations)
npx prisma migrate dev