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_bdehas been validated for a specific poll.

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 CASCADEautomatically remove related votes and candidacies when a poll is deleted. - Repeatable imports:
projet.sqlwas designed withDROP TABLE IF EXISTSstatements 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.phpwas adapted to use InfinityFree remote SQL hosts instead oflocalhost. - Data migration: the structure and test data were imported through
vPanelandphpMyAdmin, while working around hosting restrictions such as the inability to run manualCREATE DATABASEcommands 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.phpandprojet.sqlwere 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.sqland importing it through the remote database interface - updating include paths and form action URLs for the InfinityFree environment


