A UI for testing live GTFS feeds
  • TypeScript 96.7%
  • HTML 1.7%
  • JavaScript 0.7%
  • Shell 0.6%
  • Dockerfile 0.2%
  • Other 0.1%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Max Katz-Christy c337e9b5f0
Some checks failed
Build and Deploy / build (push) Failing after 29s
Vulnerability scan / vuln-scan (push) Successful in 8s
chore(release): bump version 0.18.1 -> 0.19.0
2026-10-01 00:41:51 +02:00
.forgejo/workflows ci: check out from the public Forgejo URL in the vuln scan 2026-09-30 20:01:17 +02:00
.githooks chore(vendor): adopt yard-master's vendor-check and the five-column table 2026-09-12 16:04:57 +02:00
.github/workflows ci: add osv-scanner vulnerability gate on GitHub and Forgejo Actions 2026-09-30 19:49:43 +02:00
.vite/deps ci: correct local dir 2026-04-24 01:25:19 +02:00
public feat(seo): static intro, structured data, and a PNG social card 2026-09-27 01:13:20 +02:00
scripts ci: add osv-scanner vulnerability gate on GitHub and Forgejo Actions 2026-09-30 19:49:43 +02:00
src fix: load the maplibre worker from a Vite-built URL 2026-10-01 00:14:49 +02:00
.cz.toml chore(release): bump version 0.18.1 -> 0.19.0 2026-10-01 00:41:51 +02:00
.dockerignore Build and publish a site image instead of copying into a shared volume 2026-08-18 01:44:43 +02:00
.gitignore chore: gitignore CURRENT_PLAN.md 2026-09-12 12:40:34 +02:00
.gitkeep initial commit 2026-04-17 16:01:01 +02:00
CHANGELOG.md chore(release): bump version 0.18.1 -> 0.19.0 2026-10-01 00:41:51 +02:00
CLAUDE.md chore(deps): repin interlocking to v3.3.0 2026-09-26 10:04:15 +02:00
Dockerfile Build and publish a site image instead of copying into a shared volume 2026-08-18 01:44:43 +02:00
LICENSE.txt initial commit 2026-04-17 16:01:01 +02:00
nginx.conf fix(nginx): return 404 for unknown paths instead of the app 2026-09-27 01:13:17 +02:00
package.json docs: replace README template with setup, release and license 2026-09-30 21:37:13 +02:00
pnpm-lock.yaml feat(map)!: move to interlocking v4.0.0 and maplibre-gl 6 2026-09-30 19:27:31 +02:00
pnpm-workspace.yaml build: upgrade CI to pnpm 11 (pin @11.20.0, allowBuilds via pnpm-workspace.yaml) 2026-08-04 01:11:11 +02:00
postcss.config.js feat: scaffold Vite + Tailwind v4 + DaisyUI v5 toolchain 2026-04-17 17:35:41 +02:00
README.md docs: replace README template with setup, release and license 2026-09-30 21:37:13 +02:00
tsconfig.json feat(map)!: move to interlocking v4.0.0 and maplibre-gl 6 2026-09-30 19:27:31 +02:00
VENDORED.md refactor: build the shell on interlocking's shared modules 2026-09-24 15:05:05 +02:00
vite.config.js feat(seo): static intro, structured data, and a PNG social card 2026-09-27 01:13:20 +02:00

Test Track

A static frontend for visualizing GTFS Realtime feeds. Deployed at viz.rt.gtfs.zone.

A Vite/TypeScript/daisyUI app with MapLibre. It loads a GTFS schedule and reads the realtime feeds cafe-car serves: https://rt.gtfs.zone in production, http://localhost:8000 (the music-student stack) under pnpm dev.

pnpm install
pnpm dev          # vite on :8080
pnpm typecheck
pnpm build
pnpm vendor:check # diff vendored files against their source repo, per VENDORED.md
pnpm vuln         # osv-scanner vulnerability gate

git config core.hooksPath .githooks   # once per clone; runs vendor:check pre-commit

Shared modules come from interlocking, a git dependency. What is still hand-copied from other repos is listed in VENDORED.md.

Releasing

cz bump        # on main; tags vX.Y.Z
git push origin main --tags
git push github main --tags

CI builds on the tag, pushes the image by digest and records that digest in deploy-gtfs-rt/sites/kustomization.yaml; ArgoCD rolls it out.

License

AGPL-3.0-or-later, see LICENSE.txt.