Open source • In active development

EU Stats

Eurostat open data on Android, iOS and desktop

EU Stats is my open-source Kotlin Multiplatform app for the public Eurostat API. One codebase with a Compose Multiplatform UI runs on Android, iOS and desktop. The app shows European statistics in eight thematic modules, with interactive charts.

EU Stats app – Economy screen with a GDP line chart for Germany, the EU, France and Poland

What it does

Eight thematic modules with live data from the Eurostat API

📱

One Codebase, Three Platforms

Kotlin Multiplatform and Compose Multiplatform: the same app runs on Android, iOS and desktop (macOS, Linux, Windows).

🇪🇺

Eight Data Modules

Economy, population, environment, trade, transport, tourism, social and science, plus Overview, Search, Compare and Settings screens.

📊

8 Chart Types on Compose Canvas

Line, stacked bar, population pyramid, heatmap, diverging bar, radar, small multiples and highlighted multi-line charts, drawn with Compose Canvas.

💾

Offline Cache

Stale-while-revalidate caching with SQLDelight. Data that the app loaded before stays available without a network.

🌐

Three UI Languages

English, Polish and Ukrainian. The user can switch the language at runtime in Settings.

✅

~1,000 Automated Tests

About 1,000 automated tests. GitHub Actions CI runs them, including tests on the iOS simulator.

Screens

Screens from the Android build

Economy: GDP of Germany, the EU, France and Poland on a line chart
Economy – line chart
Population: age pyramid of Germany by five-year cohorts
Population – pyramid
Science: radar chart that compares France with the EU on R&D, internet use and tertiary education
Science – radar chart
Tourism: stacked bars of overnight stays and a monthly seasonality heatmap for Spain
Tourism – bars and heatmap

How it is built

The project is a multi-module Clean Architecture app. Each thematic module has its own data, domain and UI layers. Decompose handles navigation, Koin handles dependency injection, Ktor loads the data and SQLDelight caches it.

The app reads the JSON-stat 2.0 format of the Eurostat API. I also publish this parser as a small separate library, kotlin-jsonstat, for Kotlin Multiplatform.

EU Stats is an independent open-source client. It is not affiliated with Eurostat or the European Commission. The data comes from Eurostat under the CC BY 4.0 licence.

Key facts

  • Kotlin Multiplatform + Compose Multiplatform
  • Android, iOS and desktop (JVM)
  • 8 thematic modules, live Eurostat data
  • 8 chart types on Compose Canvas
  • UI in English, Polish and Ukrainian
  • ~1,000 automated tests, GitHub Actions CI
  • Open source, AGPL-3.0
  • No account, no analytics, no tracking

Tech stack

Kotlin Multiplatform from the network layer to the UI

Kotlin Multiplatform Compose Multiplatform Decompose Ktor SQLDelight Koin kotlinx.serialization Coroutines & Flow Compose Canvas GitHub Actions AGPL-3.0

See the code

The source code is on GitHub under the AGPL-3.0 licence. The app is in active development.