Student Voting System

Complete User Manual — Infographic Guide

Authentication & RBAC Election Management Candidate Management Voting Module Blockchain Reports Audit Logs Dashboard Settings
V

Student Voter Guide

6 Steps
1

Create Your Account

Register using your student credentials
Fill in your details to create a voter account. The system validates your Student ID against official enrollment records from the Registrar in real time.
Required Fields
  • Full Name
  • Student ID
  • Email Address
  • Password
  • Confirm Password
Optional / Cascading
  • Branch (select first)
  • Department (auto-filters)
  • Program (auto-loads)
  • Year Level
  • Phone Number
Tip: Program dropdown loads automatically after selecting Branch + Department.
Create Account Already have an account? Sign in
2

Log In to Your Account

Use registered email and password
Sign in with the email and password used during registration. Fortify handles authentication with optional Remember Me, email verification, and Two-Factor Authentication.
Login Form
  • Email Address
  • Password
  • Remember Me toggle
Options
  • Sign in button
  • Forgot Password link
  • Create Account link
  • 2FA challenge (if enabled)
Note: Rate limited to 5 login attempts per minute. Email verification may be required before voting.
Sign in Forgot password?
3

View Your Dashboard

See eligible elections and voting history at a glance
Your personalized dashboard displays active and upcoming elections you're eligible for. Each election card shows status, type, date range, and available actions.
Top Navigation Bar
  • Welcome message with your name
  • Student ID, Department, Year Level
  • Live Scoreboard button
  • My Voting History button
  • My QR Code button
Election Cards
  • Status badge (Ongoing / Published / Closed)
  • Election title and type
  • Start / End date with timezone
  • "Vote Now" button
  • "View Results" link
Vote Now Done Voting View Results Not Yet Open
4

Cast Your Ballot

Select your preferred candidates per position
For each position, click a candidate card to select them. Live counters show remaining selections. Review each candidate's photo, name, department, and platform statement before choosing.
Ballot Features
  • Select 1 or up to N candidates per position
  • Live selection counter
  • Candidate photo + details
  • Platform statement viewer
Rules
  • One vote per election
  • Selections are final after submission
  • All positions must be filled (if required)
  • Abstention allowed where configured
Important: You can only vote once per election. Your selections are final after submission.
Submit Vote
5

Preview & Confirm

Review your selections before finalizing
A final summary of all your selections per position. Each chosen candidate is listed with name and department. This is your last chance to make changes.
Warning: These selections are final and cannot be changed once submitted.
Confirm & Proceed to OTP Edit Selections
6

Enter OTP & Cast Vote

Verify your identity with a one-time code
A 6-digit code is sent to your registered email or phone. Enter it to confirm your identity and cast your vote. The code expires in 5 minutes and is single-use.
OTP Details
  • 6-digit numeric code
  • Sent to email or SMS
  • 5-minute expiry
  • Single-use only
  • Resend option available
After Voting
  • SHA-256 vote hash generated
  • Blockchain-anchored record
  • Printable vote receipt
  • Independent hash verification
Confirm & Cast Vote Resend OTP Back to Ballot
✔ Vote successfully cast! Your receipt shows your vote hash and blockchain anchor.
H

Voting History

View all past votes, re-download receipts, and verify blockchain hashes for each election you participated in.

Receipt Blockchain
Q

My QR Code

Your unique voter QR code for fast check-in at precincts. Used by admins with the Fast Phase QR scanner for quick verification.

Fast Phase QR Scanner
S

Profile Settings

Update your profile information, change password, manage email preferences, and configure notification settings.

Password Notifications
R

Live Scoreboard

Public real-time results display showing vote counts per candidate and position. Auto-refreshes for live election night viewing.

Public Real-time
A

Admin Guide

9 Modules
D

Admin Dashboard

Overview of the system: total elections, active elections, voter count, candidate count, recent audit logs, and quick action buttons.

OverviewStats
U

User Management

Create, edit, search, and manage all system users. Assign roles, bulk-assign roles, bulk toggle status (activate/deactivate), and view user details.

RolesBulk
R

Role & Permission Management

Dynamic RBAC via Spatie. Create/edit/clone roles, toggle role status, manage 40+ granular permissions across 11 modules. Permission matrix UI for role × permission assignment.

RBACMatrix
M

Module Management

Enable/disable system modules. Each module groups related permissions. Toggle entire feature sets on or off as needed.

ModulesPermissions
B

Branch Management

Manage campus branches (Manila, Cavite, etc.). Create, edit, toggle active status. Branches cascade into Departments → Programs.

Campus
D

Department Management

Manage departments under each branch (e.g., College of Engineering, College of Education). Toggle active status.

Department
P

Program Management

Manage academic programs under departments (e.g., BSIT, BSCS, BSCE). Programs cascade from Branch → Department selection.

Program
E

Enrollment / CSV Upload

Upload official enrollment CSV from the Registrar. System validates Student IDs against this data during voter registration. View, manage, and clear enrollment records.

CSVRegistrar
P

Precinct Management

Create and manage precincts/ballot locations. Assign voters to precincts for organized election day flow.

Precinct
Q

Fast Phase (QR Scanner)

Quick QR code scanner for voter check-in. Scan voter QR codes for fast verification, view scan history, and track check-in times.

QRScanner
S

Settings

Configure system-wide settings: General (site name, contact info), Email (SMTP), SMS (Twilio/Vonage/Semaphore), Blockchain (network/RPC), Security (2FA, OTP method), Notification templates.

ConfigSMTPSMS
E

Election Management

CRUD + Lifecycle
+

Create Election

Set title, description, type (General/Departmental/Year-Level/Special), start/end dates, timezone, and max candidates per vote.

E

Edit & Manage

Update election details, manage positions, candidate list, eligible voters. Elections can be cloned for recurring events.

Clone
V

Eligible Voters

Assign eligible voters by department, year level, program, or specific students. Multi-select interface with search and filtering.

Eligibility
S

Status Lifecycle

Elections move through: DraftPublishedOngoingClosedArchived. Each transition is validated.

Draft Published Ongoing Closed Archived
Multiple concurrent elections supported. Different voter groups can participate in different elections simultaneously.
C

Candidate & Position Management

Positions + Candidates
P

Positions

Create positions per election (President, VP, Senator, etc.). Set title, max selections per voter, and display order. Drag-to-reorder interface.

OrderMax Votes
C

Candidate Profiles

Register candidates with photo, name, position, department, year level, platform statement, and ballot number. Upload photo with preview.

PhotoPlatform
A

Approval Workflow

Candidates go through: PendingApproved or Rejected. Disqualified status with reason note for integrity violations.

ApproveReject
R

Ballot Order

Reorder candidates within each position using drag-and-drop. Control the order in which candidates appear on the voter's ballot.

Drag & Drop
B

Blockchain Module

Immutable Audit Trail
Per-Vote Data Recorded
  • Voter hash (SHA-256 anonymized)
  • Election ID (UUID)
  • Candidate IDs selected
  • Timestamp (ISO 8601)
  • Vote hash (SHA-256)
  • Block hash (chained)
  • Transaction hash
Verification Features
  • Block explorer UI (paginated)
  • Hash-based vote receipt
  • Independent hash verification tool
  • Tamper detection (hash mismatch alerts)
  • Blockchain verification report
Configurable: Ethereum / Polygon / Sepolia / Mumbai networks. RPC URL and contract address fields ready for on-chain integration via Settings → Blockchain.
R

Reports Module

6 Report Types
Report Description Export Formats
Vote Tally Per-position vote counts with percentages. Shows total votes, leading candidates, and vote distribution. PDF / CSV / JSON
Turnout Report Eligible voters vs. actual voters. Shows participation rate, department-level and year-level breakdown. PDF / CSV / JSON
Position Summary Winners per position with margin of victory. Declares winning candidates with vote counts. PDF / CSV / JSON
Audit Trail Export Complete audit log of all system actions within date range. PDF / CSV / JSON
Blockchain Verification Verification report comparing stored vote hashes against blockchain records. PDF / CSV / JSON
Department Breakdown Vote results segmented by department and year level for detailed analysis. PDF / CSV / JSON
Export: Generate professional PDF reports (via DomPDF), CSV for spreadsheet analysis, or JSON for API integration.
L

Audit Logs

Immutable Records
L

Tracked Events

Login/Logout/Failed attempts, Role & Permission changes, Election CRUD, Candidate approvals/disqualifications, Vote casts (anonymized), Settings changes, Export actions.

F

Filters

Filter by Date Range, Module, Actor (who performed the action), Action type. Powerful search for forensic investigation.

E

Export

Export audit logs to CSV or PDF for record-keeping, compliance, and external audit requirements.

I

Immutable

Audit logs cannot be edited or deleted. Each record is write-once. Tamper-evident design ensures accountability.

ImmutableSecure
Schema: timestamp | actor_id | actor_role | action | module | target_id | target_type | details (JSON) | ip_address | user_agent
S

System Settings

6 Groups
G

General

Site Name, Contact Email, Contact Phone, Timezone. Controls the system's public-facing identity.

@

Email

Mail Driver, SMTP Host, Port, Username, Password, From Address. Powers OTP delivery and system notifications.

SMTPOTP
P

SMS

Provider (Twilio / Semaphore / Vonage), API Key/Secret, Sender Number. Alternative OTP delivery channel.

TwilioSemaphore
B

Blockchain

Network (Ethereum/Polygon/Sepolia/Mumbai), RPC URL, Contract Address, Chain ID. Configure on-chain anchoring.

EthereumPolygon
S

Security

OTP Method (Email/SMS/Authenticator), Maintenance Mode toggle, Enforce 2FA, Max Login Attempts, Session Lifetime (minutes).

2FAOTP
N

Notification Templates

Editable templates for: Vote Confirmation Email, OTP Email, OTP SMS, Election Reminder. Supports placeholder variables like {{name}}, {{election}}.

TemplatesVariables
Seed Roles (7)
  • Super Admin
  • Election Admin
  • ISG Officer
  • Student Voter
  • Auditor
  • Observer
  • Guest
Tech Stack
  • Laravel 13.8 + PHP 8.5
  • Blade + Alpine.js + Tailwind v4
  • Spatie Laravel Permission v7
  • Laravel Fortify v1
  • MySQL 10.4.32 (MariaDB)
  • barryvdh/laravel-dompdf v3
  • Vite 8 + Tailwind CSS v4