Drupal is a registered trademark of Dries Buytaert
Release: Leaflet 10.4.11 Minor update available for module leaflet (10.4.11). Release: Session Inspector 1.0.8 Minor update available for module session_inspector (1.0.8). Release: Migrate QA 2.0.4 Minor update available for module migrate_qa (2.0.4). Release: CKEditor Description List 3.0.0 Major update available for module ckeditor_descriptionlist (3.0.0). Release: FlowDrop 2.4.0 Minor update available for module flowdrop (2.4.0). Release: JWT Token Refresh 1.0.4 Minor update available for module jwt_token_refresh (1.0.4). Release: ConReg 1.0.0-beta1 First beta version released for module conreg (1.0.0-beta1). Release: AI Image Studio 1.0.0-beta8 New beta version released for module ai_image_studio (1.0.0-beta8). Usage Milestone: Statistics Counter Module statistics_counter crossed 1,000 active installs. Module Revived: Decoupled Router 2.0.7 Module decoupled_router updated after 11 months of inactivity (2.0.7).

This module displays real-time transit information from GTFS data on public information screens. It allows you to configure what information is shown, for which stops or routes, and offers features like offline resilience and staff annotations. The system is designed to be lightweight and bypass site theming for efficient display on various hardware.

Public information screens driven by GTFS data. GTFS Display renders live departures, service alerts, vehicle positions and staff annotations for any GTFS entity — one stop, a route, an agency, or a whole system — on hardware that is usually old, usually unattended, and often on a network that comes and goes.

Features

  • Display contexts. A configuration entity addresses a screen: what it shows, which entities, which variant, and how often it refreshes. Contexts deploy through configuration sync like anything else.
  • Variants. A skin and behaviour flag — lcd, eink, mobile — rather than a Drupal theme. Agency modules register their own, and the display shell attaches the matching library.
  • Annotations. Staff can attach a note to a stop, or substitute one entity for another, scoped to particular displays and to particular hours of the week.
  • Offline resilience. A service worker keeps the last good data on screen when the network drops, instead of showing an error to the street.
  • Coverage reporting, so you can see which entities have a display and which do not.
  • Displays render anonymously and bypass site theming, so a kiosk needs no session and inherits none of your front-end weight.

Requirements

GTFS Core 3.x, GTFS Realtime 2.x, and Office Hours.

Installation

composer require drupal/gtfs_display

Configuration

Displays are managed at Administration › GTFS › Displays (/admin/gtfs/display),
annotations at /admin/gtfs/display/annotations, and coverage at
/admin/gtfs/display/coverage.

Building a skin

Agency-specific appearance and behaviour belong in your own module, not in a fork of this one. Register a variant, declare a library, and the shell attaches it. The polling store, the merged data model and the REST plumbing are shared; a skin supplies templates and CSS. DEVELOPMENT.md in the repository walks through it.

Replaces gtfs_stop_display

The older gtfs_stop_display module is not compatible with GTFS Core 3.x and is not maintained. There is no migration path — rebuild your displays as display contexts.

Maintainers

Maintained by tbcs and jpsalter, supported by FivePaths. These modules run public transit information systems in daily service. Issues and merge requests are welcome, and so are co-maintainers.

Activity

Tracked releases
2
Tracked since
Aug 2026
Latest release
4 days ago
Releases (12 mo)
2 ▲ from 0
Maintenance
Active

Releases

Version Type Release date
3.0.x-dev Dev Aug 19, 2026
3.0.0 Stable Aug 19, 2026