Real-time Zurich tram departure board for Raspberry Pi display. Almost 100% vibe-coded.
- Real-time delays from official GTFS-RT API
- Two stops: Roswiesen (Line 7) and Heerenwiesen (Line 9)
- Live countdown showing minutes until actual departure
- Auto-refresh every 30 seconds
- Clean interface optimized for always-on display
-
Install dependencies:
pnpm install
-
Create
.envfile with your GTFS-RT API key:cp .env.example .env
Get your API key from opentransportdata.swiss
-
Start the server:
node server.js
See RASPBERRY_PI.md for complete instructions on deploying to Raspberry Pi with auto-start and kiosk mode.
Edit server.js to change stops and lines:
const STOPS = {
roswiesen: {
name: 'Roswiesen',
stopId: '8591325:0:10000',
line: '7'
},
heerenwiesen: {
name: 'Heerenwiesen',
stopId: '8591181:0:10001',
line: '9'
}
};- Schedules: transport.opendata.ch
- Real-time delays: opentransportdata.swiss GTFS-RT API
MIT
