TrainPulse: Live-Zugkarte Schweiz (Grundgerüst)

Fahrplan-Aufbereitung (Bahnfilter + pfaedle), GTFS-RT-Abruf,
Positionsberechnung entlang der Strecke, Weboberfläche mit
Karte/Satellit, Proxmox-LXC-Installation.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01X48pE4bzjHej8w9HyZXCjb
This commit is contained in:
Guido
2026-10-21 14:59:08 +02:00
co-authored by Claude Opus 5.5
commit d92dac4a00
17 changed files with 1292 additions and 0 deletions
+39
View File
@@ -0,0 +1,39 @@
<!doctype html>
<html lang="de">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>TrainPulse</title>
<link rel="stylesheet" href="https://unpkg.com/maplibre-gl@5.24.0/dist/maplibre-gl.css">
<link rel="stylesheet" href="style.css">
<script src="https://unpkg.com/maplibre-gl@5.24.0/dist/maplibre-gl.js"></script>
<script src="https://unpkg.com/pmtiles@4.5.0/dist/pmtiles.js"></script>
<script src="https://unpkg.com/@protomaps/basemaps@5.7.2/dist/basemaps.js"></script>
</head>
<body>
<div id="map"></div>
<header class="card" id="bar">
<h1>TrainPulse</h1>
<div class="seg" role="group" aria-label="Hintergrund">
<button id="btn-map" aria-pressed="true">Karte</button>
<button id="btn-sat" aria-pressed="false">Satellit</button>
</div>
<ul class="legend">
<li><i style="--c:var(--ok)"></i>pünktlich</li>
<li><i style="--c:var(--d1)"></i>3–6′</li>
<li><i style="--c:var(--d2)"></i>6–15′</li>
<li><i style="--c:var(--d3)"></i>&gt;15′</li>
<li><i style="--c:var(--na)"></i>ohne Echtzeit</li>
</ul>
<p id="status">Lade …</p>
</header>
<aside class="card" id="panel" hidden>
<button id="close" aria-label="Schliessen">×</button>
<div id="detail"></div>
</aside>
<script src="app.js"></script>
</body>
</html>