For all of your transit "crayon" needs, edit GTFS feeds to your hearts content with this web editor for GTFS static feeds. Inspired by geojson.io, this is meant to be a simple static site where you can upload, edit, and download files.
  • TypeScript 95.9%
  • HTML 2.6%
  • JavaScript 1%
  • CSS 0.3%
  • Shell 0.2%
Find a file
Max Katz-Christy b55a2916a5
All checks were successful
Build and Deploy / build (push) Successful in 26s
chore(release): bump version 0.16.1 → 0.17.0
2026-05-12 00:54:43 +02:00
.claude docs: allow claude to do some forgejo 2026-03-31 10:23:15 +02:00
.forgejo/workflows ci: switch to pnpm 2026-05-11 03:24:44 +02:00
.husky refactor: strengthen husky 2026-03-29 10:07:31 +02:00
docs docs: we do have feed_info 2026-04-22 01:48:42 +02:00
public feat(atlas): add generate-atlas-data script and commit atlas-feeds.json 2026-04-06 18:56:31 +02:00
scripts feat(atlas): add generate-atlas-data script and commit atlas-feeds.json 2026-04-06 18:56:31 +02:00
src refactor: simplify ShapesManager types and file picker 2026-05-12 00:32:47 +02:00
.cz.toml chore(release): bump version 0.16.1 → 0.17.0 2026-05-12 00:54:43 +02:00
.gitignore docs: rm CURRENT_PLAN.md 2026-04-07 16:34:33 +02:00
.mcp.json build: set up forgejo mcp 2026-03-30 09:44:28 +02:00
.prettierrc working again 2025-09-17 02:57:03 +02:00
audit-ci.json Add development tools and error visibility system 2025-09-19 14:21:16 +02:00
CHANGELOG.md chore(release): bump version 0.16.1 → 0.17.0 2026-05-12 00:54:43 +02:00
CLAUDE.md build: move to pnpm 2026-05-05 01:19:22 +02:00
commitlint.config.js feat(development): use semantic-release and related tools 2025-10-05 12:20:42 +02:00
CONTRIBUTING.md refactor: finish renaming to subdomain 2026-03-19 01:10:10 +01:00
eslint.config.js refactor: strengthen husky 2026-03-29 10:07:31 +02:00
knip.config.ts fix(knip): restore knip.config.ts, remove dead deps and exports 2026-04-05 19:04:03 +02:00
LICENSE mostly working 2025-09-17 03:41:33 +02:00
lighthouserc.js Add development tools and error visibility system 2025-09-19 14:21:16 +02:00
package.json build: move to pnpm 2026-05-05 01:19:22 +02:00
playwright.config.js initial commit 2025-09-16 02:52:37 +02:00
pnpm-lock.yaml build: move to pnpm 2026-05-05 01:19:22 +02:00
postcss.config.js add object view 2025-09-18 01:31:12 +02:00
README.md docs: add GTFS implementation status table and README link 2026-04-05 17:28:35 +02:00
rollup.config.js daisyui nav bar 2025-09-22 05:53:34 +02:00
tailwind.config.js add schedules and daisyui 2025-09-21 09:48:52 +02:00
test-metadata.js add gtfs reference with zod 2025-09-19 12:48:39 +02:00
timetable-loaded.png add missing files and bugfixes 2025-10-05 11:46:37 +02:00
tsconfig.json Add development tools and error visibility system 2025-09-19 14:21:16 +02:00
vite.config.js build: add git-describe 2025-10-05 13:06:33 +02:00

GTFS.zone

A web-based GTFS (General Transit Feed Specification) editor inspired by geojson.io. Upload, visualize, edit, and export GTFS transit data with no login required.

Features

  • 📁 File Upload: Drag-and-drop or button upload for GTFS ZIP files
  • 🌐 URL Loading: Load GTFS feeds directly from URLs
  • 🗺️ Interactive Map: Visualize stops and routes on an interactive map
  • ✏️ Text Editor: Edit GTFS files with syntax highlighting
  • 📦 Export: Download modified GTFS as ZIP file
  • 📱 Responsive: Works on desktop and mobile devices

Quick Start

# Install dependencies
npm install

# Start development server
npm start

# Run tests
npm test

# Build for production
npm run build

Technology Stack

  • Frontend: Vanilla JavaScript (ES6 modules)
  • Mapping: Leaflet.js
  • Editor: CodeMirror 6
  • Build: Rollup with Tailwind CSS
  • Testing: Playwright

Todo List - Future Features

Core Functionality

  • GTFS Validation: Integrate MobilityData GTFS validator
  • Advanced Error Handling: Better user feedback for parsing errors
  • Undo/Redo: Text editor history management
  • File Templates: Pre-configured GTFS file templates
  • Bulk Operations: Multi-file editing capabilities

User Experience

  • Dark Mode: Toggle between light and dark themes
  • Keyboard Shortcuts: Editor shortcuts for power users
  • Progress Indicators: Loading states for large files
  • Tour/Onboarding: First-time user guidance
  • Recent Files: Quick access to recently edited feeds

Data Visualization

  • Route Visualization: Color-coded route lines on map
  • Stop Clustering: Performance optimization for dense stop networks
  • Service Calendar: Visual representation of service patterns
  • Statistics Dashboard: Feed statistics and data quality metrics
  • 3D Visualization: Elevation and terrain integration

Advanced Editing

  • Smart Autocomplete: Context-aware field suggestions
  • Relationship Validation: Real-time foreign key validation
  • Batch Import: CSV import from external sources
  • Field Mapping: Map external data to GTFS fields
  • Version Control: Track changes and revert functionality

Performance & Scale

  • Streaming Parser: Handle very large GTFS files
  • Web Workers: Background processing for heavy operations
  • Caching Strategy: Improve load times for repeated operations
  • Memory Optimization: Better garbage collection for large datasets

Integration & Export

  • Multiple Formats: Export to JSON, GeoJSON, KML
  • API Integration: Connect to transit agency APIs
  • Real-time Data: GTFS-Realtime feed integration
  • Share Links: Generate shareable URLs for feeds
  • Embed Widget: Embeddable map widget for websites

Quality & Standards

  • GTFS Extensions: Support for GTFS-Flex, GTFS-Fares v2
  • Accessibility: Full WCAG 2.1 compliance
  • Internationalization: Multi-language support
  • Print Support: Printable route maps and schedules
  • Offline Mode: Service worker for offline editing

Developer Experience

  • Plugin System: Extensible architecture for custom features
  • API Documentation: Comprehensive developer docs
  • TypeScript: Type safety and better IDE support
  • Component Library: Reusable UI components
  • Performance Monitoring: Real-time performance metrics

GTFS Implementation Status

Not all GTFS Schedule files have dedicated views — see docs/gtfs-implementation-status.md for a full breakdown of which files are fully supported, partially supported (table editor only), or not yet supported.

Releasing

Deployments are triggered by pushing a version tag. The Forgejo CI will build and copy the output to the server.

cz bump              # bumps version, updates changelog, creates tag (run on main only)
git push --follow-tags

Contributing

  1. Fork the repository
  2. Create a feature branch
  3. Make your changes
  4. Add tests for new functionality
  5. Run npm run lint and fix any issues
  6. Submit a pull request

License

MIT License - see LICENSE file for details.