Note
Una Progressive Web App (PWA) rápida, moderna y responsiva. Consultá cuándo llega el colectivo a tu parada sin publicidades, sin descargar apps nativas y con posibilidad de funcionar sin conexión (caché).
- Tiempo real (GPS): Consulta de arribos en tiempo real obteniendo datos del proxy de la Municipalidad de Gral. Pueyrredón.
- Rutas Manuales (GeoJSON): Soporte para líneas que no están en la API oficial (ej. Mar Chiquita 221) mediante archivos GeoJSON.
- Favoritos: Guardá tus paradas de uso diario con nombres personalizados (ej. "Casa", "Trabajo").
- Historial inteligente: Historial automático de las últimas paradas consultadas.
- Mapa Interactivo Avanzado:
- Visualización de colectivos acercándose en tiempo real.
- Marcado de paradas con navegación rápida (vía Google Maps).
- Trazado de recorridos completos sobre el mapa.
- Modo PWA & Caché: Instalación nativa en móviles e información estática (calles, recorridos) persistida localmente por 24hs.
- WhatsApp Share: Generación de mensajes rápidos con tiempos de arribo y ubicación exacta.
- Status de API: Detección y alerta visual si el servidor de la Municipalidad está fuera de servicio.
La aplicación está diseñada pensando en la performance y la facilidad de extensión.
| Tecnología | Propósito |
|---|---|
| Next.js 16 (App Router) | Framework base, optimización de bundles, y Proxy API. |
| React 19 | UI responsiva y gestión de estado mediante Hooks. |
| SWR | Fetching de datos con revalidación automática y caché en memoria. |
| Leaflet | Motor de mapas liviano para visualización de GPS y GeoJSON. |
| LocalStorage | Persistencia de favoritos, historial y caché de calles (24hs TTL). |
graph TD
UI[UI Components] --> SWR[SWR Hooks]
SWR --> Storage[(LocalStorage / Cache 24h)]
SWR --> Proxy[Route Handler /api/cuando]
Proxy --> MGP[API Municipalidad]
UI --> Manual[lib/manualRoutes.ts]
Manual --> GeoJSON[public/*.geojson]
Estas instrucciones te permitirán obtener una copia del proyecto y ejecutarlo en tu máquina local para desarrollo y pruebas.
- Node.js (v18.x o superior)
- NPM (usualmente viene con Node.js)
-
Clonar el repositorio:
git clone https://github.com/Celiz/cuandollega.git cd cuandollega -
Instalar dependencias:
npm install
-
Ejecutar en entorno de desarrollo:
npm run dev
La aplicación estará corriendo en http://localhost:3000.
Toda la comunicación con la MGP pasa a través del un único proxy en nuestro backend para evadir restricciones de CORS y ocultar orígenes.
Endpoint: POST /api/cuando
El body asume codificación application/x-www-form-urlencoded.
RecuperarLineaPorCuandoLlega: Obtiene lista de líneas.RecuperarCallesPrincipalPorLinea: RecibecodLinea. Retorna calles que recorre.RecuperarInterseccionPorLineaYCalle: RecibecodLinea,codCalle. Retorna intersecciones de esa calle en su recorrido.RecuperarParadasConBanderaPorLineaCalleEInterseccion: Retorna las banderas y el identificador de la parada.RecuperarProximosArribosW: RecibeidentificadorParadaycodigoLineaParada. Retorna la información de tiempo real GPS de arribos.
(La implementación completa se encuentra en lib/cuandoLlega.ts usando la función post() base).
¡Las contribuciones (pull requests, reporte de bugs, sugerencias) son bienvenidas!
Revisá nuestro archivo CONTRIBUTING.md para más detalles sobre cómo estructurar el código, hacer un Pull Request o agregar nuevas integraciones.
Este proyecto se distribuye bajo la licencia MIT. Consultá el archivo LICENSE para más detalles.
Tip
Si la app te es útil, apreciamos una estrella ⭐ en el repositorio de GitHub.
