Project Overview

PollSystem

A private, token-based voting platform built with Django — every voter gets one unique token per poll, and one token means exactly one vote.

What this is Overview

PollSystem is a self-hosted internal voting tool. An administrator creates a poll, and the system automatically issues every registered voter a unique, single-use token. Voters log in, see the polls they're eligible for, and cast their vote with that token. Once used, a token can never be used again — so every voter gets exactly one vote per poll, no more.

How a poll flows Lifecycle

1 Admin creates poll Adds voters + options 2 Tokens generated One unique token / voter 3 Voter logs in Sees active polls 4 Vote cast Token marked "used" 5 Poll ends Admin views results

Roles & permissions Access

RoleCan do
Admin Add voters, create polls, end polls, view live results & tallies
Voter View active polls, cast one vote per poll using their token, change password

Architecture System

Request flow from browser to database:

BrowserVoter / Admin
Reverse Proxy/poll/ prefix
Gunicorn3 worker processes
DjangoViews & logic
SQLitePolls & votes

Built-in safeguards Security

Each voting token can only be used once — enforced at the database level
Passwords are hashed before being stored, never kept in plain text
Only authenticated admins can create polls, add voters, or view results
Secrets (Django secret key, allowed hosts) are loaded from environment variables, never hardcoded

Built with Stack

Python 3 Django 5.2 SQLite Gunicorn systemd HTML / CSS
← Back to login