Built to order

Online Campus Voting and Poll System

This project builds a secure web-based voting platform for student elections and campus opinion polls, with anonymous ballot casting, one-time vote tokens that enforce one-student-one-vote, and a live results dashboard showing turnout and vote shares. It includes an admin panel for creating elections, importing voter rolls, scheduling polls and auditing ballot counts without ever revealing individual votes. Suitable for B.E./B.Tech final-year projects in Computer Science, IT and Web Development.

Online Campus Voting and Poll System — project thumbnail preview
More project photos (2)

The problem

Student elections and opinion polls on most campuses still run on paper ballots or ad-hoc form tools. Paper voting needs booths, volunteers and manual counting; generic form tools cannot enforce one-student-one-vote, keep ballots secret while publishing turnout, or block duplicate votes. Turnout suffers because voting means queueing between lectures, and organizers face recount disputes with no audit trail. This project builds a purpose-made online voting platform: a verified voter roll, anonymous ballot casting with single-use vote tokens, and a live results dashboard that shows turnout and vote shares without revealing individual votes. The ballot store is deliberately separated from voter identity, so the system can prove that you voted without knowing whom you voted for.

How it works

  1. The election officer creates an election with candidates, schedule and eligibility rules, then imports the voter roll (name, college email, PRN) via CSV.
  2. The system issues a single-use vote token per voter per election and delivers it with a secure voting link.
  3. The voter authenticates, views the ballot, selects a candidate (or NOTA) and submits; the token is consumed atomically with the vote.
  4. The vote is stored with no link back to the voter; only the voter's "has voted" flag is updated.
  5. The results engine aggregates anonymized votes into vote shares and turnout statistics served on the public dashboard.
  6. After polls close, results are finalized and the audit page reconciles ballots issued against ballots cast for the organizers' record.

Tech stack:

  • Python (Django/Flask) or Node.js backend
  • PostgreSQL/MySQL relational database
  • HTML5, CSS3, JavaScript (responsive frontend)
  • REST APIs for voter auth, ballot casting and results
  • CSV voter-roll import
  • Email service for token delivery and reminders
  • HTTPS deployment
  • Charting library for result dashboards
Parameter Value
Application type Web application (voter + admin interfaces)
Voter capacity Approximately 10,000 voters per election (design target)
Ballot secrecy Votes stored with no voter linkage (by design)
Token model Single-use, per-election, consumed atomically
Results latency Dashboard updates within seconds of vote submission (expected)
Concurrent elections Multiple, each with independent roll and schedule
Deployment Any VPS/shared hosting with HTTPS (2 vCPU, 2 GB RAM adequate)
Deliverables Source code, DB schema, setup guide, report, PPT, viva Q&A

Project features

  • [One-student-one-vote tokens] Each eligible voter gets a single-use token per election; the token is consumed on submission and reused or forged tokens are rejected before any vote is recorded.
  • [Anonymous ballot storage] Cast/not-cast status is stored separately from vote content, so turnout is public and auditable while individual votes stay secret.
  • [Live results dashboard] Vote shares, turnout percentages and year-wise turnout breakdowns update as votes arrive, with provisional status until polls close.
  • [Multiple concurrent elections] Run council elections, department rep polls and mess-menu opinion polls side by side, each with its own voter roll, candidates and schedule.
  • [Audit log] Ballots issued, ballots cast, invalid attempts and blocked duplicates are reconciled on an organizer-only audit page.
  • [Scheduled polls and reminders] Elections open and close automatically on schedule; voters get reminders before the deadline.
  • [Role-based admin panel] Separate access for voters, election officers (create elections, manage rolls) and read-only result viewers.

What is included

  • Complete voting web application source code (voter + admin interfaces)
  • Database schema and migration scripts
  • Voter-roll CSV import templates and token system
  • Results dashboard with turnout analytics
  • Setup and deployment guide (VPS/shared hosting)
  • Load-test script for the buyer to verify capacity claims
  • Project report PDF (background, architecture, ballot-secrecy design, methodology)
  • PPT presentation for final review
  • Viva Q&A preparation document (authentication, anonymity design, concurrency, audit)

Limitations & prerequisites

  • Voter identity relies on the accuracy of the imported roll — the system cannot fix a bad roll.
  • Ballot secrecy assumes the deployment uses HTTPS and the server itself is trusted by the institution.
  • One vote per election is enforced by token, not by biometric identity — token sharing is a policy matter.
  • Capacity figures are design targets; the buyer runs the included load-test script to verify on their hosting.
  • The system counts votes; it does not verify candidate eligibility — that stays with the election officer.
  • No end-to-end cryptographic verifiability (individual receipts) in the base build — listed as future scope.

Frequently Asked Questions

How is one-student-one-vote enforced?

Each voter gets a single-use token per election. The token is consumed atomically when the vote is submitted, and any reused or forged token is rejected before a vote can be recorded. The voter's "has voted" flag prevents re-issue.

Are votes really anonymous?

Yes, by design. The database stores cast/not-cast status separately from vote content — there is no column linking a vote to a voter. Turnout is public; individual choices are not.

Can the admin see who voted for whom?

No. The admin panel shows turnout, audit counts and aggregate results only. There is no interface or query in the application that joins a vote to a voter.

What stops someone voting twice with two emails?

The voter roll is the source of truth — duplicates in the roll (same PRN) are flagged at import. Token-level enforcement then guarantees one ballot per roll entry.

What happens if the server goes down mid-election?

Votes are committed transactionally, so a crash cannot half-record a ballot. The schedule (open/close times) is server-side, and results remain provisional until the officer finalizes them.

Is this project suitable for a final-year project?

Yes — for Computer Science, IT and Web Development programs. It demonstrates authentication, data-modeling for secrecy, concurrency control and dashboard engineering around a real campus problem. Suitable for B.E./B.Tech final-year projects in Computer Science, IT and Web Development.

Components & software requirements
  • Python (Django/Flask) or Node.js backend
  • PostgreSQL/MySQL relational database
  • HTML5, CSS3, JavaScript (responsive frontend)
  • REST APIs for voter auth, ballot casting and results
  • CSV voter-roll import
  • Email service for token delivery and reminders
  • HTTPS deployment
  • Charting library for result dashboards
Delivery information

Built-to-order project. Delivery timeline is shared after order confirmation based on current queue.

Support terms

Complete documentation, setup guide, and viva preparation included. Support for setup and explanation provided.

Download abstract (PDF)

Related guides

All guides
Technical illustration of a cloud server pushing event envelopes outward to web application endpoints for payments, dashboards and chat.Web development and IoT students who have built a REST API or an ESP32 project and now need external services (payments, GitHub, messaging) to notify their app when things happen

Webhooks Explained: Receive Data from Payments, GitHub and IoT

A webhook lets a service call your server the moment an event happens — payments, code pushes, form submissions. This guide explains the event anatomy, HMAC signature verification, the fast-acknowledge reliability pattern, local testing, and how webhooks compare with polling, WebSockets and SSE.

Read guide
Illustration of Docker Compose orchestrating a full-stack application with frontend, API, database, and cache containers connected in one network.B.E./B.Tech Computer Science and IT students whose full-stack projects need a frontend, backend, and database running together and are tired of setup instructions that only work

Docker Compose for Full-Stack Projects

Stop juggling four terminals and setup docs that only work on your laptop. This guide builds a complete Docker Compose stack — frontend, API, database, cache — with annotated config, healthchecks, persistent volumes, and a dev/prod split that survives demo day.

Read guide
Illustration of a web page with a comment section: a shield filtering user input so scripts are neutralized into harmless text before rendering in visitors' browsers.B.E./B.Tech Computer Science, IT and Web Development students building web applications with user-generated content: comments, profiles, forums, dashboards

XSS Attacks Explained for Students

Cross-site scripting turns your comment section into code running in visitors' browsers. Learn the three XSS types conceptually, why browsers execute injected input, what it enables, and the defender's toolkit: output encoding, Content Security Policy, safe DOM handling, and hardened cookies. No payloads — prevention only.

Read guide
Get a quotation