Easy-to-manage touch screens
무료 오픈소스 터치스크린으로 USB 설정 가이드, 드래그‑드롭 편집기, 로컬 제어를 제공하며 Home Assistant용으로 제작되었습니다
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기메이커가 쓴 소개는 위의 한 줄이 전부입니다. 더 자세한 내용은 저장소 README에서 읽을 수 있습니다. 저장소 README ↗
README 전체를 불러오는 중입니다.
README 전문 보기 ↗A live map of passenger trains across the United States and Canada: Amtrak, VIA and Brightline plus the commuter railroads that publish real-time positions, and railroads in twenty more countries: those whose live positions are public, Italy's from its timetables, and those (Australia's New South Wales and Victoria, New Zealand, Sweden, Switzerland) whose free keys switch on live positions or delays, placed from their timetables until then; all on one map.
Live site: https://0kweather.github.io/trainsheet/
Grouped by country. The only keys are the free ones marked "free key", which the relay sends once set (the list is under Turning on the relay feeds). Until its key is set, a keyed railroad that has a public timetable is placed from that timetable, its page saying so ("Placed from the timetable until its API key is set"), and switches to its live feed the moment the relay has the key. Every other railroad uses public data that needs no key, registration or approval.
| Railroad | Region | Feed | Needs |
|---|---|---|---|
| Amtrak, Brightline (and VIA Rail, below) | Nationwide | Amtraker API | — |
| MBTA Commuter Rail | Boston | MBTA V3 API | — |
| Long Island Rail Road | New York | MTA GTFS-realtime | — |
| Metro-North | New York | MTA GTFS-realtime (positions estimated from predicted times) | — |
| SEPTA Regional Rail | Philadelphia | SEPTA TrainView | relay |
| RTD commuter rail (A, B, G, N) | Denver | RTD GTFS-realtime | relay |
| FrontRunner | Salt Lake City | UTA GTFS-realtime | relay |
| CapMetro Rail | Austin | CapMetro GTFS-realtime | relay |
| Tri-Rail | South Florida | Tri-Rail GTFS-realtime | relay |
| Metra | Chicago | Metra GTFS-realtime | relay + free key |
| NJ Transit Rail | New Jersey | NJ Transit DepartureVision (scraped; positions estimated from predicted times) | relay |
| CT Rail (Hartford Line, Shore Line East) | Connecticut | CTDOT's timetable (scripts/build_ct.py), with delays, tracks and cancellations from MTA TrainTime's New Haven board; positions estimated | direct |
| Caltrain, SMART | Bay Area | 511 SF Bay | relay + free key |
| Metrolink | Los Angeles | Metrolink GTFS-realtime | relay + free key |
| MARC | Maryland | MARC GTFS-realtime | relay |
| Virginia Railway Express | Northern Virginia | VRE GTFS-realtime | relay |
| Sounder | Seattle | Sound Transit GTFS-realtime (OneBusAway; its terms ask for a free key, sent once set) | relay |
| South Shore Line | Chicago–South Bend | South Shore's ETA SPOT tracker, plus its timetable (scripts/build_schedules.py) | direct |
| SunRail | Orlando | sunrail.com's train status, plus its timetable | direct |
| Rail Runner Express | New Mexico | Timetable only (no live data published); positions estimated | direct |
| ACE (Altamont Corridor Express) | Stockton–San Jose | 511 SF Bay GTFS-realtime | relay + free key |
| Coaster, Sprinter | San Diego | NCTD GTFS-realtime through Swiftly; until the key is set, NCTD's timetable, positions estimated | relay + free key |
| A-train | Denton | DCTA GTFS-realtime through Swiftly; until the key is set, DCTA's timetable, positions estimated | relay + free key |
| Trinity Railway Express, TEXRail, DART Silver Line | Dallas–Fort Worth | Each railroad's timetable; positions estimated (no public live data) | direct |
| WES Commuter Rail | Portland | TriMet GTFS-realtime; until the key is set, TriMet's timetable | relay + free key |
| WeGo Star | Nashville | WeGo's timetable; positions estimated (not in WeGo's live feed) | direct |
| Alaska Railroad | Anchorage–Fairbanks | The Alaska Railroad's timetable; positions estimated | direct |
| Railroad | Region | Feed | Needs |
|---|---|---|---|
| VIA Rail | Nationwide | Amtraker API | — |
| GO Transit | Toronto | GO Tracker (scraped) plus GO's timetable (scripts/build_go.py) | relay |
| UP Express | Toronto | Metrolinx's timetable; positions estimated (not in GO Tracker) | direct |
| exo | Montréal | exo.quebec's live map (scraped by the relay), plus exo's timetable | relay |
| Polar Bear Express (Ontario Northland) | Cochrane–Moosonee | Ontario Northland's timetable; positions estimated | direct |
| West Coast Express | Vancouver | TransLink GTFS-realtime; until the key is set, TransLink's timetable (TransLink's live feeds may carry buses only, so it may stay timetable-placed) | relay + free key |
Each of these is a plug-in (scripts/railroads/<id>.py, parsed by js/railroads/<id>.js), and its stations, departures, first trains and track live in data/regions/<region>/ and data/rail/<region>.geojson, fetched only when the map, a search or a shared link reaches that country. Its feed is polled while the area its stations cover (padded by a quarter) is in view, or one of its trains is open or tracked; a search or a shared link fetches every such feed once, and every region's stations and timetables. A railroad whose trains run abroad covers a wide area, so its feed is polled from next door too: ZSSK's reaches Vienna, Berlin and Hamburg, Vy's Copenhagen and Gothenburg. A viewer who neither searches nor looks outside the US and Canada asks for none of it.
| Country | Railroad | Region | Feed | Needs |
|---|---|---|---|---|
| Argentina | Trenes Argentinos (Roca, Sarmiento, Mitre, San Martín, Belgrano Sur, Tren de la Costa) | Buenos Aires | SOFSE's station arrivals (GPS positions), 21 stations gathered by the relay; Buenos Aires Data's timetable for stations and lines only (it ran out in 2020, so no "later today") | relay |
| Australia | Queensland Rail City network | Brisbane, South East Queensland | Translink GTFS-realtime (rail) | relay |
| Australia | Adelaide Metro trains | Adelaide | Adelaide Metro GTFS-realtime, kept to the train routes by the relay | relay |
| Australia | Sydney Trains, NSW TrainLink (intercity lines, XPT, Xplorer, Endeavour, Hunter) | New South Wales | Transport for NSW GTFS-realtime (Sydney Trains v2 with each train's set type, NSW Trains v1); placed from TfNSW's timetable until the key is set | relay + free key |
| Australia | Metro Trains Melbourne, V/Line | Victoria | Transport Victoria GTFS-realtime (Metro's whole train, V/Line's lead unit); placed from its timetable until the key is set | relay + free key |
| Belgium | SNCB/NMBS (IC, L, P, the S trains of Brussels, Antwerp, Ghent, Liège and Charleroi, EuroCity Brussels–Rotterdam, the trains to Luxembourg, Lille, Maastricht, Aachen and Roosendaal), and DB's ICE, ÖBB's Nightjet and SNCF's OUIGO Train Classique into Belgium | Belgium | Placed from SNCB's timetable (GTFS on Belgium's National Access Point) and DELFI's for the ICEs, with an opened train's delays, platforms and composition, car by car, from iRail | relay (for an opened train's details) |
| Bulgaria | БДЖ – Пътнически превози (Бърз влак, Пътнически влак, Крайградски пътнически влак, Международен бърз влак, the Rhodope narrow gauge) | Bulgaria | Placed from BDZ's timetable (GTFS on Bulgaria's National Access Point, BGNAP) and moved by the NAP's GTFS-realtime trip updates and positions (each position is the timetable's place shifted by BDZ's reported delay, so it's read for the delay) | relay |
| Czechia | České dráhy, RegioJet, Leo Express, Arriva vlaky, GW Train Regio | Czechia | The Oběhy project's GTFS and GTFS-realtime of the national CZPTT timetable and SŽ's positions | relay |
| Estonia | Elron |
"Relay" feeds don't send the CORS headers a browser needs, and keyed feeds can't put their key in a public web page, so both go through a tiny Cloudflare Worker (below). Without it, the site still shows everything marked "—" or "direct" (fetched by each browser itself, as KTMB is, or placed from the timetable).
Northstar (Minneapolis) ended rail service; its route is now a bus, so it isn't shown. Ontario Northland's Northlander is in its timetable file ahead of its return but isn't carrying passengers yet, so only the Polar Bear Express is shown. Trains that Amtrak runs or that share Amtrak's feed (e.g., Amtrak's own Hartford Line and Valley Flyer trips) do show up.
Not yet covered:
scripts/build_schedules.py, rebuilt weekly into data/schedules/ and indexed in data/departures.json); Brightline publishes none, and Tri-Rail's ran out in 2025.js/disruptions.js). A stretch runs between the stations the notice names (or lists), trimmed to stations only the affected lines serve, so track other trains still use isn't marked.It's a static site with no build step:
python3 -m http.server 8000
then open http://localhost:8000. To try the relay feeds locally, run python3 scripts/dev_relay.py and set window.TRAINSHEET_RELAY = "http://127.0.0.1:8787" in config.js.
Create a free Cloudflare account and install Wrangler (npm i -g wrangler). Deploy with Wrangler, not by pasting into the dashboard: relay/worker.js imports the plug-ins' feeds from relay/feeds/index.js (generated by scripts/gen_registry.py) and their fetchers in relay/feeds/, which only Wrangler bundles.
From relay/, run wrangler deploy.
Optional keys (all free), set with wrangler secret put NAME:
METRA_API_TOKEN: https://metra.com/developersAPI_511_KEY: https://511.org/open-data/token (Caltrain + SMART)METROLINK_API_KEY: https://metrolinktrains.com/about/gtfs/SWIFTLY_NCTD_KEY: COASTER and SPRINTER, through Swiftly; request a key at https://www.goswift.ly/realtime-api-key (agency NCTD, granted at NCTD's discretion)SWIFTLY_DCTA_KEY: the A-train, through Swiftly; DCTA's "Swiftly API Request Form" at https://www.dcta.net/resources/open-data (the relay assumes Swiftly's agency key dcta: check it against the key's email)TRIMET_APP_ID: https://developer.trimet.org/appid/registration/ (WES)TRANSLINK_API_KEY: https://developer.translink.ca (West Coast Express; 1,000 requests a day, so the relay keeps its answer three minutes)TFNSW_API_KEY: https://opendata.transport.nsw.gov.au (an application with the Public Transport realtime APIs; Sydney Trains, NSW TrainLink)VIC_OPENDATA_KEY: (Metro Trains Melbourne, V/Line; sent as the header)The relay only serves the feeds listed in relay/worker.js and relay/feeds/index.js (it is not an open proxy) and caches each one for 15 seconds, or for the time a plug-in's RELAY entry sets (ttl, 15 seconds to ten minutes). That copy is kept in the memory of one Worker instance (the edge cache does nothing on workers.dev), so a feed's server sees a few requests per ttl for each instance serving viewers: about one per busy Cloudflare location, sometimes more, however many people each serves. Plug-in feeds send an identifying User-Agent. A Cron Trigger (every five minutes, in wrangler.toml) records the tracks posted at the big terminals in the Worker's Durable Object, for usual tracks; it keeps three weeks.
Accounts keep a rider's trips and tracked trains in a Supabase project (free tier: 50,000 monthly users; a free project pauses after a week with no visits). The site stays static: the page talks to Supabase directly with the project's public key, and row-level security in the database lets each account read and write only its own rows. Until config.js names a project, nothing changes: no Sign in, no extra download. Even then, js/account.js and Supabase's library (supabase-js, from jsDelivr) load only for someone who opens Sign in or is already signed in.
supabase/schema.sql (the trips and user_state tables, their policies, and delete_my_account()).https://0kweather.github.io/trainsheet/, and add the same under Redirect URLs (plus http://localhost:8000/ to try it locally). Sign-in links come back to the page's own address.Or enter this code in Trainsheet: {{ .Token }}.https://<project>.supabase.co/auth/v1/callback, as its authorized redirect URI. Paste the client ID and secret into Authentication › Providers › Google.providers in config.js. Apple needs a paid Apple Developer account.config.js, set window.TRAINSHEET_ACCOUNTS to the project's URL and its anon key (Project Settings › API) and push. The anon key is meant to be public; never put the service_role key in the site.Before inviting riders, publish a privacy policy saying what's kept (email, trips, tracked trains) and how to delete it: Google and Facebook both ask for one, and riders in the EU are covered by the GDPR.
index.html, css/, js/ the site (MapLibre GL + OpenFreeMap basemap)
js/sources.js one adapter per feed → common train objects
js/gtfsrt.js small dependency-free GTFS-realtime decoder
data/mta.json LIRR/Metro-North station + branch lookups
data/rail.geojson US and Canadian passenger main lines (USDOT NTAD) tagged by network, merged into continuous lines
data/stations.json stations for every railroad (NTAD, Amtraker, agency GTFS)
js/stations.js station merging and "next trains" lookups
js/delays.js delays the GPS proves but the railroad hasn't posted
js/consist.js fleet rosters and typical equipment for a train's cars
js/carmodels.js side-view drawings of each locomotive and car model
js/carart.js drawing toolkit: trucks, windows, doors, pantographs, scale
js/estimate.js rail index: snapping to track and routing along it
js/networks.js rail network names and colors
js/account.js accounts: signing in, a rider's trips, tracked trains on every device (loaded on demand)
supabase/schema.sql the accounts' tables and row-level security, run once in the Supabase project
scripts/ rebuild the data files; local dev relay
scripts/railroads/ one plug-in per railroad outside the built-in set: agencies, feeds, timetable, track
js/railroads/ their parsers (index.js generated by scripts/gen_registry.py)
data/regions/, data/rail/ stations, departures, first trains and track of each country outside the US and Canada
relay/ Cloudflare Worker for CORS-less and keyed feeds
relay/feeds/ the plug-ins' relay feeds (index.js generated) and their own fetchers
Deploys run through .github/workflows/pages.yml, which cuts the timetables of railroads placed from them into hourly files (scripts/slice_schedules.py, into data/schedules/now/, not committed: run it once to try them locally, else the full timetables are used) and stamps every file reference (?v=dev in the source) with the commit ID so browsers never mix cached files from different versions.
Refresh the static data occasionally with python3 scripts/build_static.py, python3 scripts/build_stations.py (.github/workflows/stations.yml also rebuilds the stations every Monday afternoon), then python3 scripts/build_rail.py (it uses the stations), and python3 scripts/build_trips.py (stop and trip lookups for Caltrain, SMART, Metrolink, RTD and CapMetro; it uses the stations too); the workflow runs neither of those two, so run them by hand when a station changes.
Map data © OpenStreetMap contributors, tiles by OpenFreeMap. Train data from the agencies listed above. Rail lines from the USDOT/BTS National Transportation Atlas Database; outside the US and Canada, from OpenStreetMap (© OpenStreetMap contributors, ODbL), built by scripts/build_rail.py.
Data outside the US and Canada, credited on the map with each railroad:
| Estonia |
| Elron's own live map (elron.ee), plus the ministry's timetable |
| relay |
| Finland | VR (long distance), commuter trains (HSL and VR) | Finland | Fintraffic's Digitraffic train locations and GTFS-realtime trip updates | relay |
| France | SNCF: TGV INOUI, TGV Lyria, OUIGO, OUIGO Train Classique, Intercités, Intercités de Nuit, every region's TER (Train Jaune, Mont-Blanc Express and the Nantes–Châteaubriant tram-train among them), the RER A–E and Transilien H–V; Transdev's ZOU! trains (Marseille–Toulon–Nice); DB's ICEs and Eurostar | France, Île-de-France | Placed from SNCF's national timetable (GTFS, with its NeTEx for TER regions and OUIGO Train Classique), SNCF Transilien's, Eurostar's and ZOU!'s (transport.data.gouv.fr), and moved by SNCF's, Eurostar's and ZOU!'s GTFS-realtime trip updates (delays, cancellations, skipped stops; no positions are published); Île-de-France's RER and Transilien by Île-de-France Mobilités' PRIM times, placed from the timetable until its key is set | relay (+ free key for Île-de-France) |
| Germany | DB Fernverkehr (ICE, IC, EC, ECE), DB Regio in every state, the S-Bahns (Berlin, Hamburg, München, Stuttgart, Rhein-Main, Rhein-Ruhr, Köln, Nürnberg, Mitteldeutschland, Dresden, Rhein-Neckar, Hannover, Rostock, Bremen and others), the private regional railways (metronom, erixx, NordWestBahn, ODEG, eurobahn, National Express, HLB, vlexx, SWEG, Arverio, agilis, BRB, Die Länderbahn and many more, the Harz and Saxon narrow gauge), FlixTrain, European Sleeper, Eurostar, and the neighbours' trains in Germany (ÖBB's Railjets and Nightjets, ČD, PKP, DSB, SBB's ECEs, WESTbahn) | Germany | Placed from DELFI's national timetable (gtfs.de's rail GTFS), without train numbers; an opened or tracked train's delay, platform and DB train number at its next station from DB's Timetables API once its key is set | relay + free key (for an opened train's details) |
| Greece | Hellenic Train | Athens–Thessaloniki axis | railway.gov.gr's public live train tracker (read by the relay), with its timetable as Transitous's GTFS | relay |
| Ireland | Irish Rail (InterCity, DART, Commuter) | Ireland | Iarnród Éireann's realtime API (positions from signalling), plus the NTA's timetable | relay |
| Israel | Israel Railways | Israel | The Ministry of Transport's SIRI positions as Hasadna's Open Bus Stride API keeps them (about two minutes behind) | relay |
| Italy | Trenitalia (Frecce, Intercity, regional trains, Trenitalia Tper's among them), Italo | Italy | Placed from the national timetables Italy's National Access Point publishes (NeTEx, cciss.it) | — |
| Italy | Trenord, South Tyrol's trains (SAD, ÖBB), EAV (Naples), ARST (Sardinia), Trento–Malè–Mezzana | Lombardy, South Tyrol, Campania, Sardinia, Trentino | Placed from each one's open GTFS timetable | — |
| Latvia | Vivi | Latvia | The Pieturas app's Baltic GTFS-realtime (Vivi's trains only), plus Vivi's timetable | relay |
| Luxembourg | CFL (RE, RB, IC, and the TER and TGV to Thionville and Metz) | Luxembourg | Placed from Luxembourg's national timetable (GTFS, data.public.lu); the trains over the Belgian border come with SNCB's | — |
| Malaysia | KTMB (ETS, Intercity), KTM Komuter | Peninsular Malaysia | data.gov.my GTFS-realtime (positions only; fetched by each browser, since the API allows 4 requests a minute per address) | direct |
| Netherlands | NS (Intercity, Intercity direct, Sprinter), the regional railways (Arriva, Blauwnet, RRReis, R-net), and the international trains (ICE, Eurostar, Nightjet, EuroCity, European Sleeper, GoVolta, and VIAS's, eurobahn's, DB's and NMBS's trains over the border) | Netherlands | Placed from OVapi's national timetable (GTFS) and moved by its GTFS-realtime trainUpdates (NS's InfoPlus delays, cancellations and skipped stops for every railway's trains) | relay |
| New Zealand | AT Metro, Te Huia | Auckland, Hamilton–Auckland | Auckland Transport GTFS-realtime (trains only, with their units); placed from AT's timetable until the key is set | relay + free key |
| New Zealand | Metlink (Kāpiti, Hutt Valley, Melling, Johnsonville, Wairarapa) | Wellington | Metlink GTFS-realtime (rail); placed from Metlink's timetable until the key is set | relay + free key |
| Norway | Vy, Go-Ahead Norge, Flytoget, SJ Nord | Norway | Entur GTFS-realtime (SJ Nord sends no positions, and Entur's GTFS-realtime has none of its delays yet: placed from its timetable, shown as scheduled) | relay |
| Portugal | CP – Comboios de Portugal (Alfa Pendular, Intercidades, InterRegional, Regional, Urbanos de Lisboa, Porto and Coimbra), Fertagus | Portugal | Placed from CP's and Fertagus's timetables (GTFS on Portugal's National Access Point) | — |
| Romania | CFR Călători (InterCity, InterRegio, InterRegio Noapte, Regio, Regio-Expres, Regio Metropolitan), Regio Călători, InterRegional Călători, Transferoviar Călători, Astra Trans Carpatic, Softrans, Ferotrafic TFI | Romania | Placed from Informatica Feroviară's yearly timetables (each railroad's XML on data.gov.ro, converted here; where data.gov.ro can't be reached, as it can't from North America, Transitous's GTFS of the same files, its running days put right) | — |
| Slovakia | ZSSK, RegioJet, Leo Express | Slovakia | Community GTFS-realtime (jbb.ghsq.de, station reports), plus ŽSR's timetable | relay |
| Spain | Renfe (AVE, Avlo, Alvia, Avant, Euromed, regional), Renfe Cercanías and Rodalies | Spain | Renfe's open GTFS-realtime | relay |
| Spain | FGC (Barcelona–Vallès, Llobregat–Anoia) | Catalonia | FGC's Geotren positions on its open-data portal | relay |
| Sweden | SJ, Snälltåget, Tågab, VR Snabbtåg (ex-MTRX), Arlanda Express, SL Pendeltåg, Mälartåg, Östgötapendeln, Tåg i Bergslagen, Norrtåg, Värmlandstrafik, X-Tåget, Pågatåg, Öresundståg, Västtågen, Krösatåg | Sweden | Trafikverket's open API (train positions and announcements, joined by the relay); placed from Samtrafiken's GTFS Sweden 3 timetable until the key is set | relay + free key |
| Switzerland | SBB (long distance; regional, S-Bahns, Léman Express, TILO), BLS, Südostbahn, Thurbo, RegionAlps, TPF, Rhätische Bahn, Matterhorn Gotthard Bahn, Zentralbahn, MOB, the other metre-gauge and rack railways (RBS, Appenzeller Bahnen, BOB, WAB, Jungfraubahn, Gornergrat, Rigi, Pilatus and more), and DB's, ÖBB's and SNCF's trains into Switzerland (ICE, TGV Lyria, Railjet, Nightjet, TER) | Switzerland | Placed from the national timetable (GTFS, opentransportdata.swiss) and moved by its GTFS-realtime trip updates (delays, cancellations, skipped stops; no positions are published), with an opened train's formation, car by car, from the Train Formation Service; placed from the timetable until the keys are set | relay + free keys |
DELFI_GTFS in scripts/railroads/germany.py).trips, sharing a journey id; run supabase/schema.sql again on a project made before connections to add that column); a train you track to your stop is added to History when it gets there, as the trip you'd planned if there was one. Your tracked trains follow you to every device you sign in on. Settings › Your trips › Account deletes the account and everything in it.js/delays.js).KeyIdAT_API_KEY: https://dev-portal.at.govt.nz (subscribe to the Realtime API; AT Metro, Te Huia; 35,000 calls a week, so the relay keeps its answer a minute)METLINK_API_KEY: https://opendata.metlink.org.nz (Metlink)TRAFIKVERKET_API_KEY: https://data.trafikverket.se (Sweden)CH_GTFSRT_KEY: https://api-manager.opentransportdata.swiss (GTFS-RT; Switzerland's delays and cancellations; 2 requests a minute, so the relay keeps its answer a minute)CH_FORMATION_KEY: https://api-manager.opentransportdata.swiss (Train Formation Service; an opened train's cars; 50 requests a minute and 20,000 a day, so the relay asks at most 30 a minute and keeps each answer five minutes)DB_CLIENT_ID and DB_API_KEY: https://developers.deutschebahn.com (DB API Marketplace: an application subscribed to the Timetables API, free plan; Germany's opened trains' delays and platforms, 60 requests a minute, so the relay asks at most 50 a minute, keeps a station's planned hour six hours and its changes 90 seconds)IDFM_PRIM_KEY: https://prim.iledefrance-mobilites.fr (create an account, then a token; Île-de-France's RER and Transilien times, SIRI Lite estimated-timetable, one request a line: 14 every two minutes, so the relay keeps its answer two minutes; check the quota the token comes with)Every other railroad outside the US and Canada needs none. Until a railroad's key is set, it is placed from its timetable.
Put the Worker's URL in config.js (window.TRAINSHEET_RELAY = "https://trainsheet-relay.<you>.workers.dev") and push.
img/logos/) are the railroads' trademarks, from the public-domain versions on Wikimedia Commons.