Bridge from Amtrak's Train Tracker to the GTFS RT system through MQTT (mimicking actual vehicles posting data)
- Python 99.4%
- Dockerfile 0.5%
| Filename | Latest commit message | Latest commit date |
|---|---|---|
|
All checks were successful
Build / build (push) Successful in 13s
- Rename REGISTRY_USER to DEPLOY_USER and REGISTRY_TOKEN to DEPLOY_TOKEN to match the shared gtfs.zone credential naming |
||
| .forgejo/workflows | ||
| scripts | ||
| src/hell_gate_bridge | ||
| tests | ||
| .env.example | ||
| .gitignore | ||
| .mcp.json | ||
| .pre-commit-config.yaml | ||
| CLAUDE.md | ||
| Dockerfile | ||
| LICENSE.txt | ||
| Makefile | ||
| pyproject.toml | ||
| README.md | ||
| uv.lock | ||
Hell Gate Bridge
Sidecar worker that polls an upstream live tracker (Amtrak or buswhere/Columbia
County), resolves each vehicle to a GTFS trip, and POSTs positions + per-stop
trip-updates to the cafe-car ingest API. Select the source with SOURCE.
Overview
One process runs one source (SOURCE=amtrak|buswhere); deploy one container per
source. Each source polls its upstream tracker, resolves the vehicle to a GTFS
trip instance via the shared GtfsResolver, and hands provider-neutral
VehicleUpdates to publisher.py, which POSTs them to cafe-car. cafe-car serves
the resulting GTFS-RT feeds; schedule-foamer loads the static schedules the
resolver matches against.
Running Locally
cp .env.example .env # edit as needed
uv sync
python -m hell_gate_bridge.main
Development
uv sync # install dependencies
ruff check . # lint
ruff format . # format
pre-commit install # install git hooks (run once after clone)