Ir al contenido
La casa
En desarrolloTransporte público · Montevideo · open source

Tres sitios web para tomar un ómnibus. Ahora es una app.

MVD Transporte junta los servicios de transporte de la propia ciudad — la cuenta STM, la recarga, Cómo Ir y los arribos en vivo — detrás de una sola barra, y suma lo que les falta: paradas guardadas, un aviso antes de que llegue el ómnibus y un widget en la pantalla de inicio. No oficial, gratis y open source.

El problema

Los servicios existen. No se hablan entre sí.

Montevideo publica en línea casi todo su transporte público: la cuenta de la tarjeta STM y su recarga, el planificador Cómo Ir, los próximos arribos de cada parada. Cada uno vive en su propia dirección, con su propio diseño y su propio login. Saber si queda saldo en la tarjeta y cuándo llega el próximo ómnibus a la esquina implica tres sitios y bastante espera frente a páginas que no se pensaron para un celular.

Nada de eso hay que rehacerlo. Los datos y las cuentas son de la ciudad y ahí tienen que quedarse. Lo que falta es la capa de arriba: un solo lugar para abrir, las paradas que de verdad usás y un aviso que llegue antes que el ómnibus, no después.

Qué hace

Una barra para todo el sistema

La cuenta STM, la recarga rápida, los avisos y Cómo Ir se abren como pestañas dentro de la app. Las páginas son las de la ciudad, así que nada de la cuenta se copia ni se reimplementa.

Mis paradas, con arribos en vivo

Guardás las paradas que usás por número y ves los próximos ómnibus en cada una, leídos del feed público de arribos de la ciudad. Una ruta armada en Cómo Ir se guarda con un toque.

Avisos antes del ómnibus

Un chequeo en segundo plano cada quince minutos avisa cuando un ómnibus de una parada o ruta guardada está a los minutos que elegiste. Sin cuenta que crear y sin nada que dejar abierto.

Widget y bloqueo

En Android, un widget en la pantalla de inicio muestra el saldo de la tarjeta y el próximo ómnibus de tu ruta. Un bloqueo biométrico mantiene cerrada la cuenta STM cuando prestás el celular.

Por dentro

Envoltorio donde corresponde, nativo donde suma.

Flutter, un solo código para Android e iOS. Las páginas de la ciudad corren en un WebView tal como se publican; las paradas, rutas y avisos son nativos, se guardan en el teléfono con Hive y WorkManager los revisa en segundo plano. No hay un servidor nuestro en el medio ni registro: nada sale del teléfono salvo los pedidos a los propios servicios de la ciudad.

// WorkManager, every 15 minutes, on the phonefor (final stop in CacheService.getStopsWithNotificationsEnabled()) {  final buses = await MvdApiService.getNextArrivals(stop.id);  buses.where((b) => b.etaMinutes <= stop.etaAlertMinutes).forEach(alert);}

Construido con

  • Flutter · Dart
  • WebView
  • Hive
  • WorkManager
  • Notificaciones locales
  • Widget de inicio
  • API de transporte de Montevideo

Tres sitios web para tomar un ómnibus. Ahora es una app.

Siguiente

MemberBay