← Back to work
Realtime votingDelivered · August 2026

WGG 2026 Event Platform & Real-Time Voting Game

IT Division Member · participant experience and realtime integration developer

A completed WGG 2026 event-technology delivery: official orientation web experience plus a three-stage, operator-controlled decision game for an approximately 1,300-student audience, with synchronized timers, Ably-powered state updates, voting, and live result visualization.

Role

IT Division Member · participant experience and realtime integration developer

Outcome & status

WGG 2026 concluded in August 2026. The official platform, participant game flow, live-result interface, and supporting event systems were delivered as part of the IT team. Approximately 1,300 remains the planned orientation audience, not a separately verified concurrent-user measurement.

Overview

The problem to solve.

WGG 2026 was a completed new-student orientation program at Petra Christian University, delivered through August 2026. Within the IT team, I developed loader and landing-page components for the official Laravel platform serving an approximately 1,300-student orientation audience, and built the Wawasan Kebangsaan experience: three ethical and career decision scenarios turned into a synchronized audience game. An operator controls stage changes and 30-second voting windows; participant browsers follow the same state, submit one vote per stage, and render the aggregate A/B result. The broader team delivery also included a recruitment website used by 100+ committee applicants and an administrative management website.

Problem

A large orientation audience needs to move through the same story, vote within short windows, and see aggregate results without manual refreshes or uncontrolled stage transitions.

People

Approximately 1,300 incoming Informatics students and the WGG 2026 session operator

Decisions

Key decisions.

The frontend and admin repositories are private team systems, so no source link or public live URL is exposed. The event visual assets were supplied by the WGG Creative team. The event concluded in August 2026; portfolio claims distinguish delivered behavior from an unrecorded, independently measured concurrent-user peak.

  • Keeping all participant browsers synchronized with operator-controlled transitions while retaining a degraded polling path
  • Protecting the Ably server credential and limiting browser clients to subscribe-only capabilities
  • Preventing duplicate or out-of-window votes without trusting a participant identifier supplied by the browser
  • Preparing for an approximately 1,300-person audience without treating realtime-provider connection capacity as proof that the full Laravel and database path can sustain the same load
Opening screen for Kevin's Journey, the WGG 2026 Wawasan Kebangsaan participant game.
Participant experience: the decision-game entry screen that frames the audience journey before voting begins.
Implementation

What I built.

Built the participant-facing three-stage game, connected Laravel frontend and admin services, integrated Ably Pro with subscribe-only browser tokens, and implemented session-linked voting and result mapping. Also developed loader and landing-page components for the official WGG platform, while supporting the team's recruitment and administrative systems.

  • Built the mobile participant UI for landing, three decision stages, voting results, and the ending state from the event team's supplied narrative and visual assets.
  • Connected operator-controlled game state to participant browsers through the Ably channel and mapped backend state into the existing Blade/JavaScript UI engine.
  • Implemented a server-side token endpoint so browsers receive subscribe-only realtime access instead of exposing the full Ably API key.
  • Connected votes to the Laravel admin API using the signed-in participant identity, stage validation, voting-window checks, and one stored answer per participant, run, and stage.
System architecture +

Operator controls update the Laravel admin state → Ably broadcasts game-state changes → participant browsers render the active stage and timer. Participant votes follow a separate authenticated HTTP path through the Laravel frontend proxy → admin API → database → aggregate result state.

Results

Results, with context.

The WGG 2026 event delivery concluded in August 2026 with the official orientation experience, participant game flow, and realtime integration in place. The portfolio intentionally does not convert the approximately 1,300-person audience plan into a measured concurrent-user or performance claim without event telemetry.

3

Decision stages

Defined in the event concept and implemented in the participant flow.

30s

Voting window

Operator-triggered timer for each stage.

≈1,300

Orientation audience

Planned audience for the completed orientation program; not a separately verified concurrent-user measurement.

Lessons & next steps +
  • Realtime capacity is an end-to-end property: provider limits, polling, HTTP rate limits, database writes, fan-out, assets, and hosting all matter.
  • Operator events and participant votes should follow separate paths because their frequency, authorization, and failure modes differ.
  • Server-issued capability tokens are safer than exposing a full realtime API key in browser code.
Technical details

Under the hood.

Technologies & features +

Laravel / PHP / JavaScript / Blade / Ably Pro / MySQL

  • Operator-controlled landing, stage, result, and ending transitions
  • Three decision scenarios with two voting choices each
  • Synchronized 30-second voting windows
  • Ably-powered realtime game-state updates
  • Subscribe-only browser token authentication
  • Session-linked voting and duplicate-vote protection
  • Aggregate A/B percentages and majority result display
  • Polling fallback when the realtime connection is unavailable
Feature status & limitations +

Participant game flow

working

Landing, three stages, results, timer behavior, and ending flow are implemented and source-tested.

Ably realtime synchronization

working

Participant clients subscribe with server-issued limited tokens and receive operator/game-state events.

Approximately 1,300 concurrent audience capacity

unvalidated

The event was delivered, but a dedicated end-to-end load test or measured peak-concurrency record at approximately 1,300 users is not documented here.

Keep exploring.