Volver a proyectos

2025 · Ingeniero de Datos · Desarrollo · Código abierto

World Bank Data Browser

Una aplicación web que sincroniza el catálogo de Indicadores del Banco Mundial en PostgreSQL y ofrece un panel para explorar, consultar y descargar datos de desarrollo global.

Python 3.12FastAPISQLAlchemy (async)PostgreSQL 16AlembicDocker

Resumen

El Banco Mundial publica miles de indicadores de desarrollo — PIB, población, salud, educación, clima — pero la API de Indicadores en crudo es incómoda de explorar y lenta de consultar a escala. World Bank Data Browser lo resuelve: sincroniza todo el catálogo en una base de datos PostgreSQL local, y luego ofrece un panel claro para explorar fuentes, indicadores y países, y para consultar y descargar las series de tiempo detrás de ellos.

Es una plataforma de datos compacta y de extremo a extremo — ingesta, modelado, almacenamiento y entrega — construida con la misma forma que los sistemas de producción.

Qué hace

  • Sincronización del catálogo — en el primer arranque trae automáticamente el catálogo completo del Banco Mundial (fuentes, indicadores, países) a Postgres.
  • Explorar y buscar — recorre fuentes e indicadores, con búsqueda de texto difusa impulsada por pg_trgm de Postgres.
  • Consultar y descargar — obtén la serie de tiempo de cualquier indicador/país y expórtala para su uso posterior.
  • Panel en modo oscuro — una interfaz renderizada en el servidor, sin un build pesado de frontend.

Bajo el capó

  • FastAPI sirve tanto las rutas de la API como las páginas renderizadas con Jinja2.
  • SQLAlchemy async + Alembic modelan los datos y gestionan las migraciones, que se ejecutan automáticamente al iniciar el contenedor.
  • ETL resiliente — el cliente del Banco Mundial usa httpx con tenacity para reintentos y backoff, de modo que las fallas transitorias de la API no rompan una sincronización.
  • PostgreSQL 16 con la extensión pg_trgm para búsqueda difusa rápida.
  • Dockerizado de extremo a extremo con Docker Compose, con un pipeline de GitHub Actions que ejecuta lint y pruebas sobre la misma imagen usada en producción.

Por qué está aquí

Este proyecto es la imagen más clara de cómo trabajo en el lado de datos: tomar una fuente externa desordenada, hacerla resiliente para ingerir, modelarla correctamente, y ponerle una interfaz usable encima. También es la base técnica de las herramientas de IA y productividad que estoy construyendo a continuación en tools.cyv.me — la misma base de FastAPI, una nueva superficie.