Créditos y licencias
¿Qué Onda? se construye sobre datos y recursos de terceros. Esta página los lista con su licencia y enlace original. El código del proyecto se publica bajo GNU AGPL-3.0.
Iconos
- Simple Icons— CC0 1.0 Universal. Logos de marca usados para identificar el buscador al que lleva cada enlace. CC0 cubre el archivo SVG, no la marca registrada: se usan sólo de forma nominativa, sin alterar el logotipo ni sugerir respaldo.
- Twemoji— CC-BY 4.0. SVG de emoji usados en la sección de Fiestas Patrias.
- Iconos inline (SVG) del propio proyecto (sonido, navegación, controles) — parte del código, AGPL-3.0.
Tipografía
Imágenes
Recursos estáticos versionados.
Recursos estáticos versionados
- ÚnicoFoto de portada del footer — modernwolo en UnsplashUnsplash License
- ÚnicoLogos de radios de respaldo — solo cuando el listado remoto de radios fallaMarcas de cada emisora; archivos vía Wikimedia Commons - Radio Cooperativa, Radio Duna, ADN Radio
- ÚnicoFavicons de medios — favicon de cada medio en las tarjetas de noticias, con respaldo en cascadaServicios públicos — sin licencia explícita - Google, DuckDuckGo, Icon Horse
Fondos de portada (rotan por día)
Pexels License · 29 fotos
- Thiago Matos
- Luis G
- Santi Echaire
- Santi Echaire
- Santi Echaire
- Cláudio Castro
- Willian Justen de Vasconcellos
- Michel Jose
- Michel Jose
- Eduardo Rivas
- Matheus Pedrosa
- Cláudio Castro
- Athenea Codjambassis Rossitto
- Fermin Rodriguez Penelas
- Vivi Pascar
- Saif
- William Warby
- Belen Capello
- Chris Flxxx
- Xiang Qi
- Alex Quezada
- Kimberly Alves
- André Sasaki
- Wycher van Vliet
- Gino Matteucci
- Alexis Leandro Jeria Bocca
- Adrian Rivero
- Nair Cristopher Sánchez Muñoz
- Mateusz Walendzik
Discos CD (PNGImg)
Usados de forma decorativa en el reproductor de radio · CC BY-NC 4.0
Datos y APIs
Cada endpoint indica su cadena de respaldo: Primario → Respaldo → Final (caché). Cada widget muestra en pantalla las fuentes que realmente usó.
Clima (/api/weather)
Fallback secuencial: Open-Meteo → Gael Cloud → Boostr
- PrimarioOpen-Meteo — api.open-meteo.com/v1/forecast, todas las ciudades en una llamada, timeout 8sCC BY 4.0
- RespaldoGael Cloud — api.gael.cloud/general/public/clima/{ICAO}, timeout 8sAPI pública — sin licencia explícita
- RespaldoBoostr — api.boostr.cl/weather/{ICAO}.json, timeout 5sAPI pública — sin licencia explícita
- ÚnicoOpen-Meteo Geocoding — búsqueda y geolocalización inversa en el widget de climaCC BY 4.0 (datos GeoNames)
- ÚnicoDMC — pronostico.js (5 días, ~60 ciudades) vía /api/forecastDatos públicos del Estado — sin licencia explícita
- ÚnicoWindy — mapa de radar y precipitación embebidoEmbed gratuito con atribución
Sismos / Emergencias (/api/emergency)
Fallback secuencial (magnitud mínima 5.0; pasa al siguiente si items.length === 0)
- PrimarioGael Cloud — api.gael.cloud/general/public/sismos, timeout 10s; los datos provienen del CSNAPI pública — sin licencia explícita
- RespaldoBoostr — api.boostr.cl/earthquakes/recent.json, timeout 10s; añade coordenadasAPI pública — sin licencia explícita
- RespaldoUSGS — earthquake.usgs.gov/.../2.5_day.geojson, filtrado a Chile/Sudamérica, timeout 10sDominio público (USGS)
- ÚnicoCSN (U. de Chile) — origen de los datos sísmicos; enlace de cada sismo (no se consulta directamente)Datos públicos — sin licencia explícita
Alertas SENAPRED (canal independiente)
Única fuente
- ÚnicoTelegram SenapredChile — scraping de t.me/s/SenapredChile (BROWSER_UA); parsea .js-widget_message (data-post, <time datetime>, .js-message_text); severidad por keyword (desborde/aluvión/evacuar→critical, crecida/incendio/SAE/alerta→high, preventivo/monitoreo→moderate, else low)Canal oficial público — sin licencia explícita
Finanzas (/api/finance)
Merge: itera todas las fuentes y llena indicadores faltantes; se detiene si ya tiene los 5
- Primariomindicador.cl — mindicador.cl/api, UF, USD, EUR, IPC, UTM, timeout 8sUso libre — sin licencia explícita
- RespaldoBoostr — api.boostr.cl/economy/indicators.json, timeout 8sAPI pública — sin licencia explícita
- Respaldofindic.cl — findic.cl/api/, timeout 8sUso libre — sin licencia explícita
- RespaldoSII — zeus.sii.cl/admin/rss/sii_ind_rss.xml, timeout 8sDatos públicos del Estado — sin licencia explícita
- RespaldoDolarApi — cl.dolarapi.com/v1/cotizaciones, timeout 8sMIT
Calidad del aire (/api/air-quality)
Fallback secuencial (Boostr y Gael Cloud no exponen calidad del aire)
- PrimarioSINCA · MMA — sinca.mma.gob.cl/index.php/json/listadomapa2k19/, ~118 estaciones, timeout 12sDatos públicos del Estado — sin licencia explícita
- RespaldoOpen-Meteo (CAMS) — air-quality-api.open-meteo.com, modelo CAMS, 18 ciudades, timeout 10sCC BY 4.0
Radios (/api/radio-stations)
Fallback secuencial; si ambos fallan usa la lista local del código
- Primarioradio-browser.info — de1.api.radio-browser.info, timeout 15sAPI pública — datos comunitarios (código AGPL-3.0)
- Respaldojson-teles — raw.githubusercontent.com/Alplox/json-teles/main/countries/cl.json, filtro category=musicUnlicense (dominio público)
Fútbol (/api/futbol)
Paths paralelos: ESPN para tabla y partidos, RSS para noticias
- ÚnicoESPN (API pública) — standings + scoreboard chi.1, timeout 8s; sin fallback → tabla/partidos vacíosTérminos de ESPN — sin licencia explícita
- Únicoawesome-chilean-rss — noticias vía /api/futbol; siempre se cargan, independiente de ESPNCC0 1.0
Transporte (/api/transport)
Fuentes individuales
- ÚnicoMetro.cl — scraping de estado-red, timeout 8s, sin fallbackDatos públicos del operador — sin licencia explícita
- ÚnicoRed.cl — predictorPlus, timeout 5sDatos públicos del operador — sin licencia explícita
- ÚnicoDTPM GTFS — base de paraderos y recorridos RED (build-time vía update-stops-db.mjs)Datos abiertos DTPM — sin licencia explícita
Feeds RSS (/api/news)
Local-first: base incluida en el build → GitHub raw → jsDelivr
- Primarioawesome-chilean-rss — catálogo de medios chilenos; la base se incluye en el build como feeds-database.json, instantánea y siempre disponibleCC0 1.0
- RespaldoGitHub raw — actualización fire-and-forget, timeout 15sCC0 1.0
- RespaldojsDelivr — actualización fire-and-forget, timeout 15sCC0 1.0
Cortes de luz (/api/power)
Única fuente + snapshot durable
- ÚnicoSEC — POST ClientesAfectados/{Get,GetClientesNacional,GetPorFecha,GetClientesRegional}; sin alternativa pública. Si cae, sirve el snapshot power:lastgood (6 h) con stale:trueDatos públicos del Estado — sin licencia explícita
TV en vivo (/api/channels)
json-teles → iptv-org → mi-iptv
- Primariojson-teles — canales de TV chilenosUnlicense (dominio público)
- Respaldoiptv-org — canales CL (m3u)Unlicense (dominio público)
- Respaldomi-iptv — playlist m3u (fallback jsDelivr)Sin licencia explícita
- ÚnicoYouTube (señales en vivo) — embeds YT Live/VOD de los canales que los exponenTérminos de YouTube
- ÚnicoTwitch (señales en vivo) — embeds de los canales que transmiten por TwitchTérminos de Twitch
YouTube Trends (/api/youtube)
Única fuente
- Únicojson-teles — lista de canales chilenos (channel_id)Unlicense (dominio público)
- ÚnicoYouTube RSS — feeds/videos.xml por channel_idTérminos de YouTube
Google Trends (/api/trends)
Única fuente
- ÚnicoGoogle Trends RSS — trending/rss?geo=CL + trendingsearches/daily (fallback)Contenido de Google — sin licencia explícita
Spotify Chile (/api/spotify)
Única fuente
- ÚnicoSpotify "Top 50 Chile" playlist — reproductor embebido; /api/spotify solo resuelve el oEmbedSpotify — embed oficial
Ciberseguridad (/api/cyber)
Bloques independientes en paralelo; TTL 15 min (3 min si algún bloque falló)
CSIRT Nacional y CISA KEV
- MergeCSIRT Nacional — RSS de alertas + severidadSitio oficial público — sin licencia explícita
- MergeCISA KEV — catálogo JSON recortado a 30/90 díasDominio público (obra del Gobierno de EE. UU.)
Feriados (/api/holidays)
Boostr → Nager.Date
- PrimarioBoostr — api.boostr.cl/holidays.jsonAPI pública — sin licencia explícita
- RespaldoNager.Date — api/v3/publicholidays/{year}/CL; el widget también consulta directoMIT
Empleos (/api/jobs)
Agregación en paralelo
- ÚnicoGetOnBrd — API pública v0Contenido del sitio — sin licencia explícita
- ÚnicoWorkAnywhere — RSSContenido del sitio — sin licencia explícita
- ÚnicoRemotive — remote-jobs APIContenido del sitio — API pública
Mapas y basemaps
Tiles vectoriales sin API key; atribución obligatoria en el mapa
- PrimarioOpenFreeMap — tiles.openfreemap.org/styles/{positron,dark}, sin API keyMIT (código) · datos ODbL
- ÚnicoOpenMapTiles — esquema de teselas del basemapBSD-3-Clause (código) · datos ODbL
- ÚnicoOpenStreetMap — datos base; también teselas raster en el mapa de cortes de luzODbL 1.0
Librerías
Dependencias de ejecución y sus licencias (las de desarrollo están en package.json).
- Astro, React, React DOM, Tailwind CSS, @tailwindcss/vite, DaisyUI, cheerio, Chart.js, fast-xml-parser, @astrojs/cloudflare, @astrojs/react — MIT.
- hls.js, @mozilla/readability, TypeScript — Apache-2.0.
- Leaflet — BSD-2-Clause.
- MapLibre GL — BSD-3-Clause.
- @maplibre/maplibre-gl-leaflet, linkedom — ISC.
- hover-tilt — MPL-2.0.
Si detectas un recurso mal atribuido o una licencia incorrecta, abre un issue en GitHub.