alurail alurail
Home & Hub Live Journey Map Timetables Route Search Special Trains (KLB) Train Directory Fleet Database Station Directory Facilities & Depots Operating Areas Safety & Incidents Updates & News Photo Gallery alurail pass
User Suite
Map Home Timetables Fleet
alurail alurail
Hub / Home Directory & Insights
Live Journey Map Crowdsourced Live Journey
Timetables Train Schedules
Search Routes Direct & Transit Finder
Extraordinary Trains (EOT) Extraordinary Trains
Train Directory Master Train Fleet
Fleet Database Rolling Stock Info
Stations Facilities & Hubs
Facilities Depots & Workshops
Operating Areas Daop & Divre
Incidents & Safety (EOE) Historical Rail Incidents
Updates & News Railway Dispatches & Insights
Photo Gallery Curated Collection
alurail pass Supporter Perks
About alurail Platform Info & Vision
Sign In / Account
Live Radar Open Source FAQ / Help Engine Guide (/git) Contact
🇮🇩 ID (Bahasa) Live Radar alurail Pass Submit Photo
Home Engineering & System Architecture (/git)
System Architecture & Engineering Whitepaper

How the alurail Map Engine Was Engineered

A technical deep-dive into the geospatial topology, dead-reckoning kinematics, bundle journey stitching, and static index pipelines powering real-time railway simulation in Indonesia.

Active Edition: GAPEKA 2025 Engine: Viterbi Kinematic Mesh v2.8 Datastore: Pre-compiled Static Spatial Indices Status: Production Stable
3,673 Daily Schedules Intercity, commuter, airport, & freight services synchronized daily.
750+ Railway Stations Geocoded, topological station nodes mapped across Java & Sumatra.
< 45ms P95 Pipeline Latency Sub-second client-side frame interpolation without database thrashing.
100% Static Determinism Zero runtime geospatial re-projection queries on high-traffic endpoints.
1. Track Topology & ORM Mesh 2. Dead Reckoning & Motion 3. Through-Train Unification 4. Static Spatial Caching 5. UI Tokens & Performance 6. Open Source Stack

1. Cartographic Mesh & Topological Track Ingestion

From OpenRailwayMap raw geometry to directed, station-snapped vector graphs

Mapping railway networks across an archipelagic country presents unique spatial challenges. In standard road mapping, nodes and edges adhere to omnidirectional planar graphs. Railways, however, obey rigid physical constraints: narrow turning radii based on the track gauge (1,067 mm Cape Gauge and 1,435 mm Standard Gauge for Whoosh), crossover switches, and strict directional block sections dividing tracks.

To resolve uncoordinated raw polyline segments between stations into clean, continuous corridors without third-party geocoding API rate limits or latency, the engine utilizes a multi-stage pre-processing pipeline:

  • Raw Geometry Ingestion: Ingest track vector polylines from OpenRailwayMap (ORM) raw nodes and OpenStreetMap contributors.
  • AABB Spatial Bounding Pruning: Prunes candidate track polylines using fast 2D Axis-Aligned Bounding Box (AABB) checks before computing costly spherical trigonometric distances, reducing lookup complexity from $O(N)$ to $O(\log N)$.
  • Station Node Snapping: Snapping WGS-84 coordinates of official passenger stations to nearest rail coordinates within a 500-meter buffer, calculating offset for sidings/shunting tracks.
  • Track Gauge Constraints: Distinguishing between 1,067 mm Cape Gauge (Java & Sumatra mainlines), 1,435 mm Standard Gauge (Whoosh HSR and Makassar-Parepare), and dual-gauge segments (e.g. Solo Purwosari).
  • Graph Topology Dijkstra / Connection Verification: Pre-computing permissible paths between sequential station milestones defined in official GAPEKA timetable manifests.
OPTIMIZATION: FAST AABB BOUNDING BOX SPATIAL PRUNING PHP / O(log N) SPATIAL PRUNING
function isPointNearSegmentAABB(float $pLat, float $pLon, array $segA, array $segB, float $bufferDeg = 0.005): bool {
    // Quick rectangular boundary check before executing trigonometric formulas
    $minLat = min($segA[0], $segB[0]) - $bufferDeg;
    $maxLat = max($segA[0], $segB[0]) + $bufferDeg;
    $minLon = min($segA[1], $segB[1]) - $bufferDeg;
    $maxLon = max($segA[1], $segB[1]) + $bufferDeg;

    return ($pLat >= $minLat && $pLat <= $maxLat && $pLon >= $minLon && $pLon <= $maxLon);
}
ALGORITHM: VECTOR DISTANCE BUFFER CALCULATION PHP / GEODESY
function geodesicTrackSnap($nodeLat, $nodeLon, array $trackPolylinePoints, $toleranceMeters = 500.0) {
    $minDistance = 1e9;
    $snappedCoord = null;
    for ($i = 0; $i < count($trackPolylinePoints) - 1; $i++) {
        // Fast AABB pruning to bypass distant segments instantly
        if (!isPointNearSegmentAABB($nodeLat, $nodeLon, $trackPolylinePoints[$i], $trackPolylinePoints[$i+1])) {
            continue;
        }
        $dist = haversineSegmentDist($nodeLat, $nodeLon, $trackPolylinePoints[$i], $trackPolylinePoints[$i+1]);
        if ($dist < $minDistance && $dist <= $toleranceMeters) {
            $minDistance = $dist;
            $snappedCoord = projectPointOnSegment($nodeLat, $nodeLon, $trackPolylinePoints[$i], $trackPolylinePoints[$i+1]);
        }
    }
    return $snappedCoord ?: [$nodeLat, $nodeLon];
}

2. Dead Reckoning Kinematics & Motion Interpolation

Translating timetable manifests into continuous high-precision real-time coordinates

While airplanes use ADS-B and ocean vessels carry AIS transponders, most passenger trains in developing national networks operate without standardized public GPS beacons. To provide an intuitive live radar map that reflects actual operational conditions, the engine utilizes a robust kinematic dead-reckoning model.

Every active train is evaluated through real-time clock cycles:

  • The system queries the current active timetable block: origin departure ($t_{\text{dep}}$) to next station arrival ($t_{\text{arr}}$).
  • Proportional transit progress $\alpha \in [0, 1]$ is computed: $\alpha = \frac{t_{\text{now}} - t_{\text{dep}}}{t_{\text{arr}} - t_{\text{dep}}}$.
  • Rather than applying naive linear velocity ($v = s/t$), the engine applies an S-curve acceleration and deceleration curve taking into account the maximum allowable speed (TASPAT) for each section: accelerating out of origin station, cruising, and braking into destination.
  • The resulting milestone distance is projected onto the pre-sliced polyline segment, yielding exact latitude and longitude coordinates.
Hybrid GPS Field Casting
When passengers onboard transmit real-time telemetry via mobile application (Live Casting), the system smoothly transitions from dead-reckoning estimates to live raw sensor pings. A Viterbi filter matches raw GPS readings to track centerlines, absorbing sensor noise and drift before client-side broadcast.
KINEMATICS: S-CURVE SMOOTHSTEP INERTIA INTERPOLATION PHP / KINEMATIC KERNEL
function calculateKinematicProgress(float $tDepUnix, float $tArrUnix, float $tNowUnix): float {
    if ($tNowUnix <= $tDepUnix) return 0.0;
    if ($tNowUnix >= $tArrUnix) return 1.0;

    // Linear time progress alpha clamped to [0.0, 1.0]
    $alpha = ($tNowUnix - $tDepUnix) / ($tArrUnix - $tDepUnix);

    // Cubic Hermite smoothstep polynomial (3t^2 - 2t^3) emulating train mass, acceleration, and deceleration
    return $alpha * $alpha * (3.0 - 2.0 * $alpha);
}
HEADING: TANGENT BEARING ANGLE FOR CANVAS MARKER ORIENTATION JAVASCRIPT / SPHERICAL TRIGONOMETRY
function calculateTrackBearing(lat1, lon1, lat2, lon2) {
    const toRad = Math.PI / 180;
    const dLon = (lon2 - lon1) * toRad;
    const phi1 = lat1 * toRad;
    const phi2 = lat2 * toRad;

    const y = Math.sin(dLon) * Math.cos(phi2);
    const x = Math.cos(phi1) * Math.sin(phi2) - Math.sin(phi1) * Math.cos(phi2) * Math.cos(dLon);

    // Normalize forward azimuth bearing to [0, 360) degrees
    return (Math.atan2(y, x) * (180 / Math.PI) + 360) % 360;
}

3. Through-Train (Bundle) Unification Architecture

Resolving multi-segment operational train numbers into continuous physical consist journeys

In operational railway practice, many prominent train services change their operational train number midway through their journey due to reverse-direction terminal loops, regional operational splits, or historic route concessions.

For instance, KA Serayu operates between Kroya and Pasar Senen via Bandung, changing operational numbers in sequence (e.g. 283A → 284B). Historically, relational database lookups treated these as separate isolated journeys, showing confusing short runtimes (e.g. 5 hours) and incomplete segment maps instead of the genuine 9+ hour end-to-end corridor.

The engine resolves this through an operational bundling layer:

  • Sequential Leg Stitching: Grouping multi-leg rail journeys by physical consist identifier to preserve unified journey continuity.
  • Realistic Journey Metrics: Computing cumulative aggregate distance, aggregate stop counts, and complete origin-to-destination running duration.
  • Adaptive Prop View: Displaying the full unified master corridor on the main train fleet page while maintaining granular segment-specific geometry on individual schedule detail views.
DATA STRUCTURE: THROUGH-TRAIN CONSIST & SWITCHBACK STITCHING PHP / GRAPH STITCHING
class ThroughTrainCorridor {
    public string $consistCode;      // Physical train consist identifier
    public string $masterName;       // e.g. "KA Serayu"
    public array $legs = [];         // Sequential trip legs [ '283A' => [...], '284B' => [...] ]

    public function stitchContinuousPolyline(): array {
        $unifiedPolyline = [];
        foreach ($this->legs as $idx => $leg) {
            $coords = $leg['polyline'];
            // Normalize reverse terminal switchbacks (e.g. Kroya/Kiaracondong turn-around)
            if ($idx > 0 && !empty($unifiedPolyline)) {
                $lastVertex = end($unifiedPolyline);
                $headVertex = $coords[0];
                $tailVertex = end($coords);
                // If tail is closer to the previous leg endpoint than head, reverse sequence
                if (haversineDistance($lastVertex, $tailVertex) < haversineDistance($lastVertex, $headVertex)) {
                    $coords = array_reverse($coords);
                }
            }
            $unifiedPolyline = array_merge($unifiedPolyline, $coords);
        }
        return $unifiedPolyline;
    }
}

4. High-Throughput Static Spatial Caching

Delivering sub-millisecond response times without database bottlenecks during holiday traffic spikes

Serving thousands of concurrent transit fans tracking train movements during high-traffic periods (e.g. Lebaran and Year-End holiday operations) requires an architecture that avoids disk I/O and expensive spatial joins on the primary relational database.

The platform achieves this through an optimized spatial caching strategy:

  • Schedule Pre-compilation: When an active GAPEKA timetable edition is published or modernized, station-to-station corridor polylines, station stops, and running rosters are compiled into ultra-fast pre-serialized cache payloads.
  • Dual-Driver Storage Architecture: Local server NVMe memory serves as the primary sub-millisecond cache tier, with automatic synchronization to Cloudflare R2 Edge Storage to ensure resilience and global CDN availability.
  • Client-Side Map Mesh: High-performance client-side coordinate caching allows instant switching across 187 train services and 3,673 daily trips without recurring network requests.
PIPELINE: DETERMINISTIC ETAG & CONDITIONAL HTTP 304 CLIENT CACHING PHP / HIGH CONCURRENCY
function serveStaticSpatialPayload(string $indexKey, string $jsonPayload, int $maxAgeSeconds = 300): void {
    // Non-cryptographic fast 64-bit hash for ETag validation
    $etag = '"' . hash('xxh64', $jsonPayload) . '"';

    header('Content-Type: application/json; charset=UTF-8');
    header('ETag: ' . $etag);
    header("Cache-Control: public, max-age={$maxAgeSeconds}, stale-while-revalidate=600");

    // If client cache matches ETag, return 304 Not Modified immediately with 0 bytes body
    if (isset($_SERVER['HTTP_IF_NONE_MATCH']) && trim($_SERVER['HTTP_IF_NONE_MATCH']) === $etag) {
        http_response_code(304);
        exit;
    }

    echo $jsonPayload;
    exit;
}

5. Design Tokens & Frontend System Architecture

Zero heavy frameworks, clean CSS custom properties, and hardware-accelerated canvas mapping

The frontend UI is built purely with native web platform standards: semantic HTML5, pure CSS variables, and focused JavaScript modules, avoiding heavy client bundle overhead to ensure instant page load speeds and smooth navigation on mobile devices.

  • Adaptive CSS Variable Architecture: Dynamic token switching (--up-bg, --up-surface, --up-brand) provides unified dark and light theme consistency across all views.
  • Hardware-Accelerated Markers: Train markers and station dots utilize custom Leaflet SVG/canvas renderers, ensuring 60fps panning and zooming even on entry-level mobile devices.
  • Resilient Media Fallbacks: Cabin interior photography and fleet images seamlessly fall back to branded badges if remote assets are missing, preserving pristine visual hierarchy.
RENDERER: GPU-ACCELERATED WEB MERCATOR CANVAS PROJECTION JAVASCRIPT / SINGLE-PASS CANVAS RENDERER
function projectWGS84ToCanvasPixel(lat, lon, zoom, tileSize = 256) {
    // Project geographical WGS-84 coordinate into normalized Mercator screen-space pixel coordinates
    const sinLat = Math.sin(lat * (Math.PI / 180));
    const scale = tileSize * Math.pow(2, zoom);

    const pixelX = scale * ((lon + 180) / 360);
    const pixelY = scale * (0.5 - Math.log((1 + sinLat) / (1 - sinLat)) / (4 * Math.PI));

    return { x: Math.round(pixelX), y: Math.round(pixelY) };
}

6. Open-Source Geospatial Stack & Computational Foundations

Standing on the shoulders of the global open mapping community and rigorous mathematical graph theory

The alurail simulation engine is built on open standards and collaborative open-source technology. We recognize, formally attribute, and build directly upon these foundational open-source components:

  • OpenStreetMap (OSM) [ODbL 1.0]: Provides planetary geodetic coordinate grids, coastline boundaries, and baseline geographic terrain vectors.
  • OpenRailwayMap (ORM) [CC-BY-SA 2.0]: Supplies granular railway infrastructure vectors, switches, track gauge classifications (Cape Gauge 1,067mm and Standard Gauge 1,435mm), signals, and station yard track layouts.
  • PostgreSQL & PostGIS [GPL-2.0+]: Serves as the high-throughput spatial computing core, processing topology graphs, bounding-box spatial indexes, and Dijkstra / pgRouting shortest-path calculations.
  • Leaflet.js [2-Clause BSD]: Powers the lightweight client-side map canvas, GPU-accelerated coordinate projections, and smooth canvas marker renderers.
  • Chaikin Corner-Cutting Smoothing: Mathematically cuts sharp polyline vertices at 25% and 75% intervals over iterative passes, producing organic, curved railway track vectors matching real minimum turning radii ($R_{\text{min}} \ge 250\text{m}$).
  • Hidden Markov Model (HMM) Viterbi Filtering: Disentangles sensor emission probabilities ($p(z_t | x_t)$ assuming Gaussian error $\sigma \approx 10\text{m}$) from network transition probabilities ($p(x_t | x_{t-1})$ comparing topological track distance with Euclidean distance $|\Delta d|$), eliminating GPS drift when passenger trains traverse deep mountain cuttings or dense urban viaducts.
Explore Full Open Source Licenses & Attributions →
ALGORITHM: CHAIKIN PROCEDURAL CORNER-CUTTING CURVE SMOOTHING PHP / PROCEDURAL GEOMETRY
function chaikinCurveSmoothing(array $vertices, int $refinements = 2): array {
    if (count($vertices) < 3) return $vertices;

    for ($it = 0; $it < $refinements; $it++) {
        $refined = [$vertices[0]]; // Always preserve starting station origin
        for ($i = 0; $i < count($vertices) - 1; $i++) {
            $p0 = $vertices[$i];
            $p1 = $vertices[$i + 1];

            // Point Q: 75% P0 + 25% P1
            $q = [$p0[0] * 0.75 + $p1[0] * 0.25, $p0[1] * 0.75 + $p1[1] * 0.25];
            // Point R: 25% P0 + 75% P1
            $r = [$p0[0] * 0.25 + $p1[0] * 0.75, $p0[1] * 0.25 + $p1[1] * 0.75];

            $refined[] = $q;
            $refined[] = $r;
        }
        $refined[] = end($vertices); // Always preserve terminal destination
        $vertices = $refined;
    }
    return $vertices;
}

Need Further Information or Looking to Collaborate?

Our engineering team is actively open to geospatial data collaboration, transit research partnerships, and telemetry system integration. Connect with us directly via WhatsApp, email, or our official contact form.

WhatsApp (628998021757) alurail.web.id@gmail.com Contact Form
alurail alurail
Built upon GAPEKA 2025, visualized open-sourcedly with OpenRailwayMap and Leaflet.js. Powered by PostgreSQL (PostGIS, pgRouting), Dijkstra/A* Algorithms dan Viterbi Algorithm
Copyright ©️ 2024-2026 alurail by alula Made with 💗 from Pejaten, ID
Copyright ©️ 2024-2026 alurail by alula
Made with 💗 from Pejaten, ID

Community & Photographers

  • alurail Pass PRO
  • Submit Photo
  • User Suite
  • Curated Feed
  • Community Feed

Platform & Legal

  • About Platform
  • Terms & Conditions
  • Privacy Policy
  • Open Source Notices
  • FAQ / Help Center
Pass PRO PRO Upload Photo Suite Gallery
About
Terms
Privacy
License
FAQ
© 2026 alurail. All rights reserved.
alurail

alurail Legal & Info

About alurail

<h2>About AluRail</h2>

<p class="lead">
AluRail (Aluline TGV) is a free web-based platform that visualizes railway operations and train travel schedules across Indonesia. The service is available through <a href="https://aluline.id" target="_blank">aluline.id</a> and <a href="https://aluline.my.id" target="_blank">aluline.my.id</a>, developed independently by <strong>Alula</strong>
(<a href="https://alula.web.id" target="_blank">alula.web.id</a>) for railway enthusiasts (railfans) and passengers seeking a more intuitive understanding of train movements and timetable operations.
</p>

<h3>How It Works</h3>

<p>
AluRail transforms official <strong>GAPEKA 2025</strong> (Indonesia Railway Timetable Graph) data into an interactive geospatial visualization. Every train journey is reconstructed from scheduled departure and arrival times, station sequences, railway topology, and routing calculations to estimate how trains would move across the network.
</p>

<p>
Unlike conventional timetable viewers, AluRail continuously simulates train movement using a custom railway physics engine. The simulation considers various operational parameters including route geometry, train acceleration, braking, cruising speed, station dwell times, operational constraints, and other physical assumptions to estimate each train's position throughout its journey.
</p>

<p>
Whenever available, the platform also supports <strong>Crowdsourced Live Tracking</strong>. Passengers currently travelling on board may voluntarily share their GPS location. These telemetry reports are validated using map-matching algorithms and compared against the predicted GAPEKA route before being displayed to other users.
</p>

<h3>The Technology Behind AluRail</h3>

<ul>
<li><strong>PostgreSQL (PostGIS):</strong> Serves as the core geospatial database storing railway infrastructure, stations, and spatial relationships.</li>

<li><strong>Custom Railway Routing Engine:</strong> Implements graph-based routing algorithms including Dijkstra and A* to calculate railway paths, station connectivity, and operational routes.</li>

<li><strong>Railway Physics Engine:</strong> Simulates train movement by modelling acceleration, deceleration, cruising behaviour, station stops, speed restrictions, and travel progression based on timetable data.</li>

<li><strong>Viterbi Map-Matching:</strong> Validates crowdsourced GPS telemetry by matching noisy GPS observations onto the most probable railway track, improving live tracking reliability.</li>

<li><strong>Leaflet.js & OpenRailwayMap:</strong> Provide interactive map rendering and railway visualization layers.</li>
</ul>

<h3>Supported Railway Services</h3>

<p>
AluRail supports visualization for various railway services operating across Indonesia, including passenger, commuter, urban transit, heritage, and freight operations. Depending on data availability, the platform currently supports:
</p>

<ul>
<li>Intercity Passenger Trains (KA Antar Kota)</li>
<li>Whoosh High-Speed Railway</li>
<li>Commuter Line</li>
<li>Feeder Train Services</li>
<li>Local Passenger Trains</li>
<li>Freight Operations (Container, Cargo, Tanker, Coal, Cement and other freight services)</li>
<li>LRT Jakarta</li>
<li>LRT Jabodebek</li>
<li>LRT South Sumatra (Palembang)</li>
<li>Jakarta MRT</li>
<li>Ambarawa Heritage Railway</li>
</ul>

<p>
Additional railway operators and future services may be introduced as more infrastructure and timetable data become available.
</p>

<h3>Platform Features</h3>

<p>
AluRail combines timetable simulation, geospatial analysis, and live community participation into a single railway visualization platform. Key features include:
</p>

<ul>

<li>
<strong>Follow Mode</strong><br>
Automatically follows a selected train throughout its journey while continuously updating its estimated or live position.
</li>

<li>
<strong>Live GPS Cast</strong><br>
Passengers may voluntarily broadcast GPS telemetry while travelling onboard, allowing supported trains to display verified live positions instead of purely simulated movement.
</li>

<li>
<strong>Spotting Mode</strong><br>
Allows railfans to discover trains approaching nearby stations or railway crossings, making it easier to plan photography and train spotting activities.
</li>

<li>
<strong>Enhanced Railway Physics</strong><br>
Movement simulation considers railway gradient, elevation profile, track curvature, acceleration, braking, traction performance, speed restrictions, and operational constraints to produce more realistic train behaviour.
</li>

<li>
<strong>Detailed Route Analytics</strong><br>
Provides interactive charts including route elevation, curvature, gradient between stations, speed profile, and operational characteristics throughout the journey.
</li>

<li>
<strong>Train Information</strong><br>
Displays operational information about each service including operator, train category, route, schedule, formation details, and other service information.
</li>

<li>
<strong>Rolling Stock Database</strong><br>
Provides information about locomotives, EMUs, DMUs, coaches, wagons, and other railway vehicles used by supported services.
</li>

<li>
<strong>Coach & Class Information</strong><br>
Displays available passenger classes together with reference illustrations where available to help passengers identify onboard accommodation.
</li>
<li>
<strong>Adaptive Train Rendering</strong><br>
Train visualization automatically adjusts according to the current map zoom level. Different rendering modes are used to maintain smooth performance while displaying thousands of simultaneously simulated trains.
</li>

<li>
<strong>Train Filtering</strong><br>
Filter trains by service category such as Intercity, Commuter, High-Speed, Metro, LRT, Freight, Heritage, and other supported railway services.
</li>

<li>
<strong>Regional Filtering</strong><br>
Display trains operating within selected operational regions (Daerah Operasi / DAOP and other railway operational divisions) for easier monitoring.
</li>

<li>
<strong>Points of Interest (POI)</strong><br>
Explore railway-related locations including train spotting locations, photography viewpoints, railway landmarks, bridges, tunnels, stations, and other notable locations along the railway network.
</li>

<li>
<strong>Depots & Maintenance Facilities</strong><br>
View railway maintenance facilities including rolling stock depots, locomotive depots, maintenance workshops (Balai Yasa), stabling yards, and other operational infrastructure.
</li>

</ul>

<div class="disclaimer-box">
<h4>Disclaimer</h4>

<p>
<strong>AluRail is primarily a timetable simulation platform.</strong>
Unless a train is actively sharing verified Live Tracking data, all train positions displayed on the map are computational estimations generated from published schedules and the platform's railway physics engine.
</p>

<p>
Although the simulation attempts to realistically reproduce railway operations, actual train movements may differ significantly due to dispatching decisions, signal aspects, operational priorities, temporary speed restrictions, maintenance work, weather conditions, delays, early departures, extraordinary operations, GPS inaccuracies, or many other real-world factors that cannot always be observed by the platform.
</p>

<p>
Even when Live Tracking is available, GPS accuracy depends on user participation, mobile device quality, satellite reception, and local environmental conditions. Therefore, displayed positions should always be considered informational rather than authoritative.
</p>

<p>
<strong>This service must not be used as an official operational reference</strong> for travel planning, ticketing decisions, passenger information, or railway operations. Always refer to official PT Kereta Api Indonesia (Persero) information channels for accurate operational updates.
</p>

<p>
AluRail / Aluline TGV is an independent community project and is not affiliated with, endorsed by, partnered with, or officially associated with PT Kereta Api Indonesia (Persero), OpenStreetMap, OpenRailwayMap, or any other referenced organizations.
</p>
</div>

<p class="footer-note">
Made with ❣️ from Pejaten, Indonesia.
</p>

Terms of Use

<section id="terms-en" class="lang-content">
<h2>Terms of Service</h2>
<p class="effective-date"><strong>Effective Date:</strong> January 1, 2025 (Updated for GAPEKA 2025)</p>

<h3>1. Acceptance of Terms</h3>
<p>By accessing AluRail through aluline.id, aluline.my.id, and related subdomains (collectively, the "Service"), you acknowledge that you have read, understood, and agreed to these Terms of Service. If you do not agree, you must discontinue use of the Service.</p>

<h3>2. Independent Service</h3>
<p>AluRail is an independent community project developed by Alula. It is not affiliated with, endorsed by, or operated by any railway operator, government agency, or transportation authority unless explicitly stated.</p>

<h3>3. Nature of the Service</h3>
<p>The Service provides train schedule visualization, estimated train positions, operational simulations, and crowdsourced location validation based on publicly available information, GAPEKA data, and algorithmic processing. Displayed information may differ from actual railway operations.</p>

<h3>4. No Operational Guarantee</h3>
<p>Train movements, schedules, platform assignments, delays, cancellations, dispatching decisions, and operational conditions may change without notice. The Service must not be considered an official operational information source.</p>

<h3>5. Crowdsourced Contributions</h3>
<p>Users may voluntarily contribute GPS telemetry while onboard trains. Submission of fake GPS data, manipulated locations, automated submissions, spam, or attempts to interfere with system accuracy is strictly prohibited.</p>

<h3>6. Acceptable Use</h3>
<p>You agree not to misuse the Service, interfere with its infrastructure, reverse engineer protected components, exploit security vulnerabilities, scrape excessive data, or use automated systems that negatively impact platform availability.</p>

<h3>7. Intellectual Property</h3>
<p>Unless otherwise stated, the Service, its software, interface, branding, and original content remain the intellectual property of their respective owners. Open-source components remain governed by their own licenses.</p>

<h3>8. Availability</h3>
<p>The Service may be modified, suspended, restricted, or discontinued at any time without prior notice.</p>

<h3>9. Disclaimer ("AS IS")</h3>
<p>THE SERVICE IS PROVIDED "AS IS" AND "AS AVAILABLE" WITHOUT WARRANTIES OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, NON-INFRINGEMENT, ACCURACY, OR CONTINUOUS AVAILABILITY.</p>

<h3>10. Limitation of Liability</h3>
<p>To the fullest extent permitted by law, Alula shall not be liable for direct, indirect, incidental, consequential, special, or punitive damages arising from the use of or inability to use the Service, including travel decisions, delays, missed connections, financial loss, personal injury, or data loss.</p>

<h3>11. Changes to these Terms</h3>
<p>These Terms may be updated periodically. Continued use of the Service constitutes acceptance of the revised Terms.</p>

<h3>12. Contact</h3>
<p>Questions regarding these Terms may be directed through the official AluRail contact channels.</p>
</section>

<h3>Independent Service Disclaimer</h3>

<p>AluRail is an independent community-developed platform created by Alula for railway visualization, research, educational, and enthusiast purposes.</p>

<p>AluRail is <strong>not affiliated with, associated with, authorized by, endorsed by, sponsored by, supported by, maintained by, operated by, or officially connected with</strong> PT Kereta Api Indonesia (Persero), PT Kereta Commuter Indonesia, PT Kereta Api Logistik, PT Kereta Api Pariwisata, PT Kereta Cepat Indonesia China (Whoosh), MRT Jakarta, LRT Jabodebek, LRT Jakarta, LRT Sumatera Selatan (Palembang), their subsidiaries, affiliates, successors, government agencies, transportation authorities, or any other railway operators unless explicitly stated.</p>

<p>All company names, railway service names, station names, train names, logos, trademarks, service marks, brands, route names, and other intellectual property displayed within the Service remain the property of their respective owners and are used solely for identification, informational, interoperability, historical, mapping, educational, or descriptive purposes.</p>

<p>The visualization presented by the Service represents publicly available operational information, algorithmic estimations, historical references, and voluntary community contributions. It must not be interpreted as an official operational system, railway dispatching platform, passenger information system, or real-time control center operated by any railway company.</p>

Privacy Policy

<section id="privacy-en" class="lang-content">
<h2>Privacy Policy</h2>
<p class="effective-date"><strong>Last Updated:</strong> June 2026</p>

<h3>1. Privacy Commitment</h3>
<p>Your privacy is important to us. We collect only the information reasonably necessary to operate and improve the Service.</p>

<h3>2. GPS Collection</h3>
<p>Your GPS location is accessed only after you intentionally enable Live Tracking. Background location is never collected without your explicit action.</p>

<h3>3. Processing</h3>
<p>Submitted GPS telemetry is processed using routing algorithms including Viterbi matching against the railway network to validate train positions. Telemetry is not associated with your personal identity.</p>

<h3>4. Server Logs</h3>
<p>Standard server logs such as IP address, browser type, timestamps, and technical diagnostics may be collected for security, abuse prevention, troubleshooting, and performance monitoring.</p>

<h3>5. Data Retention</h3>
<p>Live telemetry is temporary and automatically expires after the associated trip ends unless longer retention is required for security investigations.</p>

<h3>6. Third Parties</h3>
<p>We do not sell or rent your GPS telemetry. Limited technical processing by infrastructure providers may occur solely for operating the Service.</p>

<h3>7. Security</h3>
<p>Reasonable technical and organizational safeguards are implemented, although no online system can guarantee absolute security.</p>

<h3>8. User Safety</h3>
<p>We discourage publicly sharing real-time GPS positions. Anonymous mode or pseudonyms are strongly recommended.</p>

<h3>9. Your Responsibility</h3>
<p>Use of Live GPS or spotting features is entirely voluntary and at your own risk.</p>
</section>

Open Source Notices

<section id="opensource-en" class="lang-content">
<h2>Open Source Notice</h2>
<p>AluRail is built upon numerous open-source technologies and open data projects. We sincerely thank the communities maintaining them.</p>
<ul>
<li><strong>PostgreSQL, PostGIS & pgRouting</strong> — Spatial database, GIS extension, and routing engine.</li>
<li><strong>OpenStreetMap & OpenRailwayMap</strong> — Railway infrastructure and mapping data under their respective licenses.</li>
<li><strong>Leaflet.js</strong> — Interactive mapping library.</li>
</ul>
<p>All trademarks, copyrights, and licenses belong to their respective owners. Use within AluRail does not imply endorsement by those projects.</p>
</section>
alurail Pass Prime GRATIS!
early access

alurail Pass Prime GRATIS!