dacosta.lu
← All work
  • Mobile
  • Backend
  • Luxembourg

CityApp, the VDL mobile app

2020

The City of Luxembourg's app needed to show live data from many services that were never designed to work together, and still feel instant.

An illustration of dashboards with charts and sliders, from the Apart article about the VDL app's data layer.

The challenge

The app pulls from a wide mix of remote services. Some return static files, others dynamic APIs. Some can be queried for a single item, others return one long list. Some update in near real time, others daily. Several are run by other organisations, so any of them could slow down, break or disappear.

The solution

A single datasource layer sits between the local database, the remote services and the app developers. Every datasource returns the same consistent format, whatever its origin, and a connector per service handles authentication, format conversion and clean-up.

Results are served from a local cache until their time-to-live expires, with three refresh strategies: scheduled, forced, and stale-while-revalidate. Each datasource can be tuned on its own. The app uses more than 20 of them, from long-lived ones like bus and tram lines to short-lived ones like parking and traffic.

In development testing, response times dropped between 1.7x and 7.3x, for example from about 3.2 s to 0.4 s for the soft mobility list.

My part

I was the technical architect of the project, and in particular of the datasource layer, working in a team at Apart.

Links