{"id":27651892,"url":"https://github.com/meghanab1909/electora-secure-voting-system","last_synced_at":"2026-04-30T10:08:54.360Z","repository":{"id":289028444,"uuid":"969885516","full_name":"Meghanab1909/ELECTORA-Secure-Voting-System","owner":"Meghanab1909","description":"Developed a secure voting system using Python and TCP socket programming as part  of Semester 4 Computer Networks mini project 2 (in a team of 2). Implemented over 18 robust features ensuring reliable communication. ","archived":false,"fork":false,"pushed_at":"2025-07-28T01:15:52.000Z","size":19774,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-07-28T02:31:12.186Z","etag":null,"topics":["mysql","openssl","python","python-tkinter","smtplib","tcp-socket","twilio-api"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Meghanab1909.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-04-21T05:13:11.000Z","updated_at":"2025-07-28T01:15:56.000Z","dependencies_parsed_at":"2025-04-24T05:10:29.230Z","dependency_job_id":null,"html_url":"https://github.com/Meghanab1909/ELECTORA-Secure-Voting-System","commit_stats":null,"previous_names":["meghanab1909/electora-secure-voting-system"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/Meghanab1909/ELECTORA-Secure-Voting-System","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Meghanab1909%2FELECTORA-Secure-Voting-System","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Meghanab1909%2FELECTORA-Secure-Voting-System/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Meghanab1909%2FELECTORA-Secure-Voting-System/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Meghanab1909%2FELECTORA-Secure-Voting-System/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Meghanab1909","download_url":"https://codeload.github.com/Meghanab1909/ELECTORA-Secure-Voting-System/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Meghanab1909%2FELECTORA-Secure-Voting-System/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32460939,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-29T22:27:22.272Z","status":"online","status_checked_at":"2026-04-30T02:00:05.929Z","response_time":57,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["mysql","openssl","python","python-tkinter","smtplib","tcp-socket","twilio-api"],"created_at":"2025-04-24T05:00:17.036Z","updated_at":"2026-04-30T10:08:54.354Z","avatar_url":"https://github.com/Meghanab1909.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"## Project Overview\nElectora is a Secure Voting System implemented in Python Tkinter using Socket Programming. This project uses TCP socket as TCP prioritizes reliability over speed of transmission. \n\n## Files of this Repository\n\u003ctable\u003e\n  \u003ctr\u003e\n    \u003cth\u003ePoll1.py\u003c/th\u003e\n    \u003ctd\u003e\n      This python file is responsible to receiving the poll admin details. The poll admin details are stored in a table in mySQL. Only after authenticating the poll admin, Poll2.py shall open. \n      \u003cbr\u003e\u003cbr\u003e\n      \u003cb\u003eFeatures of Poll1.py\u003c/b\u003e\n      \u003col\u003e\n        \u003cli\u003eReceives poll admin details\u003c/li\u003e\n        \u003cli\u003eChecks SQL database to verify and authenticate\u003c/li\u003e\n        \u003cli\u003eNecessary validations are present\u003c/li\u003e\n      \u003c/ol\u003e\n      \u003cimg style = \"width: 435px; height: 250px;\" src = \"Poll1.png\" /\u003e\n    \u003c/td\u003e\n  \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003cth\u003ePoll2.py\u003c/th\u003e\n      \u003ctd\u003e\n      This python file is responsible for making the poll, sending the poll info to the server and live stats. In addition to this, there is also a poll time feature. By default the poll time is set to 5:00pm (but it can be modified).\n      \u003cbr\u003e\u003cbr\u003e\n      \u003cb\u003eFeatures of Poll2.py\u003c/b\u003e\n      \u003col\u003e\n        \u003cli\u003eRecives the poll details\u003c/li\u003e\n        \u003cli\u003eSubmits the poll info to server\u003c/li\u003e\n        \u003cli\u003eDisplays live stats\u003c/li\u003e\n        \u003cli\u003eEnd Poll Option, to end the poll prior to the set poll time\u003c/li\u003e\n        \u003cli\u003eKeeps track of poll time. If poll time is exceeded then the poll is terminated automatically with the results being sent to registered voters.\u003c/li\u003e\n        \u003cli\u003eNecessary validations are present\u003c/li\u003e\n      \u003c/ol\u003e\n        \u003cimg style = \"width: 435px; height: 250px;\" src = \"Poll2.png\" /\u003e\n      \u003c/td\u003e\n    \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003cth\u003eServer.py\u003c/th\u003e\n    \u003ctd\u003e\n      This python file is the Server file of this project. It is the integral part of the project responsible for many functions. \n      \u003cbr\u003e\u003cbr\u003e\n      \u003cb\u003eFeatures of Server.py\u003c/b\u003e\n      \u003col\u003e\n        \u003cli\u003eReceives poll data and writes into SQL database\u003c/li\u003e\n        \u003cli\u003eChecks voter details. If the voter details are found, the OTPs are sent via phone number (using twilio) and email (using SMTP) for authentication.\u003c/li\u003e\n        \u003cli\u003eIf the authenticated, the server sends the poll info to the voter\u003c/li\u003e\n        \u003cli\u003eReceives the votes of the voters, sets the voter id status to voted (updates in SQL database) and stores it in a csv file. The csv file aides the live stats of Poll2.py.\u003c/li\u003e\n        \u003cli\u003eKeeps track of poll time. If the time is exceeded OR end poll button is pressed, it terminates all the functions indicating the poll is terminated. \u003c/li\u003e\n        \u003cli\u003eNecessary validations are present\u003c/li\u003e\n      \u003c/ol\u003e\n    \u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003cth\u003eVoter.py\u003c/th\u003e\n    \u003ctd\u003e\n      This python file is the voter file where the voters can get authenticated and vote for the candidate of their choice. \n      \u003cbr\u003e\u003cbr\u003e\n      \u003cb\u003eFeatures of voter.py\u003c/b\u003e\n      \u003col\u003e\n        \u003cli\u003eReceives the login details of voters and sends to server\u003c/li\u003e\n        \u003cli\u003eIf voter found, the OTPs are sent for authentication.\u003c/li\u003e\n        \u003cli\u003eOnce authenticated, the voter can see the poll info sent by server\u003c/li\u003e\n        \u003cli\u003eVote is submitted\u003c/li\u003e\n        \u003cli\u003eNecessary validations are present\u003c/li\u003e\n      \u003c/ol\u003e\n      \u003cimg style = \"width: 435px; height: 250px;\" src = \"voter.png\" /\u003e\n    \u003c/td\u003e\n  \u003c/tr\u003e\n\u003c/table\u003e\n\n## Prequisites\n1. Python\n2. Tkinter\n3. MySQL (Create the database and necessary tables)\n4. SMTP (Recommended to create an email specific to this project)\n5. Twilio (Create a twilio account, video reference: https://www.youtube.com/watch?v=-fqGGqXHQ2E\u0026pp=ygUGdHdpbGlv)\n6. OpenSSL\n7. Numpy and Matplotlib\n\n## Before Running the Project\n1. Download the project files in this repository\n2. Generate csr, crt and key files. Check the code and do the necessary additions. The parts where the additions are to be made are highlighted.\n\n## Run the project\u003cbr\u003e\n(Please run the project in the following sequence)\n1. Server.py\n2. Poll1.py (On the poll admin getting authenticated, Poll2.py shall open)\n3. _Once the poll is made_, Voter.py\u003cbr\u003e\u003cbr\u003e\nServer.py -\u003e Poll1.py -\u003e (Poll2.py should open after poll admin is authenticated) -\u003e voter.py\u003cbr\u003e\u003cbr\u003e\n4. Ideally, the server will be on one laptop and the client will be on another laptop. And since, the hostname of the server is used irrespective of the network, the client and server connection will be established without having it to replace with the IP address everytime there is a network change.\n5. Since threading is used, the server can handle multiple client requests.\n   \n*Note: To get a better understanding of the project, kindly watch the screen recording of the project (project.mp4) uploaded in the repository. If the video is not being displayed/loaded on github please download it*\n\n## Project Contributors _(In Alphabetical Order)_\n1. Meghana Saisri Bisa - github username: Meghanab1909\n\n2. Mitha M K - github username: mithamk\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmeghanab1909%2Felectora-secure-voting-system","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmeghanab1909%2Felectora-secure-voting-system","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmeghanab1909%2Felectora-secure-voting-system/lists"}