Un buen plan para esta noche, en lugar de 200 opciones
Un mapa gratuito de lo que pasa esta noche en París, ordenado por cultura y por categoría, pensado para ayudar a elegir y no para abrumar.
La necesidad
Después de una semana intensa, apetece salir, pero recorrer cientos de eventos agota. Demasiadas opciones suelen acabar en quedarse en casa.
La idea
El problema no es la falta de opciones, sino su número. Por eso la aplicación parte de una sola pregunta —¿qué puedo hacer esta noche, cerca de aquí?— en lugar de abrirse con un catálogo.
Lo que construí
- Un sitio que se abre directamente en los eventos de esta noche, sobre un mapa, diseñado ante todo para el móvil.
- Un recolector automático que reúne los eventos de los datos abiertos del Ayuntamiento de París, de los institutos culturales extranjeros en París (FICEP) y de otros flujos públicos, y actualiza cada fuente a su propio ritmo.
- Una forma de explorar por cultura de origen y por categoría, para seguir lo que te apetezca.
- Redes de seguridad: si una fuente falla, se siguen sirviendo los últimos datos válidos y la página de estado indica «degradado» en lugar de caerse.
El resultado
- 27.623eventos en su base de datos (medido el 6 de octubre de 2026)
- 0eventos sin ubicación en el mapa
- 4fuentes de datos abiertos y de recintos, combinadas automáticamente (medido el 6 de octubre de 2026)
En línea en eventmap.hamdy-tabsissi.com desde el 23 de agosto de 2026. Cada evento de la base de datos aparece en el mapa y los datos se actualizan solos.
En imágenes
Lo que aprendí
Probar los datos antes de diseñar el producto: un sondeo rápido de la fuente dio cero eventos en Nanterre y catorce en Montreuil, así que reduje el alcance a París en lugar de mantener scrapers frágiles. Y los fallos silenciosos cuestan más que las caídas: unas fechas comparadas como texto ocultaban eventos sin hacer ruido, hasta que las pruebas lo detectaron.
Detalles técnicos Tecnologías, arquitectura y decisiones, para lectores técnicos
Tecnologías
- Python (FastAPI, asyncio)
- SQLite
- Leaflet + OpenStreetMap
- nginx
- systemd
- Ubuntu 22.04
La arquitectura de un vistazo
- El móvil o el navegador del visitante
- nginx — proxy inverso, cabeceras de seguridad
- Aplicación FastAPI (uvicorn) — servicio systemd limitado a 127.0.0.1, con cuotas de CPU y memoria
- SQLite — eventos, fuentes, eliminación de duplicados
- Recolector cada 6 horas ← datos abiertos del Ayuntamiento de París + FICEP (OpenAgenda)
Cómo funciona
- Ingesta asíncrona (asyncio) de varias fuentes abiertas —entre ellas Que faire à Paris (Ayuntamiento de París, licencia ODbL), FICEP y OpenAgenda (.ics)— en SQLite, con eliminación de duplicados. La lista de fuentes activas está en /health.
- Actualización fuente por fuente y tolerante a fallos: una fuente que falla nunca borra los datos existentes; /health indica el estado de cada fuente y pasa a «degraded».
- Alcance reducido de Nanterre–París–Montreuil a París tras auditar 13 sitios de la periferia sin ninguna fuente aprovechable (ni .ics ni JSON-LD Event). La arquitectura multifuente sigue lista.
- Servicio aislado: usuario de sistema dedicado sin shell, cuotas de CPU y memoria en systemd, aplicación limitada a 127.0.0.1 detrás de nginx.
- Fallo detectado en las pruebas: fechas comparadas como cadenas de texto, que excluían eventos en producción sin avisar; corregido y documentado.
Incidentes y soluciones
- Del 24 de septiembre al 5 de octubre de 2026, la fuente del Ayuntamiento de París era inaccesible desde el servidor (error de DNS): EventMap siguió sirviendo los últimos datos válidos y /health indicaba «degraded» nombrando la fuente. Cuando la fuente volvió, una restricción de la base de datos (un duplicado que apuntaba a una fila que se estaba purgando) hacía fallar cada actualización en silencio, mientras /health mostraba «ok» por error. Reproducido en local, corregido, cubierto por dos pruebas y redesplegado el mismo día: 16.160 eventos actualizados.
Lo que aún falta
- Solo París
- Depende de la calidad de las fuentes públicas de datos abiertos