You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
eta ee587a13dc k8s: don't linkerd on port 3000 4 years ago
atoc-msn Bump chrono from 0.4.4 to 0.4.5 5 years ago
darwin-types nrod, darwin-types: fix connection and v16 parsing 4 years ago
doc check some items off the todo list :D 4 years ago
docker web: add crate to build system 4 years ago
k8s k8s: don't linkerd on port 3000 4 years ago
ntrod-types ntrod-types: more robust test including 4 years ago
osms-darwin osms-web: fix problem station correction, add list of problem stations 4 years ago
osms-db osms-web: add platform support to train and movement search views 4 years ago
osms-db-setup setup, nrod, web: fix config failures, again 4 years ago
osms-nrod setup, nrod, web: fix config failures, again 4 years ago
osms-web web: osm-signal => trainsplorer 4 years ago
tspl-fahrplan fahrplan: return 400 for invalid paths 4 years ago
tspl-fahrplan-updater fahrplan-updater: temporarily patch out timestamp check 4 years ago
tspl-gcs fahrplan-updater, gcs: add new crates to store fahrplan updates in GCS 4 years ago
tspl-nennen web: working station suggestions 4 years ago
tspl-nrod zugfuhrer: add Darwin endpoints, completing (?) Darwin support 4 years ago
tspl-sqlite sqlite: add cache_size and wal_autocheckpoint pragmas 4 years ago
tspl-util zugfuhrer, util: refactor time query, actually include migration 4 years ago
tspl-verknupfen web: working movement search 4 years ago
tspl-web web: working movement search 4 years ago
tspl-zugfuhrer tspl-zugfuhrer: don't murder the rest of the app when syncing trains 4 years ago
.dockerignore docker: work around broken cargo clean 4 years ago
.gcloudignore *: fix ignore files 4 years ago
.gitignore web: skeleton code with most of the stuff from osms-web 4 years ago
.travis.yml meta: name change! 4 years ago
Cargo.lock zugfuhrer: add experimental live broadcast mechanism 4 years ago
Cargo.toml web: add crate to build system 4 years ago
LICENSE add licensing information [ci skip] 5 years ago add HMP README 4 years ago add irc logs to readme 4 years ago
bors.toml setup bors 5 years ago
cloudbuild.yaml k8s, gcp: add tspl-web k8s file, autodeploy in CI 4 years ago verknupfen: fix incorrect ID handling 4 years ago

the trainsplorer (aka osm-signal)

Build Status IRC chat @ #trainsplorer on freenode IRC chat logs GNU AGPLv3 licensed

What is this?

This is an in-development project that processes Network Rail's Open Rail Data feeds - absorbing all sorts of information about train schedules, and keeping a record of current and historic live train data. The eventual end goal of the project is to link this information into OpenStreetMap geodata, in order to provide cool things like a live map of train locations (approximately, that is), predictions on level crossing opening & closing times, and the ability to find out which trains are going to pass any location on the railway at any given time. It's all written in Rust as well, because Rust is cool.

However, it's very much not done yet! Watch this space for further stuff! Also, feel free to join the chatroom (#trainsplorer on, if you'd like to discuss the project (or anything about trains in general, really). (We also keep logs for that chatroom, in case you're interested in seeing what we've been up to.)

What are all these moving parts?

This repository contains many individual Rust crates. Here's a short overview of what they do:

  • atoc-msn: parses the Master Station Names (MSN) file from the Rail Delivery Group's Industry Data dataset
  • ntrod-types: parses data from the Network Rail open data feeds, specifically the SCHEDULE, Train Movements, reference data, and VSTP feeds
  • osms-db: the main database library for the project; handles storing data into and retrieving data from a PostgreSQL database, as well as performing some other handy utility functions, such as navigating between two points on the railway
  • osms-db-setup: builds on osms-db, and contains a utility for loading data into the database in the first place
  • osms-nrod: connects to the Network Rail STOMP messaging service and the National Rail Enquiries Darwin feed, and processes real-time train data, storing it in the database using osms-db
  • osms-darwin: used for testing the Darwin feed
  • osms-web: a fancy webserver with lots of buttons to press that enables people to admire the wonderful collections of data in the database
  • doc: that's not a crate, that's a directory containing mostly incoherent design notes and the like

Can I have some screenshots?

Yes! That's what osms-web is for, after all. Here you go:

'search for trains' interface' movement search interface train details schedule details


All crates in this repository are free software: you can redistribute them and/or modify them under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

The atoc-msn, national-rail-departures, and ntrod-types crates are also licensed under Apache 2.0 and MIT terms. This means that you can use these crates (but only these crates) under AGPLv3, MIT, or Apache 2.0 at your option.