|
All checks were successful
Create and publish a Docker image / build-and-push-image (push) Successful in 5m41s
|
||
|---|---|---|
| .direnv | ||
| .gitea/workflows | ||
| libseptastic | ||
| web | ||
| .envrc | ||
| .gitignore | ||
| docker-compose.yml | ||
| Dockerfile | ||
| README.md | ||
| shell.nix | ||
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.
- 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, feel free to check it out.