Project · in progress

SonarMap

Three pieces I'm building at once: an iOS and Android app, the server that feeds it data and the website that presents it. The website is live; the app and the server are still being built. There are no results to report yet, so this page explains what each piece is and where it stands.

What it is

An app that shows what's happening in the places each user picks and in the rest of the world and alerts them when something happens there. Every data point says which agency published it, at what time and with which link. From the data it archives, it also works out what the source doesn't say: whether today is normal for that place, how long it usually lasts and how often it comes back. It isn't a headline aggregator.

What I'm building

All three pieces at once: the server that collects and sorts the data, the iOS and Android app, and the marketing site. There's a fourth that isn't for sale: the internal dashboard used to run everything else.

Status

The website is live; the app is being built. The server is already archiving data from more than ninety public sources, and the app can be navigated end to end. It isn't in the stores yet and there's no published launch date.

Visit the site

How it fits together

From the agency that publishes the data to the phone.

Between the source and the app sits a server that makes three decisions about every data point: whether it's a fact or noise, which place on the map it belongs to, and which users need an alert. That's the biggest part of the project. The app is the part you see and the smallest.

The app can only show what the server has sorted first. The biggest job is the server's and it's the one you don't see.

Where it stands

The three pieces, one by one.

I build them at the same time because they depend on each other.

  • 8languages, in the app and on the website
  • +90public sources, each with its licence
  • 3areas in the app: nature, transport and health
  • 2platforms: iOS and Android
  • The server It collects data from the sources, archives it without duplicates and assigns every event to its municipality. Java and Spring Boot on PostgreSQL.
  • The app For iOS and Android. It shows the saved places: the map, active alerts with their source and the history of every figure. Alert delivery is coded; it still has to be tested on real phones.
  • The marketing site Static and live in eight languages. It shows the source catalogue with each source's licence. The download reads “coming soon” until the app is in the stores.

The app today

Five screens from the app.

Now, a typhoon with its track cone, Travel, a zone with its traffic and Planet. These are real screenshots, with the data from the day they were taken and every figure with its source and time.

SonarMap app screenshot: the globe with the events in force, the time and weather in several cities at the top and, below, the card for an official heavy rain warning in Friuli Venezia Giulia, Italy The Now screen in dark mode: the globe with the events in force and the card for a yellow fever health notice in Colombia Now
SonarMap app screenshot: Typhoon Champi in the northwest Pacific, level 5 of 5, with its track cone on the map, 180 mph winds, its heading and the places in Taiwan in its path A hurricane card in dark mode: Hurricane Simon, level 3 of 5 according to the NHC, with its description and the track cone off the coast of Mexico Cyclone
SonarMap app screenshot: Thailand under Travel, with the local time, temperature, daylight, the political stability index and what the United States, the United Kingdom, Canada and Japan advise about travelling there Thailand under Travel, in dark mode, with the local time, political stability and each government’s advice Travel
SonarMap app screenshot: the Madrid area under Transport, with the day’s busy hours, live traffic on the map, ten alerts, the fuel price and a road diversion. The row of saved zones sits at the top The Madrid area under Transport, in dark mode, with the busy hours and live traffic Zones
SonarMap app screenshot: sea temperature under Planet, on the globe, with a low of 28 °F and a high of 94 °F, and the state of El Niño Sea temperature under Planet, in dark mode, with the globe and the state of El Niño Planet

Starting decisions

Three decisions made before writing code.

I wrote them down before the first line of code, because changing them later means a rewrite. They're the ones that have shaped the rest of the work the most.

  • Every data point shows its source Every data point says which agency published it, the time and the link. A category isn't shown until there's a source behind it with authority on the subject. It's slower to build, but without that rule this would be a news aggregator.
  • Machine learning models trained on the archive itself Anomaly detection models are trained on the archived data. They detect whether what just happened is out of the ordinary for that place, or whether a source has started sending odd data. They're interpretable models: every result shows where it comes from and can be recomputed. It's data science; no language model summarises text here.
  • Worldwide coverage from day one I didn't start with one country to expand later. That calls for a catalogue of places covering the whole planet and for fast matching of every event to its place from the start, instead of running into the problem when moving into other countries.

Want to talk about this project or a similar one?

I’ll reply myself, by email.

Write to me