Escritos
El panel de transparencia, ahora en tu bolsillo
La API de consulta de transparencia lleva ya un tiempo con un panel web. Lo que no tenía era un icono en la pantalla de inicio. Así que el explorador de datos es ahora una app nativa — funciona en Android y en el escritorio, desde una única base de código Kotlin Multiplatform, y habla con exactamente la misma API pública que el sitio web.
Puedes descargar la versión de Android e instalarla manualmente hoy mismo.
¿Por qué una app?
La mayor parte de estos datos son algo que consultas, no algo que te sientas a estudiar — una tendencia de retiradas, cómo se comparan las cifras de una plataforma con las de otra, qué aspecto tienen las solicitudes de un país determinado en este periodo. Eso es una interacción de teléfono, no de escritorio. Un panel que presupone una pantalla ancha y un ratón hace que el vistazo rápido sea más difícil de lo que debería. La app está construida al revés: primero el teléfono, y los diseños anchos son lo que se expande a partir de ahí, y no al contrario.
Una base de código, dos plataformas
Todo lo relevante vive en un único conjunto de fuentes compartido: los DTO, el cliente Ktor que llama a /api/overview y /api/explore, el repositorio que construye cada consulta, y cada pantalla y gráfico. Compose Multiplatform renderiza esa misma interfaz en Android y en una ventana de escritorio. Solo dos cosas son específicas de cada plataforma — el punto de entrada (un Activity en Android, una ventana en el escritorio) y el motor HTTP, conectados mediante expect/actual de Kotlin para que Android use OkHttp y el escritorio use CIO. No hay una segunda implementación de la app que mantener sincronizada, porque no hay una segunda implementación.
La misma disciplina que mantiene honesta a la API se traslada al cliente: nunca envía SQL. Una consulta es un ExploreRequest estructurado — un nombre de tabla más filtros tipados, agrupaciones y agregados — que el servidor valida y compila. La app construye esas solicitudes; no construye cadenas de texto. Añadir una nueva vista de conjunto de datos es un método del repositorio, no una consulta escrita a mano.
Primero el móvil, y en serio
El diseño mide su propio ancho y se adapta. Por debajo de un punto de ruptura es un teléfono: navegación inferior, una sola columna y un flujo de exploración que va de lista → detalle como esperarías en una pantalla pequeña. Por encima, las mismas pantallas se expanden en un riel de navegación y una vista maestro-detalle. Como las pantallas no tienen estado — el estado se eleva a un único view-model que expone un estado de interfaz inmutable como StateFlow — los composables idénticos se renderizan en un teléfono, en una ventana de escritorio y en el arnés de capturas que produjo los fotogramas de arriba.
Los gráficos se dibujan en el lienzo de Compose en lugar de obtenerse de un servicio de imágenes, así que se ven nítidos a cualquier densidad y son honestos sobre lo que muestran — las bandas siguen siendo bandas, las tasas nunca se suman, y un periodo sin datos se lee como sin datos en lugar de como un cero.
Los detalles de Android que vale la pena cuidar
Una app nativa debe sentirse nativa, lo que es un montón de pequeñas cosas: un icono de lanzador adaptable con una capa monocroma para los iconos con temática, accesos directos de lanzador que saltan directamente a la vista de retiradas o al explorador de conjuntos de datos, predictive-back para que el gesto de retroceso del sistema muestre una vista previa de adónde te diriges, y ajustes de idioma por app que aparecen en la propia lista de Android — la app ya está traducida a ocho idiomas, así que respeta el que elijas ahí. La versión de lanzamiento pasa por R8 con reducción de recursos, que es como una app Compose completa acaba pesando alrededor de 1,5 MB.
Cómo conseguirla
El APK de Android es una descarga directa — habilita las instalaciones desde tu navegador y ábrelo. Son los mismos datos, el mismo modelo de consulta y las mismas salvedades que el panel web; solo que ahora vive en tu pantalla de inicio. La versión de escritorio se ejecuta desde la misma base de código si prefieres tenerla en una ventana.