Data & methodology

Learn how the dashboards combine ridership history with live vehicle data.

Ridership history

Daily and hourly ridership aggregates are sourced from data.gov.my datasets and refreshed by the automated build workflow.

Live train positions

GTFS-realtime feeds are proxied through the Cloudflare Worker to provide live vehicle positions without exposing API keys.

Forecast logic

Best/avoid windows are computed by comparing hourly baselines and recent-day ridership, then ranked to highlight lower-density periods.

Community reports

Crowd reports submitted through the Submit Report page are stored locally in your browser for quick reference.