No description
Find a file
Nicholas Orlowsky 3f68335eb4
All checks were successful
Create and publish a Docker image / build-and-push-image (push) Successful in 39s
cleanup and filter support
2026-02-21 15:26:48 -05:00
.direnv cleanup and filter support 2026-02-21 15:26:48 -05:00
.gitea/workflows just add data loader here 2025-09-12 19:58:41 -04:00
libseptastic cleanup and filter support 2026-02-21 15:26:48 -05:00
web cleanup and filter support 2026-02-21 15:26:48 -05:00
.envrc live tracking and filter 2025-09-19 21:39:31 -04:00
.gitignore ignore env 2025-07-06 20:49:58 -04:00
docker-compose.yml init commit 2025-07-06 20:49:07 -04:00
Dockerfile cleanup and filter support 2026-02-21 15:26:48 -05:00
README.md cleanup and filter support 2026-02-21 15:26:48 -05:00
shell.nix cleanup and filter support 2026-02-21 15:26:48 -05:00

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.
- 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.