feat(rail): add a Rail layer with keyless live trains

Live trains from 30 keyless operator feeds: GPS positions from 29 and
Irish Rail's station reports, shown as the operators publish them. 28
work out of the box; Renfe long and medium distance and KTMB appear once
their pack is built, because their vehicles name no route.

Packs are opt-in (scripts/build-rail-paths.mjs): the operator's own
route lines, stop names, next stops and trip-update delays for live
trains. Nothing downloads when the app starts, no train is placed from a
timetable, and no request carries a deployer's key.
This commit is contained in:
Denis Groshev committed 2026-11-11 16:06:22 +01:00
1 parent 14db73f201
commit 830c080803
114 files changed
+26639 -26

No files matched your search

+8
View File
@@ -352,3 +352,11 @@ GEMINI_CHAT_MODEL=gemini-3.5-flash-lite
# the free plan). After that Local says the daily limit is reached.
# Raise it on a paid plan.
# WORLDNEWSAPI_DAILY_READS=30
# Rail layer: every feed is keyless, so nothing needs setting. Packs are an
# opt-in extra for live trains (the operator's lines, stop names, next stops):
# scripts/build-rail-paths.mjs (--feed <id> ... or --all) writes path and
# schedule packs, and the server reads them from this directory
# (default .cache/rail-paths). The build reads it from its own environment,
# not from this file: export it, or pass the same folder as --out.
# RAIL_PATHS_DIR=