Skip to content

XST-BD/RTPoll

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

242 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

RTPoll

A real-time polling system that allows users to create polls, share them via public links and view real-time results

Table of Contents

Features

  • User Authentication System - Registration, login, logout, forgot password, email change, password reset, email verification and account deletion.
  • Poll Creation - Create a poll with a question, options, expiration date and whether to make the result public or not.
  • Poll Sharing - Share a poll via a public link.
  • Real-Time results - View poll results in real-time.
  • Poll Deletion - Delete polls.

Usages

  • Create a poll:

    • Enter a question.
    • Add options.
    • Set expiration date.
    • Choose whether to make the result public or not.
    • Click on "Create Poll" button.
    • Poll is created and you are redirected to the poll page.
  • Share a poll:

    • Click on the share icon on the poll page to copy the link.
    • Share the link with people you want to participate in the poll.
    • People can access the poll by clicking on the link and can vote.
  • View poll results:

    • Poll results are displayed in real-time.
  • Delete a poll:

    • Click on the delete icon on the poll page to delete the poll.
  • User account management:

    • Go to the settings page to change your account settings.
    • Delete all your polls.
    • Change your email.
    • Change your password.
    • Delete your account.

Tech Stack

Frontend

  • Nuxt.js
  • Tailwind CSS
  • Pinia
  • FingerprintJS
  • ApexCharts
  • Iconify

Backend

  • FastAPI
  • PostgreSQL
  • Redis
  • RabbitMQ
  • Celery
  • JWT

Project Setup & Installation

Prerequisites

Clone Repository

  1. Clone the repository
    git clone https://github.com/XST-BD/RTPoll.git
  2. Navigate to the project directory
    cd RTPoll

Frontend Setup

  1. Navigate to frontend directory:
    cd frontend
  2. Install dependencies:
    pnpm install
    pnpm approve-builds
  3. Set up the environment variables in frontend/.env file:
    API_URL="http://localhost:8000/api/v0"
    WS_URL="ws://localhost:8000/api/v0/ws"
    
  4. Start the development server:
    pnpm dev
  5. Open http://localhost:3000 in your browser.

For Production Build

  1. Build the application:
    pnpm build
  2. Preview the production build locally:
    pnpm preview
  3. Open http://localhost:3000 in your browser.

Backend Setup

Environment

  • Create backend/.env and use proper env variables.
  • See docs/deployment.md for details

Reverse Proxy (Nginx)

  • Setup SSL certificates in nginx/certs/
    1. cd nginx && mkdir -p certs
    2. openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout privkey.pem -out fullchain.pem

Start server

  1. Complete prerequisites
  2. docker compose up -- build

Notes

This is a self-signed certificate, not for deployment For more details check docs/

Authors