All checks were successful
Create and publish a Docker image / build-and-push-image (push) Successful in 39s
62 lines
2.1 KiB
Markdown
62 lines
2.1 KiB
Markdown
# 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 you want to group
|
|
stops together from multiple gtfs sources (i.e. NJT/SEPTA data for Trenton Transit
|
|
Center) or wish to combine multiple stops that are nearby into one location for
|
|
easier tracking.
|
|
|
|
|
|
```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.
|