BDE Voting System

Full-Stack BDE Electronic Voting System

Overview

The BDE Voting System digitizes the election workflow for the Student Union. It supports multiple simultaneous polls, student candidacies, and a secure voting process designed to enforce one vote per student.

Development was carried out in a collaborative Git workflow, with careful branch management to integrate contributions from different team members, including the administrative dashboard and poll management modules.

Key Contributions

Authentication and Role Management

The authentication layer, implemented in authentification.php, separates access into three user roles:

  • Administrator: creates polls and validates candidate requests.
  • Voter: casts exactly one vote per poll.
  • Candidate: a voter whose application in demandes_bde has been validated for a specific poll.

User roles

PHP session variables were used to preserve security across pages and prevent unauthorized access to the administration dashboard.

Database Modeling and Data Integrity

The MySQL database was structured to protect the election process and keep the data consistent:

  • Integrity constraints: foreign keys with ON DELETE CASCADE automatically remove related votes and candidacies when a poll is deleted.
  • Repeatable imports: projet.sql was designed with DROP TABLE IF EXISTS statements to support reliable testing and deployment.

Hosting and Deployment

Moving from a local Linux Mint environment to live production was one of the main technical steps in this project:

  • Server configuration: config.php was adapted to use InfinityFree remote SQL hosts instead of localhost.
  • Data migration: the structure and test data were imported through vPanel and phpMyAdmin, while working around hosting restrictions such as the inability to run manual CREATE DATABASE commands in scripts.
  • Production readiness: DNS, paths, and form actions were updated to remain functional in the InfinityFree directory structure.

Collaborative Workflow

This project was built in a team environment on GitHub, so version control discipline was essential:

  • Branch management: dedicated branches were used to isolate features before merging into the main branch.
  • Conflict resolution: concurrent changes in files such as dashboard.php and projet.sql were resolved manually to preserve functionality.

Live Deployment

The project is fully deployed online and serves as a live demonstration of the system.

  • Hosting provider: InfinityFree, using its PHP and MySQL stack for backend execution and database management.
  • Security: the website is secured with HTTPS to encrypt credentials and ballot data during transmission.

Live website: votebde.me

Deployment Notes

The final deployment required several technical adjustments:

  • pointing the domain to the correct project subdirectory
  • exporting the conflict-free version of projet.sql and importing it through the remote database interface
  • updating include paths and form action URLs for the InfinityFree environment