Saltar al contenido

Caso · en construcción

SonarMap

Tres piezas que se construyen a la vez: una app para iOS y Android, el servidor que le da los datos y la web que la presenta. La web ya está publicada; la app y el servidor siguen en construcción. Todavía no hay resultados que contar, así que esta ficha explica qué es cada pieza y en qué punto está.

Qué es

Una app que enseña qué está pasando en las zonas que elige cada usuario y en el resto del mundo y avisa cuando ocurre algo en ellas. Cada dato indica qué organismo lo publica, a qué hora y con qué enlace. Con los datos que va archivando calcula además lo que la fuente no da: si lo de hoy es normal en ese lugar, cuánto suele durar y cada cuánto se repite. No es un agregador de titulares.

Qué se está construyendo

Las tres piezas a la vez: el servidor que recoge y ordena los datos, la app para iOS y Android y la web de captación. Hay una cuarta que no se vende: el panel interno con el que se opera todo lo demás.

Estado

La web, publicada; la app, en construcción. El servidor ya archiva datos de más de noventa fuentes públicas y la app ya se puede recorrer entera. Todavía no está en las tiendas y no hay fecha de salida publicada.

Ver la web

Cómo encaja

Del organismo que publica el dato al móvil.

Entre la fuente y la app hay un servidor que toma tres decisiones con cada dato: si es un hecho o es ruido, a qué lugar del mapa pertenece y a qué usuarios hay que avisar. Esa es la parte más grande del proyecto. La app es la parte que se ve y la más pequeña.

La app solo puede enseñar lo que el servidor ha ordenado antes. El trabajo más grande es el del servidor y es el que no se ve.

Por dónde va

Las tres piezas, una por una.

Se construyen a la vez porque dependen unas de otras. Cada una está en un punto distinto y aquí se cuenta cuál.

  • 8idiomas, en la app y en la web
  • +90fuentes públicas, cada una con su licencia
  • 3ámbitos en la app: naturaleza, transporte y salud
  • 2plataformas, iOS y Android con el mismo código
  • El servidor Recoge los datos de las fuentes, los archiva sin duplicados y asigna cada hecho a su municipio. Está hecho con Java y Spring Boot sobre PostgreSQL con extensión geográfica. Los cambios de la base de datos están versionados y las pruebas se ejecutan contra una base de datos real.
  • La app Hecha con Expo y React Native: el mismo código para iOS y Android, en ocho idiomas. Tiene tres ámbitos —naturaleza, transporte y salud— y cada uno enseña las zonas que el usuario ha guardado: el mapa, los avisos en vigor con su nivel y su fuente, las cámaras públicas de tráfico cuando las hay y el histórico de cada cifra. Además hay dos vistas generales. Mundo enseña los sucesos activos del planeta. Pulso compara lo que pasa en el planeta con lo habitual —los terremotos, el sol, las temporadas— y no lleva avisos. El envío de avisos está programado en el servidor y en la app; falta probarlo en móviles reales.
  • La web de captación Es estática y está publicada en los mismos ocho idiomas que la app. Enseña el catálogo de fuentes, que sale de los mismos datos que usa el sistema, con la licencia literal de cada una. También enseña los planes y las reglas editoriales. La descarga aparece como «próximamente» hasta que la app esté en las tiendas. La web todavía describe los seis ámbitos anteriores: se reescribirá cuando la app esté cerrada, para no hacer el trabajo dos veces.

La app, hoy

Cuatro pantallas de la app.

Mundo, un terremoto con los municipios afectados, Transporte y Pulso. Son capturas reales, con los datos del día en que se hicieron y cada cifra con su fuente y su hora.

Captura de la app de SonarMap: el globo con los sucesos activos del mundo y debajo la tarjeta de un aviso aeronáutico de ceniza volcánica en Indonesia La misma pantalla de Mundo en modo oscuro, con el globo y los sucesos activos Mundo
Captura de la app de SonarMap: la ficha de un terremoto en México, de nivel 2 de 5 según EMSC, con su fecha, los 25 municipios afectados, magnitud 4, profundidad 10 km y el mapa del epicentro La ficha del terremoto de México en modo oscuro, con el nivel, la magnitud, la profundidad y el mapa del epicentro Un terremoto
Captura de la app de SonarMap: la parte baja de la ficha del terremoto, con la zona afectada de 80 km, qué es un terremoto y la lista de municipios afectados: San Pedro Huamelula, Santiago Astata, Santo Domingo Tehuantepec y otros La lista de municipios afectados por el terremoto en modo oscuro, con San Pedro Huamelula, Santiago Astata y Santo Domingo Tehuantepec Municipios afectados
Captura de la app de SonarMap: la zona de Barcelona en Transporte, con el tráfico en directo sobre el mapa, quince avisos, cuarenta y seis cámaras, el precio de la gasolina y la lista de líneas de tren cortadas. Arriba, la fila de zonas guardadas La zona de Barcelona en Transporte, en modo oscuro, con el tráfico en directo y sus avisos de trenes Transporte
Captura de la app de SonarMap: los terremotos de magnitud 4,5 o más de la semana, 77 frente a los 111 a 190 de una semana habitual, con su mapa mundial, los mayores y el día a día por energía liberada La misma semana de terremotos en modo oscuro, con el mapa mundial y el gráfico día a día Pulso

Lo que cambió por el camino

Dos cambios de rumbo y lo que costó cada uno.

Ninguno de los dos estaba en el plan. Los dos se decidieron con el producto ya construido, que es cuando cambiar sale más caro. Por eso se cuentan aquí con su coste.

  • De seis ámbitos a tres La app tenía seis ámbitos y se quedó con tres. La decisión salió de contar lo que de verdad se había publicado: los veinte sucesos de conflicto del mundo estaban todos por debajo del nivel de aviso y más de un tercio del catálogo de series era de economía, un ámbito sin un solo suceso. El coste: se desactivaron treinta y siete fuentes y se retiraron sus pantallas, sus iconos y sus reglas de color. No se borró nada: lo archivado sigue guardado y cada fuente se reactiva cambiando una línea, así que la decisión se puede deshacer.
  • Rediseño visual sin tocar la estructura Se cambió todo el aspecto de la app: fondo crema de día y gris de noche, la tipografía del sistema en lugar de tipografías empaquetadas, cifras de ancho fijo y un juego de iconos propio. Salió barato porque la regla se escribió antes de empezar: cambia la estética y los elementos se quedan. Cada pantalla conserva las mismas piezas en el mismo orden y el color se reserva para la escala de gravedad. Si una pantalla ganaba o perdía algún elemento con el cambio, estaba mal hecha. Con esa regla el rediseño fueron dos fases de trabajo acotado y no hubo que reescribir nada.

Decisiones de partida

Tres decisiones tomadas antes de escribir código.

Se dejaron por escrito antes de la primera línea de código, porque cambiarlas después obliga a reescribir. Son las que más han condicionado el resto del trabajo.

  • Cada dato lleva su fuente a la vista Cada dato indica el organismo que lo publica, la hora y el enlace. Una categoría no se enseña hasta que tiene detrás una fuente con competencia sobre el asunto. Es más lento de construir, pero sin esa regla sería un agregador de noticias.
  • Modelos de aprendizaje automático entrenados con el propio archivo Con los datos archivados se entrenan modelos de detección de anomalías. Detectan si lo que acaba de pasar se sale de lo normal en ese lugar o si una fuente ha empezado a dar datos raros. Son modelos interpretables: cada resultado enseña de dónde sale y se puede recalcular. Es ciencia de datos; aquí ningún modelo de lenguaje resume textos.
  • Cobertura mundial desde el primer día No se empezó por un país para ampliar después. Eso obliga a tener un catálogo de lugares de todo el planeta y a que la asignación de cada hecho a su lugar sea rápida desde el principio, en vez de encontrarse el problema al salir a otros países.

¿Tenéis un producto que construir?

Lo aprendido construyendo estas tres piezas a la vez sirve para el vuestro. Media hora para ver qué piezas necesita, en qué orden y desde cuánto sale.

Hablemos del proyecto