Skip to content

gabrielAHN/gtfs-viz

Repository files navigation

GTFS Viz

Deploy on Railway npm

Visualize, analyze, and edit GTFS transit data entirely in-browser with DuckDB WASM. No backend required.

GTFS Viz Demo

Features

  • Upload GTFS zips or load example datasets — all processing client-side
  • Interactive maps and tables for stations, stops, and pathways
  • Edit stations, stops, and pathway connections with live preview
  • Pathfinding between station parts with traversal times
  • Export edited data back to GTFS CSV format
  • CLI with local DuckDB database and browser dashboard
  • DuckDB extension installable from any DuckDB instance

Quick Start

Web App

Visit gtfs-viz-production-f1a4.up.railway.app or run locally:

yarn install --ignore-engines && yarn build:extension && yarn dev

CLI

GTFS Viz CLI Demo

npm install -g @gabrielahn/gtfs-viz-cli
gtfs-viz import /path/to/feed.zip
gtfs-viz stations --name "Park"
gtfs-viz station "Park Street"
gtfs-viz examples                    # See all commands

DuckDB Extension

The CLI and web app use the GTFS DuckDB extension for all station analysis, pathway queries, and pathfinding. See the extension docs for standalone usage.

Project Structure

packages/
  duckdb-extension/ DuckDB extension (C++ native + TypeScript API + SQL)
  web/              React web application (DuckDB WASM, Deck.gl, TanStack)
  cli/              CLI tool (npm: @gabrielahn/gtfs-viz-cli)

Development

yarn install --ignore-engines
yarn build              # Build all (extension -> web -> cli)
yarn dev                # Web dev server at localhost:5173
yarn build:extension    # Build DuckDB extension TS layer
yarn build:cli          # Build CLI only
yarn check              # Type-check all packages

Deploy

Railway via railpack.json: yarn build outputs to dist/, served by Caddy as SPA.

Links

About

A project renders at scale GTFS files on the client side only without backend

Topics

Resources

License

Stars

Watchers

Forks

Sponsor this project

Contributors