Bridge from Amtrak's Train Tracker to the GTFS RT system through MQTT (mimicking actual vehicles posting data)
  • Python 99.4%
  • Dockerfile 0.5%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Max Katz-Christy 262587e9cc
All checks were successful
Build / build (push) Successful in 13s
ci: use DEPLOY_USER and DEPLOY_TOKEN for registry auth
- Rename REGISTRY_USER to DEPLOY_USER and REGISTRY_TOKEN to DEPLOY_TOKEN to
  match the shared gtfs.zone credential naming
2026-08-18 02:23:48 +02:00
.forgejo/workflows ci: use DEPLOY_USER and DEPLOY_TOKEN for registry auth 2026-08-18 02:23:48 +02:00
scripts chore: remove em-dashes from comments and docs 2026-08-04 19:59:23 +02:00
src/hell_gate_bridge chore: remove em-dashes from comments and docs 2026-08-04 19:59:23 +02:00
tests chore: remove em-dashes from comments and docs 2026-08-04 19:59:23 +02:00
.env.example docs: refresh env docs for SOURCE dispatch, drop stale MQTT/Redis 2026-07-24 15:45:51 +02:00
.gitignore chore: remove em-dashes from comments and docs 2026-08-04 19:59:23 +02:00
.mcp.json chore: copier update to v0.1.0 2026-04-18 01:50:21 +02:00
.pre-commit-config.yaml feat: copier copy 2026-04-17 12:19:52 +02:00
CLAUDE.md chore: remove em-dashes from comments and docs 2026-08-04 19:59:23 +02:00
Dockerfile feat: copier copy 2026-04-17 12:19:52 +02:00
LICENSE.txt feat: copier copy 2026-04-17 12:19:52 +02:00
Makefile feat: copier copy 2026-04-17 12:19:52 +02:00
pyproject.toml feat(amtrak): scrape rider alerts and sync them to cafe-car 2026-08-03 22:04:10 +02:00
README.md chore: drop copier scaffolding remnants 2026-07-31 20:13:45 +02:00
uv.lock feat(amtrak): scrape rider alerts and sync them to cafe-car 2026-08-03 22:04:10 +02:00

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)