Show HN: When is the next Caltrain? (minimal webapp)

34 eschluntz 25 8/6/2025, 3:50:09 PM erikschluntz.com ↗
I was frustrated with the existing caltrain websites / apps, so I made a super minimalist one to answer the actual question I have: how long until the next train?

If you're in SF it grabs the next southbound trains, otherwise, the next northbound.

Comments (25)

thot_experiment · 6h ago
I have a command line app for this somewhere I wrote a few years back when I was commuting on Caltrain a lot, I should dig it up and publish it. It had some extra pathfinding/fuzzy search stuff. I almost always have my bike with me and I wanted to cover the edge cases where it's faster to bike to a nearby station to catch a bullet or where you can take a train the wrong direction a stop or two for the same purpose.

I wish there a maps app that would build entire itineraries taking into account that you have a bike with you, and ideally your average expected biking speed. It's so annoying to plan any sort of multi-transit itinerary in the bay, you always have to piece things together yourself or get stuck with some nonsense that takes 30% longer than it needs to.

Of course all of this could also be resolved if we had a sane transit system with short intervals.

xd1936 · 4h ago
Does Transit[1] not do this? It suggests routes including walking and biking when I input my destination...

1. https://transitapp.com/

lindig · 7h ago
The public transport service in Hannover/Germany once had a screensaver that you could configure to show the next departure from your nearest station. I thought that was clever marketing. Today you probably could implement this as a web service.
FredPret · 6h ago
Screensavers can / could ping an API?

That train schedule seems like a cool idea in and of itself though.

simoncion · 6h ago
In the Windows 95 days (and probably in the Windows 2000 days, and maybe also today) "all" a screensaver was was an .exe renamed to -if memory serves- .scr.

There may have been some special interface that the program being run was expected to conform to so the screensaver subsystem would invoke it, but (IIRC) a screensaver could do anything an ordinary program could do. (That was the big reason for being cautious about where/who you got your screensavers from.)

rconti · 5h ago
I like how simple and minimalist this is!

Another great similar solution is the Caltrain Companion iOS app. The main screen I use is "Arriving Trains" which uses your current location to tell you when the next trains arrive in each direction, how far along they are on their route, etc. The data is realtime.

nektro · 6h ago
app hard dies if it's unable to get your location. was really expecting the "full schedule" link to show an input box to pick a station
eschluntz · 5h ago
How else m I going to geotarget you with ads? /s
nilsbunger · 6h ago
Very cool. Would be good if it also shows whether it's a local train or limited or express, and/or which stations it stops at.
eschluntz · 6h ago
bullet trains should be displayed in red, but I haven't tested it yet at the right time and I've been too lazy to write tests with mocked time / gps :)
a2dam · 5h ago
I've been looking into doing this as a Home Assistant integration so I can put it in a little dashboard by the door. Can you describe how you built this a bit more? It's exactly the kind of data that should be easy to grab, but isn't.
eschluntz · 4h ago
https://github.com/eschluntz/eschluntz.github.io/blob/gh-pag...

copy and pasted into a spreadsheet from the website, then claude wrote a little script to convert it into js

<no commitment that this file will stay up to date, use at your own risk, etc etc>

mslate · 6h ago
While cool, this does not incorporate real-time data, just the static schedule.

I've explored this--you need 511 API access to obtain real-time data, and to conceal your API key you need to stand up a web application.

Cool proof-of-concept, need to take it to the next level!

aaronbrethorst · 5h ago
For anyone interested in getting the aforementioned access, you can find the 511 request URL here: https://www.transit.land/feeds/f-sf~bay~area~rg~rt

GTFS-RT data isn't a lot of fun to work with directly, though, so I'd recommend that you use an intermediary like OneBusAway (OBA) to interpret the data and give you a nicer to use API.

You can find more about OBA here: https://onebusaway.org

and our GitHub organization is here: https://github.com/onebusaway

Our docker images repo has pretty good docs about running a server: https://github.com/OneBusAway/docker

And the SDKs can all be found here: https://developer.onebusaway.org/api/sdk

(n.b. I've been a volunteer on the project for years and am currently serving as the part time exec director of the nonprofit behind OBA.)

eschluntz · 5h ago
I thought about this, but I've seen several times where the signs say that the train is running late, but it's actually there and leaves perfectly on time!

The schedule has been much more reliable since the electrification

redsh · 3h ago
What was the prompt and how are you hosting it? :)
PaulHoule · 7h ago
I am not in the area so I had to click on the thing to view all schedules, I would say it is super slick, I like it.
bkettle · 6h ago
For me the “all schedules” link is just the schedule on the official Caltrain website (which I actually quite like)
npinsker · 7h ago
Thanks, this'll be a nice little timesaver!
eschluntz · 6h ago
Thanks :)
aeternum · 6h ago
Closest station: San Francisco

But there are two SF stations

eschluntz · 6h ago
"22nd st" shows up separately
andreyk · 6h ago
haha nice, the official caltrain schedule is a bit of a hassle to parse...
klinquist · 4h ago
https://caltrain.live is pretty nice (I developed it, along with the Caltrain Companion iOS app)
ac29 · 2h ago
love the design, though at the moment the AI summary of a train that is "17 minutes late" is "10-15 minutes late"