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