Phase 4 · 8 modules met echte data

Eurostat-gegevens
op elk scherm.

Een open-source mobiele en desktopapplicatie voor de publieke Eurostat API. Acht thematische modules — economie, bevolking, milieu, handel, vervoer, toerisme, sociaal, wetenschap — op één Kotlin Multiplatform codebase.

🇪🇺Onafhankelijke open-source client van derden. Niet gelieerd aan Eurostat of de Europese Commissie.

Overzicht van alle acht modules in de EU Stats-app
18
Eurostat-datasets
8
thematische modules
444
unit tests geslaagd
AGPL-3.0
open-sourcelicentie
Wat het doet

Publieke Europese gegevens, behandeld als een volwaardig product.

Rustige, redactionele interface. Stale-while-revalidate-caching. Echte API-aanroepen, geen nep. Ontworpen voor burgers, journalisten en studenten die Europese statistieken willen verkennen zonder afhankelijk te zijn van één enkele leverancier.

Echte data uit de publieke API

Alle acht modules laden live data van de officiële Eurostat-disseminatie-API — 18 datasets in totaal. Geen hardgecodeerde nep; geen demobases.

Stale-while-revalidate-caching

SQLDelight-cache met een TTL van 12 uur. Gecachede data verschijnt direct; de netwerkverversing vindt op de achtergrond plaats achter een rustige stalebanner. Offline betekent nooit een leeg scherm.

Acht thematische modules

Economie, bevolking, milieu, handel, vervoer, toerisme, sociaal, wetenschap. Elke module beheert zijn eigen dataset, schakelpatroon en een kenmerkende grafiek die past bij de datavorm.

Pure Compose Canvas-grafieken

Acht grafiektypen — lijn, gestapelde balk, piramide, heatmap, divergerende balk, radar, small-multiples, meerlijns-gemarkeerd — getekend op een Compose Canvas zonder externe renderingafhankelijkheden.

Multiplatform vanaf dag één

Android-telefoon & tablet, iPhone & iPad, en een zelfstandige Compose Desktop .jar voor macOS, Linux en Windows — vanuit één gedeelde Kotlin-codebase.

Jaarkiezer op elk scherm

Onlangs toegevoegd: kies een historisch jaar en de kopregel met statistiektegels werkt direct bij — zonder een nieuwe netwerkoproep. De grafiek behoudt de volledige reeks; het jaar stuurt alleen de weergavewaarden.

Acht modules

Open een tabblad. Kies een land. Schuif door de jaren.

Elke module beheert een dataset, een schakelpatroon en een kenmerkende grafiek die past bij de vorm van de data. Beschrijvingen zijn rechtstreeks overgenomen uit het project-README.

Bevolkingsmodule — sleep de jaarschuifregelaar om de piramide te vormen

Bevolking

demo_pjangroup · 18 cohorten · M/V/T

Een demografische piramide voor 18 leeftijdscohorten (vijfjaarsbanden, Y_LT5 t/m Y_GE85). De kopregel toont de totale bevolking met jaar-op-jaarverandering. Een drievoudige gesegmenteerde bediening (Totaal / Mannen / Vrouwen) dimt de tegenovergestelde zijde van de piramide bij enkelvoudige geslachtsselectie. Een jaarschuifregelaar doorloopt de beschikbare jaren; een rij met landchips wisselt het actieve land zonder opnieuw op te halen.

piramidegrafiek jaarschuifregelaar M/V/T gesegmenteerd
Economiemodule — bbp, HICP-inflatie en begrotingssaldo

Economie

nama_10_gdp · prc_hicp_aind · gov_10dd_edpt1

Drie macro-indicatoren — bbp in lopende prijzen (miljard EUR), HICP-inflatie-index (2015 = 100), en het netto financieringssaldo van de overheid als % van het bbp — weergegeven als een meerlijns grafiek voor meerdere landen. Een gesegmenteerde bediening schakelt de actieve statistiek; de twee inactieve statistieken blijven zichtbaar als gedimde secundaire tegels. Een jaar- schuifregelaar met twee handvatten begrenst het x-bereik; een afzonderlijk jaardropdown kiest het jaar voor de kopregel.

meerlijns grafiek statistiek gesegmenteerd schuifregelaar met twee handvatten
Milieumodule — broeikasgassen, energie en SDG 13-klimaatindex

Milieu

env_air_gge · nrg_bal_c · sdg_13_10

Drie klimaatdatasets selecteerbaar via een dropdown: broeikasgasemissies in Mt CO₂-eq, eindenergieverbruik in ktoe, en de SDG 13-klimaatindex bij 1990 = 100. Wanneer Broeikasgassen of Energie actief is, filtert een chiprij op sector (TOTAAL / VERVOER / INDUSTRIE). De hoofdgrafiek is een lijndiagram dat het actieve land vergelijkt met één referentieland; twee statistiektegels tonen de andere twee statistieken voor hetzelfde jaar.

statistiek-dropdown sectorchiprij vergelijkingslijn peer
Handelsmodule — divergerende balken voor uitvoer, invoer en saldo

Handel

ext_lt_intratrd

Intra-EU goederenhandelsstromen — uitvoer, invoer en handelsbalans in miljard EUR. De hoofdgrafiek is een divergerende balkgrafiek over de acht meest recente jaren, waarbij uitvoer rechts en invoer links uitsteekt. Drie onderstreepte tabbladen (Uitvoer / Invoer / Saldo) markeren de relevante richting. Twee compacte statistiektegels tonen de cijfers van het actieve land voor het geselecteerde jaar.

divergerende balkgrafiek onderstreepte tabbladen jaar-dropdown
Vervoermodule — small multiples van weg- en luchtpassagiers

Vervoer

road_pa_buscoa · avia_paoc

Weg- en luchtpassagiersvolumes weergegeven als small-multiple lijndiagrammen naast elkaar. Wegdata (miljard passagiers) en luchtdata (miljoen passagiers) worden onafhankelijk geschaald per paneel. Een pillenschakelaar (WEG / LUCHT / ALLE) bepaalt welke panelen zichtbaar zijn. Een logaritmische schakelaar comprimeert de as voor landen met sterk uiteenlopende grootten. Drie statistiektegels vatten weg, lucht en een tegel "zee: n.v.t." samen, die eerlijk verklaart waarom de havengekoppelde dataset bewust is weggelaten.

small multiples pillenschakelaar logaritmische schaalknop
Toerismemodule — gestapelde overnachtingen en seizoenaliteitsheatmap

Toerisme

tour_occ_ninat · tour_occ_nim

Overnachtingen in logiesaccommodaties — binnenlandse, buitenlandse en totale overnachtingen — weergegeven als een gestapelde balkgrafiek over de negen meest recente jaren. Een chiprij bepaalt welke statistiek de kopregel aanstuurt. Onder de gestapelde balken toont een maandelijkse seizoenaliteitsheatmap (cellen = maand × jaar) de verdeling van overnachtingen door het kalenderjaar.

gestapelde balken chiprij seizoenaliteitsheatmap
Sociale module — KPI-tegels sturen een gemarkeerd lijndiagram

Sociaal

ilc_li02 · ilc_peps01 · hlth_silc_01

Drie welzijnspercentage-indicatoren afkomstig uit EU-SILC-enquêtes: armoederisicodrempel, armoede- of sociale uitsluitingsrisico, en het aandeel van de bevolking dat een zeer goede zelfbeoordeelde gezondheid rapporteert. Alle drie worden tegelijk weergegeven als een meerlijns gemarkeerd diagram; een tik op een KPI-tegel verschuift de nadruk naar die reeks en werkt de kopwaarde bij.

meerlijns gemarkeerd KPI-tegelkiezer jaarschuifregelaar
Wetenschapsmodule — radargrafiek van O&O, internetgebruik en tertiair onderwijs

Wetenschap

rd_e_gerdtot · isoc_ci_ifp_iu · edat_lfse_03

Drie innovatie-indicatoren — O&O-uitgaven als % van het bbp, internetgebruikspercentage, en het aandeel tertiair opgeleiden onder 25–64-jarigen — tegelijk weergegeven op een radargrafiek. De radar projecteert het actieve land over één referentieland (voorkeur DE, dan FR, dan EU27). Drie sparklines eronder tonen altijd de volledige trend. Er is geen statistiekkiezer; de radar presenteert alle drie assen tegelijk.

radargrafiek peer-overlay drie sparklines
Onder de motorkap

Bedachtzame, conservatieve keuzes — met opzet.

Clean Architecture verdeeld over 17 Gradle-modules. Elke laag heeft een sealed contract. Geen !!-operator; geen externe grafiekbibliotheken; geen dispatcher-lekken.

Architectuur

  • Multi-module Clean Architecture — datadomainui
  • Result<T> · AppError · DispatcherProvider contracten
  • Decompose voor navigatie, componenten & levenscyclus
  • Koin voor dependency injection
  • Stale-while-revalidate repositorypatroon

Data

  • Ktor Client — Darwin engine op iOS, OkHttp op Android
  • kotlinx.serialization voor JSON & cacheblobs
  • SQLDelight-schema's met getypte DAO's
  • Eigen JSON-stat 2.0-parser in core-jsonstat
  • Coroutines + Flow + StateFlow door de hele codebase

UI

  • Compose Multiplatform — Android, iOS, Desktop
  • object Euro ontwerptokens — kleuren, typografie, afstand, vormen
  • ~25 herbruikbare composables in core-ui
  • Acht grafiektypen op pure Compose Canvas — geen Koalaplot
  • kotlin.test & Turbine voor unit- en flow-tests
Drie vormfactoren

Telefoon, tablet, desktop — dezelfde Compose-code.

Een journalist op de desktop, een student op een tablet, een burger op een telefoon — dezelfde data, dezelfde componenten, dezelfde rendering. Al gerealiseerd op infrastructuurniveau.

Android
Android telefoon · tablet
iOS
iPhone · iPad
macOS · Linux · Windows
Compose Desktop

Één Kotlin-codebase. Compose Multiplatform-interface. Systeemeigen widgets op elk platform.

Roadmap

Eerlijk over wat beschikbaar is, wat volgt en wat financiering nodig heeft.

Het project bevindt zich in Phase 4: alle acht modules tonen echte data op Android. Phase 5 voltooit de shell — overzicht, landkiezer, instellingen — en Phase 6 brengt de eerste release uit.

Nu beschikbaar

Phase 4 · geverifieerd
  • Acht thematische modules volledig gekoppeld aan echte Eurostat-data
  • Stale-while-revalidate-caching · offline bestand een vlucht
  • Jaarkiezer op elke module · kopregel werkt bij zonder nieuwe ophaling
  • Acht grafiektypen op pure Compose Canvas
  • Android APK compileert · Compose Desktop .jar draait op macOS/Linux/Windows
  • Uitgebracht onder AGPL-3.0

Volgende mijlpaal (M1)

Phase 5 · in uitvoering
  • Overzichtsdashboard — beginscherm met tegelraster
  • Landkiezer — doorzoekbare lijst en tikken op de kaart
  • iOS-rooktest in simulator · alle acht tabbladen verifiëren
  • Instellingen opslaan · thema, standaardland, taal
  • Echte vlagrendering · gebundeld Inter-lettertype

Financieringsdoelen (M2 · M3)

Phase 6 · NLnet-kandidaat
  • Lokalisatie · Poolse & Oekraïense vertalingen
  • Systeemeigen installatiepakketten · .dmg, .msi, .deb, Flatpak
  • Meerlandenvergelijking · overlay of small-multiples
  • Moduleoverschrijdende zoekopdracht · indicatorenindex over alle acht modules
  • Breedbeeldlay-outs voor hoofd-detail op tablet en desktop
Open source · publiek belang

Onafhankelijk gebouwd. Uitgebracht onder AGPL-3.0.

Momenteel wordt onderzocht of een NLnet open-call-indiening de volgende mijlpalen kan financieren. Burgers, journalisten en studenten moeten publieke Europese data kunnen verkennen zonder afhankelijk te zijn van één leverancier — op elk apparaat dat ze al bezitten.

Roadmap lezen