A Laravel and Bootstrap web platform for a digital voting cycle with three roles: voter registration, admin-reviewed candidacy requests, and one-time confirmed voting.

The Electronic Voting System is a web platform built with Laravel on the backend and Bootstrap for the interface. It automates a complete digital election cycle: account creation, submitting and reviewing candidacy requests, publishing candidates' résumés and campaign programs, and casting a vote with a confirmation step that prevents later changes. The project was carried out by a team of students with technical assistance from Techno Enjaz.
The system is built around three roles: the voter (regular user), the candidate, who is promoted after administrative approval, and the system administrator, who manages requests and candidates and monitors voting and its results. The data model enforces two core rules: one candidacy request per user and one vote per user. It is an academic application prototype that demonstrates the concept, not an accredited election system.
| Item | Details |
|---|---|
| Project type | Multi-role web platform for electronic voting management |
| Field | Web applications, information systems |
| Project status | Academic application prototype |
| Techno Enjaz role | Technical support and assistance to the students during project development |
| Core technologies | Laravel (MVC architecture), Bootstrap, relational database |
| Users | Voter, candidate, system administrator |
| Outputs | Account registration, candidacy requests with clear statuses, candidate résumé pages, a voting page with final confirmation, an admin dashboard |
Traditional elections rely on slow, costly paper-based and manual procedures that increase the chance of human error, delay results, and can make participation difficult for people facing geographic or health barriers to reaching polling stations. Voters also need clear, consistent information about candidates and their programs to make an informed choice.
The project aims to bring these steps together in one platform: organized user registration, a formal candidacy path reviewed by the administration, candidate profile pages, and electronic voting that is recorded once and cannot be modified, with tools for the administrator to monitor the process.
The project was carried out academically by the students, with technical assistance and support from Techno Enjaz during development. It is presented among the office's work as an example of its support for multi-role web applications built with Laravel, from organizing the workflow between roles to designing the database and the relationships between entities.
| Role | Permissions |
|---|---|
| Voter | Create an account, a simple profile page (name, email, photo), browse candidates and their résumés, vote for one candidate once |
| Candidate | All voter permissions including voting, plus managing their résumé page and campaign content |
| System administrator | Review candidacy requests and accept or reject them, add candidates manually and fully edit their résumés, monitor voting and review results |
| Interface | Function |
|---|---|
| Candidate requests (admin dashboard) | View incoming requests and decide to accept or reject them |
| Candidate résumé page | Candidate details, photo, slogans, and campaign video |
| Candidate list | All candidates with their full résumés to help voters compare |
| Voting interface | Candidates' names and photos with a vote button next to each |
| Vote completion | Confirmation message and locking of the choice once the vote is cast |
The database was designed with an ERD around four main entities:
| Entity | Key fields and rules |
|---|---|
| Users | Unique ID, first and last name, email, password, phone number, national ID number, email-verified flag, user type, "has voted" flag, profile photo |
| Candidacy requests | Request number, linked user, status (pending, accepted, rejected), admin notes; only one request per user |
| Résumés | Full name, official photo, candidate summary, slogans, campaign video link; one résumé per candidate (1:1), created only after the request is accepted |
| Votes | Operation ID, voter ID, candidate ID; one vote per user (1:1), and unlimited votes per candidate (N:1) |
These constraints are enforced at the level of database relationships to prevent duplicate candidacy requests or voting more than once.
The book includes no performance or security testing and no trial with real users, so these results are functional: they show the election cycle working in the prototype environment.
According to the directions set out in the project:
The system collects sensitive personal data such as national ID and phone numbers, and stores vote records linked to users. Any real-world use therefore requires encrypting this data, separating voter identity from the vote, controlling access rights, and an independent security review.
If you are working on a web platform for voting or institutional operations and need technical help developing the idea or building a prototype, you can contact the Techno Enjaz office to discuss your project's requirements and the appropriate scope of support.
A web platform built by a team of students with technical assistance from Techno Enjaz that automates a digital election cycle from account creation to casting a vote. It uses Laravel for the backend and Bootstrap for the interface, with three roles: voter, candidate, and system administrator. It is an academic prototype, not an accredited election system.
A user who chooses to run first enters as a regular user, and their request is sent to the administration as pending verification. The administrator accepts or rejects it with notes documenting the reason; once accepted, the candidate gets a résumé page for their photo, slogans, and campaign video links. Only one candidacy request is allowed per user.
A confirmation message appears when the vote button is pressed, and after confirmation the vote cannot be deleted, changed, or cast for another candidate. The database enforces one vote per user, with a flag in the user record showing whether they have voted.
The administrator reviews candidacy requests and accepts or rejects them, adds candidates manually and fully edits their résumés, and monitors the voting process and reviews results from the admin dashboard.
No. The current version activates accounts immediately without email or OTP verification, relies on a conventional database and password authentication without full encryption, and links each vote record to the voter ID. The project proposes two-step verification and blockchain integration in future, and any real use would need security testing and independent certification.
Reach out to Techno Enjaz engineering team to discuss technical feasibility, prototype hardware, and development scope.