# SEPTASTIC A fantastic way to ride SEPTA. This is a (hastily written) rust program that provides schedule information and live information for gtfs data feeds (though is specifically tailored to SEPTA). ## Roadmap - [] implement gtfs-rt instead of SEPTA's proprietary API - [] implement routing - [] implement a map to show location of vehicles - [] implement support for connecting legs of a Regional Rail trip - [] work on providing a better experience with non-SEPTA gtfs files - [] simple account system to save info such as work commute/fav routes - [] parse gtfs data ourselves instead of using library - [] support more of the gtfs specification ## Building The build system for this isn't extremely straightforward. I have a shell.nix that contains some shell utils specific to this project, but don't have a flake setup that would allow you to easily build. If you have a newer rust toolchain installed, you should be able to run this with Cargo. I also provide a Dockerfile you can use as the base for a dev container. ## Running There's a config file in this repository that has a format for specifying GTFS file locations as well as 'annotations' to those files to enrich them. Currently, the following annotations exist: - **multiplatform_stops:** used to combine multiple stops into one stop as though each 'sub-stop' is it's own platform. This is useful for when a transit authority (specifically one in southeastern PA) does not provide [stop_areas.txt](https://gtfs.org/documentation/schedule/reference/#stop_areastxt). ```yaml - id: 'WTC' name: 'Wissahickon Transit Center' platform_station_ids: - 'SEPTABUS_2' - 'SEPTABUS_31032' - 'SEPTABUS_32980' - 'SEPTABUS_32988' - 'SEPTABUS_32989' - 'SEPTABUS_32990' - 'SEPTABUS_32992' - 'SEPTABUS_32993' - 'SEPTARAIL_90220' ``` This project uses postgres (via sqlx) to store an archive of realtime data, though it is not required to run SEPTASTIC (all transit data is stored in-memory). --- I have an instance of this running at [septastic.net](https://septastic.net), feel free to check it out.