Skip to content
gtfs.media

Un sitio Drupal que tu equipo puede extender. Una API que cualquier stack puede consumir.

gtfs.media es una suite de módulos GPL‑2.0+ sobre Drupal 10/11 estándar. Si trabajas en Drupal, ya conoces este sistema — entidades, campos, Views, permisos, config sync, aplicados al tránsito. Esta página cubre cómo se configura un despliegue, qué expone y cómo encaja con el sitio que ya operas.

En lenguaje sencillo

Esta página es para personas que construyen sitios web.

El software es un conjunto de módulos para Drupal. Los instalas de la misma manera que instalas cualquier otro módulo.

Leen tu archivo GTFS. Almacenan cada parte como contenido normal de Drupal, para que puedas añadir tus propios campos.

Cada pantalla y mapa lee una API pública. Tu propio código puede leer la misma.

Los datos residen en servidores que tú controlas.

Cómo se configura un despliegue

Un sitio gtfs.media es una instalación estándar de Drupal con la suite GTFS habilitada. El módulo gtfs modela la especificación como entidades de contenido e importa tu zip publicado — importa una vez, reimporta siempre; las actualizaciones llegan en su lugar y las adiciones manuales sobreviven. gtfs_rt consulta tus endpoints Protobuf en horarios por feed y republica JSON. La pila de pantallas renderiza kioscos y mapas como clientes de esa misma API.

Varios feeds pueden funcionar en paralelo, por lo que las configuraciones regionales y de múltiples operadores son un solo sitio.

bash
# A standard Drupal 10/11 site
composer require drupal/gtfs drupal/gtfs_rt drupal/gtfs_display
drush en gtfs gtfs_rt gtfs_display

# then in the admin UI:
#   /admin/gtfs        add a feed, run the import wizard
#   /admin/gtfs/rt     point at your GTFS-RT endpoints
#   /admin/gtfs/display  create display contexts

Se comporta como el Drupal que conoces

Los feeds y contextos de pantalla son entidades de configuración: constrúyelos en la interfaz de administración, expórtalos con el resto de tu configuración, revísalos en git, despliégalos a través del pipeline que el sitio ya usa.

  • Entidades de contenido — rutas, paradas y viajes son contenido con campos y traducible; añade páginas de destino o metadatos adicionales como con cualquier nodo
  • Views — consulta y lista datos GTFS con la misma herramienta con la que construyes cualquier otro listado
  • View modes y theming — renderiza registros de tránsito con tu tema, no el nuestro
  • Roles y permisos — los permisos de API y el acceso por pantalla utilizan el sistema de permisos que ya administras
  • Tus servidores, tus datos — feeds importados, cachés en tiempo real y telemetría de pantallas viven en una base de datos que tú administras, en plataformas que tú controlas
A Drupal admin screen listing display contexts, each with its assigned stops and routes

¿Desarrollando para un operador del Área de la Bahía? El módulo de aprovisionamiento 511 configura cada feed desde un solo formulario de ajustes, y GTFS+ ya está modelado.

Detalles del Área de la Bahía

Nuestras superficies consumen la misma API que tú usarías.

Cada pantalla y mapa de la plataforma es un cliente de la API JSON versionada — no existe una ruta interna privilegiada. Lo que cada endpoint expone, y a quién, es una decisión de permisos que tomas por rol. La referencia completa de la API documenta cada endpoint, parámetro y forma de respuesta.

  • Protobuf entra, JSON sale — las actualizaciones de viajes, posiciones de vehículos y alertas de servicio GTFS‑Realtime se decodifican del lado del servidor; los consumidores nunca tocan Protobuf
  • Frescura bajo demanda — una pantalla que solicita datos activa una actualización asíncrona de cualquier feed obsoleto, para que las pantallas activas mantengan los feeds calientes
  • Hooks de mapeo de ID — cuando los IDs de parada en tiempo real no coinciden con tu feed estático (a menudo no coinciden), un hook los reconcilia
# Static GTFS, served as JSON
GET /gtfs/api/v2/feeds/{feed}/stops/{stop_id}
GET /gtfs/api/v2/feeds/{feed}/stops/{stop_id}/routes

# Realtime
GET /gtfs/api/v2/rt/tripupdates/{stop_id}
GET /gtfs/api/v2/rt/vehicles?stop_id={stop_id}
GET /gtfs/api/v2/rt/alerts/stops/{stop_id}
// One canonical prediction shape,
// however messy the upstream feed
{
  "trip_id":  "t_48151",
  "route_id": "17",
  "stop_id":  "4021",
  "predicted_arrival_epoch": 1766920841,
  "delay": 120,
  "vehicle_id": "2214",
  "headsign": "Airport via Union Station",
  "is_last_stop": false
}

Convenciones de respuesta

Integración con el sitio que ya operas

Si el sitio principal usa Drupal, la plataforma se instala en él — una base de código, un administrador, un inicio de sesión. Si usa otra cosa, funciona junto a él y aparece donde quieras.

Compatible con

Las especificaciones que implementa la suite, las fuentes de feeds con las que ya ha funcionado y el software subyacente.

Cualquier publicador de GTFS y GTFS‑Realtime funciona; estos son con los que hemos trabajado.

Pon tu feed a trabajar.

Empieza con los módulos en tu propio sitio Drupal — y cuando prefieras entregar en lugar de alojar, estamos a un email de distancia.

hello@gtfs.media Explorar los módulos →