Official Documentation

AGM Voting System
User Manual

Complete guide for all users of the KSFJB Annual General Meeting management system — from member check-in to admin election control.

Public Pages Member Features Admin Only

System Overview

The AGM Voting System is a web application designed to manage the full lifecycle of the Kelab Sukan & Kebajikan Felda-Johore Bulkers (KSFJB) Annual General Meeting — from member attendance to election results and lucky draw.

Attendance
TAC-based member check-in with identity verification
Nominations
Members nominate preferred candidates for each position
Live Voting
Real-time position-by-position voting with instant results
Lucky Draw
Spinning wheel draw from present, unselected attendees
Archive
Session history with PDF export — nothing is ever deleted
Admin Panel
Full control over members, positions, settings, and audit logs

User Roles

Member
Regular Member
Can check in to the AGM, nominate candidates, and cast votes. Access to /attendance, /nominate, and /voting.
Admin Control
Admin Control
Can access the admin dashboard for viewing results and managing attendance. Cannot access archive, lucky draw, or promote other admins.
Admin
Full Administrator
Complete access to all features including archive, lucky draw, admin control panel, position/department management, and audit logs. The CEO001 account has the highest privilege (password reset for other admins).

AGM Workflow

1
Admin configures the AGM
Set meeting date, TAC code, nomination window, and open attendance in Meeting Settings.
2
Members check in
Members go to /attendance, enter Staff ID, then enter the TAC code to confirm presence.
3
Nomination phase opens
Admin opens nominations in Meeting Settings. Members visit /nominate and submit one candidate per position.
4
Admin reviews candidates
In the Candidates tab, admin can add/remove nominees, set eligibility overrides, and run a tiebreaker if needed.
5
Voting phase opens
Admin selects the active position and opens voting in Meeting Settings. Members visit /voting.
6
Results are reviewed
Live election results update in real time on the admin dashboard. Admin controls position-by-position.
7
Archive the session
After all positions are complete, admin archives votes and nominations under the session label. PDFs are exportable from Archive & History.
8
Lucky Draw (optional)
Admin runs the lucky draw from /lucky-draw or the Lucky Draw tab. Winners are drawn from present, unselected attendees.
For Members

1. Attendance Check-In

/attendance

Every member must check in before they can nominate or vote. Attendance is verified using a TAC (Transaction Authorisation Code) provided by the meeting organiser.

Step-by-Step
  1. 1Open the attendance page — go to /attendance or scan the QR code displayed at the entrance.
  2. 2Enter your Staff ID — type your staff ID number and click Verify Identity.
  3. 3Confirm "Enter AGM" — your name and workplace will appear. Click Enter AGM to proceed.
  4. 4Enter the TAC code — obtain the 6-digit TAC from the organiser and enter it. Click Confirm Attendance.
  5. 5Identity Verified — you will see a green checkmark. You can now proceed to vote or nominate candidates.
Note: The TAC code is time-limited and session-specific. Do not share it outside the meeting room. If the TAC expires, ask the administrator to regenerate it in Meeting Settings.

2. Nominate a Candidate

/nominate

After checking in, members can submit one nomination per position. Each nomination supports a specific candidate for a specific role.

Step-by-Step
  1. 1Go to /nominate — or click Nominate Candidate from the attendance success screen.
  2. 2Unlock the ballot — enter your Staff ID and click Unlock Ballot.
  3. 3Browse open positions — positions you have not yet nominated for appear under Pending Action.
  4. 4Search for a candidate — type a name, staff ID, or department in the search box for the position.
  5. 5Select and submit — click on the candidate's name in the dropdown, then click Submit Nomination.
  6. 6Position moves to Completed — once submitted, that position locks for you. Repeat for remaining positions.
Eligibility Rules Some positions require specific department or position level. Ineligible candidates will not appear in search results.
One Vote Per Position You can only submit one nomination per position. Choose carefully — it cannot be changed after submission.

3. Cast Your Vote

/voting

Voting is done position-by-position, controlled by the administrator. Only one position is open at a time.

Step-by-Step
  1. 1Wait for the voting session to open — the page shows "Voting is Currently Closed" until the admin activates it.
  2. 2Check your attendance status — you must have checked in (present) to see the voting form. Otherwise you'll see "Attendance Required".
  3. 3View candidates for the active position — the top nominees (by nomination count) appear as cards. Absent nominees are hidden.
  4. 4Click VOTE on your preferred candidate. For AJK positions, select up to 6 candidates then click Submit.
  5. 5Vote Recorded — a green confirmation appears. Wait for the admin to open the next position.
AJK Position: The AJK position allows multi-selection (up to 6 candidates). Check the boxes next to your preferred candidates, then click Submit AJK Votes.
Admin Dashboard

Access the admin dashboard at /dashboard after logging in with your admin account. The sidebar is organised into four sections.

Dashboard Overview

Admin

The Overview is the first screen on login. It shows live statistics and quick access to all key functions.

Total Members
Present Today
Total Votes Cast
Active Position
The overview also displays quick-action buttons for opening/closing voting and generating the meeting TAC code.

Members List

Admin

View and manage all registered members. Search by name, staff ID, department, or workplace. Export the full list as PDF.

Key Actions
  • Search members by name, staff ID, department, workplace, designation, or position level
  • Edit individual member profiles (name, staff ID, department, workplace, designation, position level)
  • Delete a member record
  • Export full member list as PDF
  • View attendance status (present/absent) for the current session

Organisation Chart

Admin

Visual representation of the club's current committee structure. Displays the existing club officials in hierarchical order.

  • View current office bearers grouped by position
  • Assign or update members to official positions
  • Remove members from positions

Manual Registration

Admin

Register a single new member by filling in their details manually.

Required Fields
· Full Name
· Staff ID
· Department
· Workplace
· Designation
· Position Level
· Password (optional)

Bulk Member Upload

Admin

Import multiple members at once from a CSV or XLSX file.

How to Use
  1. 1. Download the sample CSV template shown on the page
  2. 2. Fill in member data: Name, Staff ID, Department, Workplace
  3. 3. Upload the file and review the preview table
  4. 4. Click Import Members to complete the upload
Duplicate staff IDs are skipped automatically. Existing members are not overwritten.

Paperwork Manager

Admin

Create, manage, and export official AGM documents such as agendas, resolutions, and notices.

  • Create new documents with title, content, date range, and signature fields
  • Edit and update existing documents
  • Preview documents before exporting
  • Download as formatted PDF
  • Delete documents no longer needed
Section 3 — AGM Meeting
The following tabs control the live AGM session: voting, nominations, attendance, lucky draw, and archiving.

Meeting Settings

Admin

The central control panel for the AGM session. All timing and access controls live here.

Meeting Details
Set the AGM date, start time, and end time. These appear on PDF reports.
TAC Code
Generate a 6-digit TAC code for member check-in. You can set a custom expiry. The QR code for sharing is available on the Overview tab. Regenerate the TAC at any time if it expires.
Open / Close Attendance
Toggle attendance scanning on or off. Members cannot check in when attendance is closed.
Nomination Window
Set the opening and closing dates for nominations. Members see "upcoming" or "closed" messages outside this window.
Open / Close Voting
Toggle the voting module. Also select the active position being voted on. Members only see the currently active position.

Attendance List

Admin

View all members and their attendance status for the current session.

  • See who is present and who is absent
  • Manually mark a member as present (for walk-ins without a device)
  • View check-in timestamp for each member
  • Export attendance list as PDF
  • Live count of present vs total members

Candidates (Nomination Management)

Admin Only

View all nominated candidates grouped by position. Admins can also add candidates manually, disqualify nominees, and set eligibility overrides.

View Nominations
All current nominations are listed per position, showing the candidate name, staff ID, nomination count, and nominator list.
Add Candidate Manually
Select a position and search for a member to add them as a candidate. The system prevents duplicates within the active session.
Disqualify / Override
Mark a candidate as disqualified (removes them from voting). Use CEO Override to allow an otherwise-ineligible candidate to remain on the ballot.
Tiebreaker
If two candidates have equal nomination counts, use the Tiebreaker button to randomly select which ones proceed to voting.
Export PDF
Download a PDF of all current candidates grouped by position, including nomination counts and nominators.

Nomination Leaderboard

Admin

Live leaderboard showing the top 3 nominated candidates for each position, ranked by nomination count. Updates in real time as nominations come in.

  • Top 3 nominees per position with gold/silver/bronze ranking
  • Live nomination count and nominee eligibility status
  • AJK position shows top 6 nominees
  • Navigate to Archive & History to reset the leaderboard for a new session

Live Election Results

Admin

Real-time election results by position. Displays a podium view (1st/2nd/3rd) for standard positions and a ranked list for AJK.

Position-by-Position Navigation
Use the position tabs to switch between results for different roles. "No Votes Recorded" appears if voting has not started or was reset.
Export Reports
Download the current results as PDF or XLS directly from this tab.
Archive Results
Navigate to Archive & History to archive the results. This clears the live results board and allows a new voting session to begin.

Lucky Draw

Admin Only

An animated spinning wheel that randomly selects prize winners from present attendees. Winners are excluded from future draws automatically.

Configure Prizes
Add prizes in the left panel: set the prize name and the number of winners per prize. Delete prizes individually.
Draw Settings
Adjust the number of wheel spins (1–20) and spin duration (2–30 seconds) using the sliders. The eligible count shows how many attendees remain in the pool.
Run the Draw
Select a prize using the Select button, then click Spin! The wheel spins and stops on a random winner. Click Next Draw to remove the winner from the wheel and draw again.
Winner History
All winners are listed in the left panel grouped by prize. You can remove individual winners or reset all winners to restart the draw.
Export
Download all winners as a CSV file using the Export button in the top bar.
The lucky draw is also available as a fullscreen page at /lucky-draw for projection on a large screen.

Archive & History

Admin Only

All reset actions are performed here. Data is never deleted — it is archived under a session label (e.g., AGM 23 May 2026) and remains searchable and exportable.

AGM Session Label
Auto-filled from the AGM event date in Meeting Settings. You can customise it. This label is used for both nominations and election result archives.
Archive Nominations
  1. 1. (Optional) Click Download Nominations PDF First to save a copy.
  2. 2. Click Archive Nominations — all active nominations are labelled with the session and the leaderboard clears.
Archive Election Results
  1. 1. (Optional) Click Download Results PDF First to save a copy.
  2. 2. Click Archive Election Results — all votes AND nominations are archived. The results board clears and members can nominate again for the next session.
Nomination History
Browse all past nomination sessions. Filter by session label or search by nominee name. Export any session as a PDF report.
Election Results History
Browse archived election results by session. Each row shows the session label, position count, and total votes. Click Export PDF on any row to download that session's results report.
Administrator Control

Admin User Control

Admin Only

Promote members to admin roles and manage existing administrators.

Promote to Admin
Search for a member by name or staff ID. Two promote buttons appear on hover: Full Admin (complete access) and Admin Control (limited dashboard access).
Current Administrators
Lists all admins with their access level badge. Hover to reveal the Demote to Member button. You cannot demote your own account.
Reset Password (CEO001 only)
The CEO001 account can reset any admin's password to the default. Use this if an admin is locked out.

Manage Positions

Admin

Define the election positions that members can nominate and vote for.

  • Add new positions with a title
  • Set eligibility restrictions: required department and/or position level
  • Positions with restrictions will only show eligible members in the nomination search
  • Delete positions (removes associated nominations and votes)
  • Excluded titles (PENASIHAT, AJK, PENAUNG, PENYELARAS SUKAN) are hidden from the member nomination page

Departments & Workplaces

Admin

Maintain the list of departments and workplaces used in member profiles and nomination eligibility checks.

  • Add and rename departments; rename propagates to all affected member records
  • Add and rename workplaces
  • Delete removes the label from all members who held it

Designations & Position Levels

Admin

Manage job designations (e.g., Pengurus, Jurutera) and position levels (e.g., Gred 11, Gred 29) that classify members for eligibility filtering.

  • Add, rename, and delete designations; rename propagates to all members
  • Add, rename, and delete position levels
  • Position levels are used in nomination eligibility rules for specific AGM positions

System Audit Trails

Admin

A full log of all administrative actions performed in the system. Use this to trace who did what and when.

Logged Events Include
· Member promoted/demoted
· Nominations archived
· Votes archived
· Tiebreaker run
· Lucky draw winner
· Position added/deleted
· Bulk upload completed
· Password reset
Filters
Search by date, user, or action type. Export the filtered log as PDF.
Kelab Sukan & Kebajikan Felda-Johore Bulkers Sdn Bhd
AGM Voting System · Internal Use Only