Phase 4 · 8 módulos com dados reais

Dados do Eurostat,
em todos os ecrãs.

Um cliente móvel e de secretária, open-source, para a API pública do Eurostat. Oito módulos temáticos — economia, população, ambiente, comércio, transporte, turismo, social, ciência — numa única base de código Kotlin Multiplatform.

🇪🇺Cliente open-source independente de terceiros. Não afiliado ao Eurostat nem à Comissão Europeia.

Visão geral dos oito módulos na aplicação EU Stats
18
conjuntos de dados Eurostat
8
módulos temáticos
444
testes unitários aprovados
AGPL-3.0
licença open-source
O que faz

Dados públicos europeus, tratados como um produto de primeira classe.

Interface calma e editorial. Cache stale-while-revalidate. Chamadas reais à API, sem dados fictícios. Concebido para cidadãos, jornalistas e estudantes que querem explorar estatísticas europeias sem depender de um único fornecedor.

Dados reais da API pública

Os oito módulos carregam dados em direto da API oficial de disseminação do Eurostat — 18 conjuntos de dados no total. Sem dados fictícios fixos; sem bases de demonstração.

Cache stale-while-revalidate

Cache SQLDelight com TTL de 12 horas. Os dados em cache são apresentados de imediato; a atualização de rede ocorre em segundo plano, com um aviso discreto. Sem ligação nunca significa ecrã em branco.

Oito módulos temáticos

Economia, população, ambiente, comércio, transporte, turismo, social, ciência. Cada módulo gere o seu conjunto de dados, o seu padrão de comutação e um gráfico característico adequado à forma dos dados.

Gráficos em Compose Canvas puro

Oito tipos de gráfico — linha, barras empilhadas, pirâmide, mapa de calor, barras divergentes, radar, small-multiples, multilinha realçado — desenhados num Canvas Compose sem dependências de renderização externas.

Multiplataforma desde o início

Telemóvel & tablet Android, iPhone & iPad, e um .jar Compose Desktop autónomo para macOS, Linux e Windows — a partir de uma única base de código Kotlin partilhada.

Seletor de ano em todos os ecrãs

Recentemente lançado: escolha qualquer ano histórico e o título com os mosaicos de estatísticas atualiza-se de imediato, sem nova chamada à rede. O gráfico mantém a série completa; o ano apenas controla os valores apresentados.

Oito módulos

Abra um separador. Escolha um país. Percorra os anos.

Cada módulo gere um conjunto de dados, um padrão de comutação e um gráfico característico adequado à forma dos dados. As descrições foram transcritas diretamente do README do projeto.

Módulo de população — arraste o controlo deslizante de ano para moldar a pirâmide

População

demo_pjangroup · 18 coortes · M/F/T

Uma pirâmide demográfica para 18 coortes etárias (faixas de cinco anos, Y_LT5 a Y_GE85). O título mostra a população total com variação anual. Um controlo segmentado de três opções (Total / Homens / Mulheres) esbate o lado oposto da pirâmide ao selecionar um único sexo. Um controlo deslizante percorre os anos disponíveis; uma fila de chips de país muda o país ativo sem novo pedido de dados.

gráfico de pirâmide controlo deslizante de ano segmentado M/F/T
Módulo de economia — PIB, inflação IHPC e défice

Economia

nama_10_gdp · prc_hicp_aind · gov_10dd_edpt1

Três indicadores macroeconómicos — PIB a preços correntes (mil milhões EUR), índice de inflação IHPC (2015 = 100), e capacidade/necessidade líquida de financiamento do setor público em % do PIB — apresentados como um gráfico de várias linhas e vários países. Um controlo segmentado comuta o indicador ativo; os dois indicadores inativos permanecem visíveis como mosaicos secundários esbatidos. Um controlo deslizante com dois pontos limita o intervalo do eixo x; um menu suspenso de ano distinto seleciona o ano do título.

gráfico multilinha indicador segmentado controlo deslizante duplo
Módulo de ambiente — GEE, energia e índice climático ODS 13

Ambiente

env_air_gge · nrg_bal_c · sdg_13_10

Três conjuntos de dados climáticos selecionáveis por menu suspenso: emissões de gases com efeito de estufa em Mt CO₂-eq, consumo final de energia em ktoe, e o índice climático ODS 13 com 1990 = 100. Quando GEE ou Energia está ativo, uma fila de chips filtra por setor (TOTAL / TRANSPORTE / INDÚSTRIA). O gráfico principal é uma linha que compara o país ativo com um país de referência; dois mosaicos de estatísticas mostram os outros dois indicadores para o mesmo ano.

menu suspenso de indicador fila de chips de setor linha de comparação par
Módulo de comércio — barras divergentes para exportações, importações e saldo

Comércio

ext_lt_intratrd

Fluxos de comércio intra-UE de bens — exportações, importações e balança comercial em mil milhões EUR. O gráfico principal é um diagrama de barras divergentes que abrange os oito anos mais recentes, com as exportações a estender-se para a direita e as importações para a esquerda. Três separadores sublinhados (Exportações / Importações / Saldo) realçam a direção relevante. Dois mosaicos de estatísticas compactos mostram os valores do país ativo para o ano selecionado.

gráfico de barras divergentes separadores sublinhados menu suspenso de ano
Módulo de transporte — small multiples de passageiros rodoviários e aéreos

Transporte

road_pa_buscoa · avia_paoc

Volumes de passageiros rodoviários e aéreos apresentados como gráficos de linhas small-multiples lado a lado. Os dados rodoviários (mil milhões de passageiros) e os dados aéreos (milhões de passageiros) são escalados de forma independente por painel. Um botão de alternância em pílula (RODOVIÁRIO / AÉREO / TODOS) controla quais os painéis visíveis. Uma opção de escala logarítmica comprime o eixo para países com grandezas muito díspares. Três mosaicos de estatísticas resumem rodoviário, aéreo e um mosaico "mar: n/d" que explica honestamente por que o conjunto de dados baseado em portos foi intencionalmente excluído.

small multiples botão pílula escala logarítmica
Módulo de turismo — dormidas empilhadas e mapa de calor de sazonalidade

Turismo

tour_occ_ninat · tour_occ_nim

Dormidas em estabelecimentos de alojamento turístico — dormidas nacionais, estrangeiras e totais — apresentadas como um gráfico de barras empilhadas que cobre os nove anos mais recentes. Uma fila de chips controla qual o indicador que define o valor do título. Abaixo das barras empilhadas, um mapa de calor de sazonalidade mensal (células = mês × ano) mostra a distribuição das dormidas ao longo do calendário.

barras empilhadas fila de chips mapa de calor de sazonalidade
Módulo social — mosaicos KPI conduzem um gráfico de linhas realçado

Social

ilc_li02 · ilc_peps01 · hlth_silc_01

Três indicadores percentuais de bem-estar extraídos dos inquéritos EU-SILC: taxa de risco de pobreza, taxa de risco de pobreza ou exclusão social, e a percentagem da população que declara um estado de saúde muito bom. Os três são traçados em simultâneo num gráfico multilinha realçado; tocar num mosaico KPI desloca a ênfase para essa série e atualiza o valor do título.

multilinha realçado seletor de mosaico KPI controlo deslizante de ano
Módulo de ciência — gráfico radar de I&D, utilização da internet e ensino superior

Ciência

rd_e_gerdtot · isoc_ci_ifp_iu · edat_lfse_03

Três indicadores de inovação — despesa em I&D em % do PIB, taxa de utilização da internet, e nível de habilitações superiores entre 25–64 anos — apresentados simultaneamente num gráfico radar. O radar sobrepõe o país ativo a um país par (preferindo DE, depois FR, depois EU27). Três sparklines abaixo mostram sempre a tendência completa. Não existe comutador de indicador; o radar apresenta os três eixos de uma só vez.

gráfico radar sobreposição par três sparklines
Por baixo do capô

Escolhas sólidas e conservadoras — por decisão própria.

Clean Architecture distribuída por 17 módulos Gradle. Cada camada tem um contrato sealed. Sem operador !!; sem gráficos de terceiros; sem fugas de dispatcher.

Arquitetura

  • Clean Architecture multi-módulo — datadomainui
  • Contratos Result<T> · AppError · DispatcherProvider
  • Decompose para navegação, componentes & ciclo de vida
  • Koin para injeção de dependências
  • Padrão de repositório stale-while-revalidate

Dados

  • Ktor Client — motor Darwin no iOS, OkHttp no Android
  • kotlinx.serialization para JSON & blobs de cache
  • Esquemas SQLDelight com DAOs tipados
  • Analisador JSON-stat 2.0 desenvolvido internamente em core-jsonstat
  • Coroutines + Flow + StateFlow em toda a base de código

Interface

  • Compose Multiplatform — Android, iOS, Desktop
  • Tokens de design object Euro — cores, tipografia, espaçamento, formas
  • ~25 composables reutilizáveis em core-ui
  • Oito tipos de gráfico em Compose Canvas puro — sem Koalaplot
  • kotlin.test & Turbine para testes unitários e de fluxo
Três fatores de forma

Telemóvel, tablet, secretária — o mesmo código Compose.

Um jornalista na secretária, um estudante num tablet, um cidadão no telemóvel — os mesmos dados, os mesmos componentes, a mesma renderização. Já implementado ao nível da infraestrutura.

Android
Android telemóvel · tablet
iOS
iPhone · iPad
macOS · Linux · Windows
Compose Desktop

Uma base de código Kotlin. Interface Compose Multiplatform. Elementos nativos em cada plataforma.

Roadmap

Transparentes sobre o que existe, o que vem a seguir e o que precisa de financiamento.

O projeto está na Phase 4: os oito módulos apresentam dados reais no Android. A Phase 5 conclui a shell — visão geral, seletor de país, definições — e a Phase 6 lança a primeira versão.

Disponível hoje

Phase 4 · verificado
  • Oito módulos temáticos ligados de ponta a ponta a dados reais do Eurostat
  • Cache stale-while-revalidate · offline sobrevive a um voo
  • Seletor de ano em todos os módulos · título atualiza sem novo pedido
  • Oito tipos de gráfico em Compose Canvas puro
  • APK Android compilado · .jar Compose Desktop funciona em macOS/Linux/Windows
  • Lançado sob AGPL-3.0

Próximo marco (M1)

Phase 5 · em curso
  • Ecrã de visão geral — grelha de mosaicos de entrada
  • Seletor de país — lista pesquisável e toque no mapa
  • Teste de fumo iOS no simulador · verificar os oito separadores
  • Persistência de definições · tema, país predefinido, idioma
  • Renderização real de bandeiras · tipo de letra Inter integrado

Objetivos de financiamento (M2 · M3)

Phase 6 · candidato NLnet
  • Localização · traduções para polaco e ucraniano
  • Instaladores nativos · .dmg, .msi, .deb, Flatpak
  • Comparação entre países · sobreposição ou small-multiples
  • Pesquisa transversal · índice de indicadores nos oito módulos
  • Esquemas mestre-detalhe em ecrã largo para tablet e secretária
Open source · interesse público

Desenvolvido de forma independente. Lançado sob AGPL-3.0.

Estamos a explorar a submissão a um open-call da NLnet para financiar os próximos marcos. Cidadãos, jornalistas e estudantes devem poder explorar dados públicos europeus sem depender de um único fornecedor — em qualquer dispositivo que já possuam.

Ler o roadmap