🚆 Navirea
Navirea es una aplicación web progresiva (PWA) diseñada para interventores de Cercanías y Media Distancia, que permite gestionar la ocupación del tren, el seguimiento del recorrido y las incidencias del servicio de forma clara, rápida y visual.
✨ Características principales
- 🚆 Modelos de tren reales: Representación precisa de series 448, 449, 463, 464, 465 y 470 con sus disposiciones de asientos, PMR, mesas y espacios.
- 🔖 Unidades 470 guardadas: Guarda la combinación de variantes de cada unidad física (470.157, 470.235…) y cárgala en un toque para futuras sesiones.
- ⚙️ Configuraciones personalizadas: Crea y gestiona tus propios modelos de trenes y trayectos.
- 🎯 Gestión táctil de asientos: Marca ocupación, destinos, enlaces y comentarios con gestos intuitivos.
- ⚡ Copiado rápido: Asigna la misma información (parada, enlace, seguir, comentario y PMR) a múltiples asientos con un solo toque, incluso si el asiento aún no tiene parada.
- ♿ Viajeros PMR: Marca el asiento y selecciona el tipo de movilidad reducida (11 tipos oficiales) para preparar la asistencia en destino.
- 🔎 Filtros avanzados: Por parada, tramo, asiento, enlaces o comentarios.
- 📍 Parada actual inteligente: Libera automáticamente a los viajeros al llegar a su destino.
- ⚠️ Gestión de incidencias: Registra fallos de WC, puertas, megafonía, PMR y equipos.
- 📲 Compartir turno: Exporta el estado completo por QR o JSON para el relevo.
- 🌙 Modo nocturno: Reduce brillo y contraste para trabajar en condiciones de poca luz.
- 🔄 Backup automático: Guarda automáticamente el último estado.
- 📊 Pantallas de estaciones: Consulta horarios y conexiones en tiempo real. (Temporalmente sin funcionar: ver Problemas conocidos.)
- 📘 Manual técnico integrado: Acceso al Manual Técnico Ferroviario para resolver incidencias.
- 📋 Resumen de jornada: Registra automáticamente cada tren trabajado durante el día. Al finalizar, muestra un resumen completo con ocupación, incidencias y notas de todos los servicios, compartible como texto.
- 📝 Notas por coche: Las notas del servicio ahora incluyen pestañas por coche (C1, C2…) para anotar observaciones específicas de cada vagón.
- 🛰️ Circulación en tiempo real: Muestra el retraso actual del tren, la próxima parada con su hora estimada y el material rodante asignado, a partir de los datos públicos de Renfe.
- 🗺️ Recorrido con horarios estimados: Todas las paradas del trayecto con su hora prevista de llegada y la desviación, para ver si el retraso se acumula o se recupera.
- 🔔 Aviso de parada desfasada: Si el tren ya ha dejado atrás la parada marcada en la app, avisa y permite actualizarla de un toque.
- 🚉 Detección de material: Reconoce la unidad concreta en circulación y ofrece cargar su plantilla o su configuración de coches guardada.
- 🚨 Estado de la red de Adif: Acceso directo, desde el menú ⋮, a las incidencias de Adif de la comunidad en la que está el tren (Aragón, Navarra, La Rioja o País Vasco).
- 🗒️ Notas por unidad de material: Guarda las particularidades de cada unidad física (enchufes, máquina de billetes, cerradura de cabina, averías recurrentes) y las muestra al detectar ese material.
📸 Capturas de pantalla
🎯 Público objetivo
Esta aplicación está pensada específicamente para interventores de:
- ✅ Cercanías (servicios de corta distancia)
- ✅ Media Distancia (servicios regionales)
🚀 Instalación
Navirea es una Progressive Web App (PWA), lo que significa que funciona directamente desde el navegador y puede instalarse como una aplicación nativa.
Opción 1: Usar desde el navegador
- Abre el archivo
index.html en tu navegador web.
- La aplicación funcionará inmediatamente sin instalación.
Opción 2: Instalar como PWA
- Abre la aplicación en Chrome, Edge o Safari.
- En el menú del navegador, selecciona "Instalar Navirea" o "Añadir a pantalla de inicio".
- La aplicación se instalará y podrás abrirla como cualquier otra app.
Requisitos
- Navegador moderno con soporte para JavaScript ES6+
- Conexión a internet (solo para pantallas de estaciones y manual técnico)
- Almacenamiento local habilitado (localStorage)
📖 Guía de uso rápida
1️⃣ Selecciona el modelo de tren
- Toca el nombre del tren en la parte superior.
- Selecciona el modelo correspondiente (448, 449, 463, 464, 465, 470 o uno personalizado).
- Introduce el número de venta del tren.
2️⃣ Gestiona los asientos
- Toca un asiento libre → Introduce la parada de bajada → Guarda.
- Mantén pulsado un asiento libre → Asigna la última parada automáticamente.
- Toca un asiento ocupado → Modifica destino, añade enlace o comentario.
- Marca "Enlace" → Introduce opcionalmente el número de tren del enlace, destino y hora de salida. La información se muestra en la cabecera del modal del asiento y en el filtro de enlaces.
- Marca "PMR" → Selecciona el tipo de viajero con movilidad reducida en el desplegable. El asiento se colorea en magenta y el tipo queda visible al consultarlo desde los filtros.
- Activa el copiado rápido → Marca el primer asiento → Los siguientes copiarán la misma información (parada, enlace, seguir, comentario y PMR). Funciona aunque el asiento no tenga parada: copia el último asiento editado.
3️⃣ Establece la parada actual
- Introduce la parada actual del tren.
- Navirea liberará automáticamente los asientos de viajeros que bajan en esa parada.
🛰️ Circulación en tiempo real (opcional)
Si está configurada (ver más abajo), Navirea muestra junto al número de tren
un indicador con el retraso actual:
- Verde en hora · Ámbar hasta 10 min · Rojo más de 10 min · ⏱ el tren lleva rato sin reportar posición.
- Tócalo para ver el detalle: retraso, velocidad estimada, dónde está, próxima parada con su hora prevista y el material rodante.
- "Ver recorrido completo" muestra todas las paradas con su hora estimada y la desviación en minutos, para saber si el retraso se está recuperando.
Además:
- Si el tren ya ha pasado la parada que tienes marcada, aparece un aviso
para actualizarla de un toque.
- Si el material detectado no coincide con la plantilla abierta, se ofrece
cambiar a la serie correcta o cargar la unidad si la tienes guardada.
- Las paradas ya superadas dejan de ofrecerse en el selector de parada actual.
🚨 Estado de la red de Adif
En el menú ⋮ → Estado de la red (Aragón) se abre la web de Adif directamente
en la pestaña de la comunidad donde está el tren, según la parada actual
que tengas marcada (o, si no hay, la estación que da el tiempo real). Por
ejemplo, en Alagón abre Aragón y en Marcilla, Navarra.
- Hay enlace directo para Aragón, Navarra, La Rioja y País Vasco. Para otras
comunidades abre la página general y avisa de qué pestaña pulsar.
- Para añadir una comunidad: pulsa su pestaña en Adif, copia el número de la
URL (
…/categories/53897329?…) y añádelo a ADIF_CATEGORY_IDS en
network-alerts.js.
Aviso automático (en pausa). La app incluye además un sondeo cada 5 min
que avisaría de incidencias nuevas en las comunidades del tren, mediante el
proxy (?feed=incidencias, ver worker/README.md). Hoy no
funciona: Adif bloquea las peticiones automáticas desde el proxy (403) y la
app lo ignora sin mostrar nada. Si algún día lo permite, se activa solo.
Los datos de circulación proceden de fuentes públicas de Renfe y son orientativos. El tren
debe estar circulando para aparecer: no se publica antes de su salida.
Para activarlo hace falta un pequeño proxy propio (el origen no permite
llamadas directas desde el navegador). Instrucciones en
worker/README.md. Sin configurarlo, Navirea funciona
con normalidad y esta sección simplemente no aparece.
🗒️ Notas por unidad de material
Cada unidad física tiene sus particularidades: número de enchufes, estado de
la máquina de billetes, si la cabina abre con llave o con llavín, averías
recurrentes…
- Guárdalas desde el panel de tiempo real ("Añadir notas a esta unidad")
o con el ✎ del gestor de Unidades 470.
- Cuando vuelvas a llevar esa unidad, la nota aparece sola al abrir el panel.
- Si el servicio lleva dos unidades acopladas, se muestran las notas de cada una.
- Para borrar una nota, guárdala vacía.
4️⃣ Usa filtros
- Filtra por parada de bajada, tramo recorrido, asiento, enlaces o comentarios.
- La vista se ajustará para mostrar solo los elementos relevantes.
5️⃣ Registra incidencias
- Accede al panel de Incidencias desde la barra superior.
- Registra fallos de WC, puertas, megafonía, PMR o equipos.
- Las incidencias se guardan y se pueden exportar.
6️⃣ Gestiona las variantes de coche (470 y 464)
El 464 tiene dos variantes de coche (A y B; la B añade los asientos A1–A4 en el C4) y se cambian igual que las del 470. Los datos guardados antes de existir las variantes pasan solos a la A.
El tren 470 tiene múltiples variantes de distribución de asientos por coche (A–F). Para configurarlas:
- Doble toque en un botón de coche (C1, C2, C3) → Selecciona la variante de ese coche.
- Mantén pulsado "Tren 470" en el selector de trenes → Abre el gestor de Unidades 470:
- Busca o escribe el número de unidad (ej.
470.157) — se filtra en tiempo real.
- Si la unidad ya está guardada, tócala para cargar sus variantes automáticamente.
- Si es nueva, configura las variantes manualmente y pulsa "Guardar configuración actual" para guardarla con ese nombre.
- Toca el ✎ de una fila para anotar las particularidades de esa unidad. Las que tienen notas se marcan con un punto.
- Elimina unidades guardadas con el botón ✕.
7️⃣ Toma notas por coche
- Toca el botón de Notas del servicio (icono de página) en la barra superior.
- La pestaña "Servicio" contiene las notas generales del tren.
- Las pestañas C1, C2… permiten anotar observaciones específicas de cada coche (ej. "Olor a quemado", "Calefacción no funciona").
- Las notas se guardan automáticamente y aparecen en el resumen de jornada.
8️⃣ Resumen de jornada
Navirea registra automáticamente cada tren que trabajas durante la jornada:
- Al introducir el número de tren, se inicia el cronómetro del servicio.
- Al cambiar de número de tren o modelo, el servicio anterior se cierra y se abre uno nuevo — el historial se acumula.
- Cuando termines, abre el menú ⋮ → Finalizar turno para ver el resumen completo de la jornada: hora de inicio y fin de cada tren, ocupación, paradas con más bajadas, incidencias y notas.
- "Compartir como texto" permite enviar el resumen por cualquier app de mensajería.
- "Nueva jornada" (también en el menú ⋮) limpia el historial para empezar de cero al día siguiente.
9️⃣ Comparte el turno
- Exportar a JSON: Guarda el estado completo del tren.
- Compartir por QR: Genera un código QR para transferir el estado a otro interventor.
⚙️ Configuraciones personalizadas
Navirea te permite crear y gestionar modelos de trenes y trayectos personalizados, adaptados a tus necesidades específicas.
Crear modelo de tren personalizado
- Ve a Más opciones → Configuraciones Personalizadas.
- Pulsa "+ Nuevo Modelo".
- Sigue el asistente de 4 pasos:
- Información básica (nombre, descripción).
- Configuración de coches (cantidad, nombres).
- Editor visual de asientos (drag & drop para diseñar la disposición).
- Vista previa y guardar.
Crear trayecto personalizado
- Ve a Más opciones → Configuraciones Personalizadas.
- Cambia a la pestaña "Trayectos".
- Pulsa "+ Nuevo Trayecto".
- Sigue el asistente de 4 pasos:
- Número de tren.
- Añadir paradas (con autocompletado y drag & drop).
- Seleccionar destino final.
- Vista previa y guardar.
Plantillas predefinidas
Al crear un modelo de tren, puedes elegir entre:
- Regional 3 Coches: Tren típico de cercanías.
- Suburbano 4 Coches: Tren de media distancia.
- Intercity 2 Coches: Tren de dos vagones.
- Regional Accesible: Con espacios PMR y zonas adaptadas.
- En Blanco: Crea desde cero.
Compartir configuraciones
- Exportar a JSON: Descarga tus configuraciones para compartirlas o hacer backup.
- Compartir por QR: Genera un código QR para transferir configuraciones a otro dispositivo.
- Importar: Carga configuraciones desde archivo JSON o escaneando un QR.
⋮ Menú de más opciones
El botón ⋮ de la barra superior despliega todas las acciones avanzadas de la app:
Jornada
| Opción | Descripción |
|---|
| Finalizar turno | Muestra el resumen completo de la jornada con todos los trenes trabajados. Aparece en cuanto hay al menos un tren registrado. |
| Nueva jornada | Limpia el historial de jornada para empezar de cero al día siguiente (pide confirmación). |
Tripulación y turno
| Opción | Descripción |
|---|
| Tripulación | Agenda de contactos del turno (maquinista, interventor auxiliar…) con llamada directa. Importar/exportar en JSON. |
| Compartir turno | Exporta el estado del tren por código QR o archivo JSON para traspasarlo a otro interventor. |
| Importar turno | Carga el estado de un turno previo escaneando un QR o desde un archivo JSON. |
Configuración
| Opción | Descripción |
|---|
| Configuraciones Personalizadas | Crea y gestiona modelos de tren y trayectos propios. |
| Backups automáticos | Accede a los últimos estados guardados automáticamente y restáuralos si es necesario. |
| Manual Técnico de Trenes | Abre el Manual Técnico Ferroviario integrado para consultar procedimientos ante incidencias. |
Herramientas externas
| Opción | Descripción |
|---|
| SpainTrainRadar | Visualización en tiempo real de la posición de los trenes. |
| Estado Trenes Renfe | Consulta el estado de circulación de los trenes Renfe. |
| Visor LTV Adif | Visor de Limitaciones Temporales de Velocidad de Adif. |
Información
| Opción | Descripción |
|---|
| Acerca de | Versión de la aplicación e información del proyecto. |
| Guía de uso | Abre la guía de usuario completa dentro de la propia app. |
🛠️ Tecnologías utilizadas
- HTML5, CSS3, JavaScript (ES6+)
- Progressive Web App (PWA) con Service Worker
- LocalStorage para persistencia de datos
- QRCode.js para generación de códigos QR
- Html5-QRCode para escaneo de códigos QR
- LZ-String para compresión de datos
- Markdown para renderizado de contenido
⚠️ Problemas conocidos
- Pantallas de estaciones: dejaron de cargar. Se muestran dentro de la app
mediante la web de un tercero (
pantallas-estaciones.vercel.app), que
actualmente no permite ser incrustada en otras webs y, además, parece no
obtener datos de Adif (que bloquea el tráfico automático). Pendiente de
resolver.
- Aviso automático de incidencias de Adif: inactivo por el mismo bloqueo
(ver Estado de la red de Adif).
📂 Estructura del proyecto
Navirea/
├── index.html # Archivo principal
├── manifest.json # Configuración PWA
├── sw.js # Service Worker
├── css/ # Estilos
│ ├── base.css
│ ├── variables.css
│ ├── splash.css
│ └── components/ # Estilos de componentes
├── src/
│ ├── config/ # Constantes y catálogos (tipos PMR)
│ ├── services/ # Servicios (ConfigurationManager, AppState, RealtimeService)
│ ├── utils/ # Utilidades (data-loader, templates, validadores)
│ ├── features/ # Funcionalidades (filtros, QR, pantallas, incidencias, tiempo real, estado de la red)
│ ├── components/ # Componentes UI (wizards, editores)
│ ├── wizards/ # Asistentes de creación
│ └── renderers/ # Renderizadores de asientos
├── data/ # Datos JSON de modelos de trenes y estaciones
├── templates/ # Templates HTML y contenido
├── worker/ # Proxy para los datos de circulación (opcional)
└── icons/ # Iconos de la aplicación
🔧 Desarrollo
Clonar el repositorio
git clone https://github.com/funkytrain/Navirea.git
cd Navirea
Ejecutar localmente
Simplemente abre index.html en tu navegador. No requiere servidor web, aunque se recomienda usar uno para probar funcionalidades PWA.
# Con Python 3
python -m http.server 8000
# Con Node.js (http-server)
npx http-server -p 8000
Luego abre http://localhost:8000 en tu navegador.
Testing
El proyecto incluye archivos de testing en la raíz:
test-config-manager.html - Testing del gestor de configuraciones
test-seat-editor.html - Testing del editor de asientos
test-train-wizard.html - Testing del wizard de modelos de tren
test-route-wizard.html - Testing del wizard de trayectos
test-config-manager-ui.html - Testing de la UI del gestor
test-config-sharing.html - Testing del sistema de compartición
test-integration.html - Testing de integración
test-e2e-phase8.html - Testing E2E completo
📝 Documentación adicional
🤝 Contribuciones
Las contribuciones son bienvenidas. Por favor:
- Haz un fork del proyecto
- Crea una rama para tu feature (
git checkout -b feature/nueva-funcionalidad)
- Commit tus cambios (
git commit -m 'Añadir nueva funcionalidad')
- Push a la rama (
git push origin feature/nueva-funcionalidad)
- Abre un Pull Request
📧 Contacto y soporte
Si tienes dudas, sugerencias o has encontrado algún problema, por favor abre una incidencia (issue) en el repositorio de GitHub:
👉 Abrir una incidencia en GitHub
Allí podrás reportar errores, solicitar nuevas funcionalidades o hacer preguntas sobre el uso de la aplicación.
⚠️ Aviso legal
Proyecto no oficial ni afiliado con ADIF o RENFE, con propósito educacional.
- Las pantallas de las estaciones muestran contenido servido directamente por ADIF.
- Marca, logotipos y datos mostrados en el panel son propiedad de ADIF.
- El Manual Técnico Ferroviario es un proyecto creado por José Luis Domínguez y Juan Pablo Romero.
📜 Licencia
Este proyecto está licenciado bajo la Licencia MIT.
MIT License
Copyright (c) 2026 Adrián Fernández
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
Navirea - Visualiza. Gestiona. Avanza. 🚆