Project Awesome project awesome

Visualizations > GTFS Viz

A web app that visualizes GTFS Data on the browser at scale without a backend on the client side using duckdb-wasm .

Package 43 stars GitHub

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

duckdb -unsigned
INSTALL gtfs FROM 'https://gabrielahn.github.io/gtfs-viz';
LOAD gtfs;
-- After loading GTFS data into 'stops' and 'pathways' tables:
SELECT * FROM gtfs_init();

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

Back to Transit