Todos contra el fuego — aplicación web (Meteor)
Find a file
vjrj bba2ad5523
All checks were successful
build-image / test (push) Successful in 2m22s
build-image / build (push) Successful in 11m25s
fix(fires): el mapa de /fires ya no se queda en gris
Causa raíz, encontrada reproduciéndolo con el bundle de producción en local
—con el servidor de desarrollo NO se ve, y por eso llevaba semanas dándose por
un artefacto del navegador sin pantalla:

    if ((centerStored !== [0, 0] || geolocation.get()) && geoInit) {
      center.set(centerStored || geolocation.get());
      geoInit = false;
    }

`centerStored !== [0, 0]` compara contra un array recién creado: es SIEMPRE
cierto. En un navegador nuevo —sin centro en localStorage y con la
geolocalización todavía sin resolver— eso hacía `center.set(undefined)` y dejaba
`geoInit` en false, o sea para siempre. Un `<MapContainer>` sin `center` no
recibe `setView`, y un mapa de Leaflet sin vista no carga capa base ni teselas
ni dispara `whenReady`, con lo que tampoco se creaba la suscripción por
viewport. En desarrollo no pasaba porque la geolocalización llegaba a tiempo.

Y de paso el "Actualizando…" que no se quitaba nunca: las suscripciones se
creaban dentro de un `Tracker.autorun` ANIDADO en el withTracker. La computación
de fuera no dependía de `mapSize`, así que `loading` se calculaba con
`subscription` a undefined y no volvía a recalcularse; además cada pasada del
withTracker dejaba otro autorun sin parar. Ahora las suscripciones se crean en
la propia computación reactiva, que es donde Meteor sabe pararlas al invalidarse.

MapReady, además, vigila el contenedor con un ResizeObserver: su comprobación de
tamaño solo podía reintentar con el evento `resize` de Leaflet, que no se emite
si nadie llama a invalidateSize(). No era la causa de esto, pero hacía que la
comprobación no sirviera de nada.

La suite e2e deja de usar selectores por id: TestUtils.testId() los devuelve solo
en desarrollo, así que contra el bundle de producción —lo que levanta el job
nocturno— no existían y la suite entera habría fallado esta noche.

Verificado contra bundle de producción: /fires pasa de 0 teselas y 0 capas a 12
teselas, capa base y las dos suscripciones por viewport, sin "Actualizando…".
90 tests de servidor, 16 e2e y smoke REST byte-idéntico.
2026-08-03 19:59:30 +02:00
.forgejo/workflows fix(ci): run playwright from e2e/, npx --prefix does not change the cwd 2026-08-01 19:07:11 +02:00
.meteor fix(meteor): pin session@1.2.2, 1.2.3 needs a newer Meteor core 2026-08-01 17:37:19 +02:00
bench perf(subsUnion): unión en árbol, menos vértices, timeout y cota de memoria 2026-08-01 22:32:37 +02:00
bin Added more industries 2018-02-27 16:50:26 +01:00
client WIP(meteor3): server BOOTS on 3.1 + Mongo 7; restivus async-patched 2026-07-14 06:11:00 +02:00
cucumber Added optional chimp configuration 2018-11-18 18:01:17 +01:00
designs Greater icon 2018-06-12 06:08:11 +02:00
docker fase 3: stack docker-compose local del sistema modernizado 2026-07-15 01:01:07 +02:00
e2e fix(fires): el mapa de /fires ya no se queda en gris 2026-08-03 19:59:30 +02:00
imports fix(fires): el mapa de /fires ya no se queda en gris 2026-08-03 19:59:30 +02:00
packages meteor3: purge dead client packages — web UI renders on 3.1 2026-07-14 11:32:19 +02:00
private perf(subsUnion): unión en árbol, menos vértices, timeout y cota de memoria 2026-08-01 22:32:37 +02:00
public quality: web debt batch (tests runner, FireContainer, rate-limit, maps, i18n) 2026-07-21 22:59:06 +02:00
scripts staging: neutralizar credenciales OAuth vivas, nombres reales y tokens de sesion 2026-07-28 00:35:11 +02:00
secrets staging: conecta el importador NASA reimplementado al stack 2026-07-28 07:49:05 +02:00
server WIP(meteor3): server BOOTS on 3.1 + Mongo 7; restivus async-patched 2026-07-14 06:11:00 +02:00
smoke WIP: Meteor 2.5 -> 3.1 migration (package resolution done; build blocked) 2026-07-13 23:25:29 +02:00
test/server perf(subsUnion): unión en árbol, menos vértices, timeout y cota de memoria 2026-08-01 22:32:37 +02:00
.dockerignore fase 3: stack docker-compose local del sistema modernizado 2026-07-15 01:01:07 +02:00
.gitignore fase 3: stack docker-compose local del sistema modernizado 2026-07-15 01:01:07 +02:00
.meteorignore bench(union): banco de carga de la unión de suscripciones 2026-08-01 21:51:27 +02:00
.npmrc fase 3: stack docker-compose local del sistema modernizado 2026-07-15 01:01:07 +02:00
API.md API doc 2018-04-12 10:53:43 +02:00
COPYRIGHT.md More doc, licenses, etc 2018-01-30 07:42:50 +01:00
docker-compose.e2e.yml test(e2e): browser suite for the flows the server tests cannot see 2026-08-01 18:44:09 +02:00
docker-compose.staging.yml staging: seguir la etiqueta de rama que publica el CI (meteor3-wip) 2026-07-28 15:12:01 +02:00
docker-compose.yml fase 3: stack docker-compose local del sistema modernizado 2026-07-15 01:01:07 +02:00
Dockerfile fase 3: stack docker-compose local del sistema modernizado 2026-07-15 01:01:07 +02:00
fonts.json Trying to fix fonts issue 'Failed to decode downloaded' because of wrong path 2018-02-19 16:31:05 +01:00
History.md Add attribution to issues in v.NEXT 2017-11-03 15:50:31 -05:00
LICENSE.md More doc, licenses, etc 2018-01-30 07:42:50 +01:00
package-lock.json fix(subsUnion): stop blocking DDP on subscription union recompute 2026-07-30 06:36:37 +02:00
package.json ci(web): run the server suite before building the image 2026-08-01 18:02:31 +02:00
PENDIENTE.md bootstrap: swap BS4 (alexwine) CSS for bootstrap@5 npm 2026-07-22 05:55:34 +02:00
README.md Improved chimp command in README 2018-11-18 18:01:38 +01:00
RUNBOOK.md fase 3: stack docker-compose local del sistema modernizado 2026-07-15 01:01:07 +02:00
settings-ci.json fix(maps): el mapa de /fires se quedaba en gris cuando hay clave de Google 2026-08-01 23:17:50 +02:00
settings-development-sample.json Mobile notifications 2018-08-02 12:42:19 +02:00
UPGRADE.md deps: react-leaflet 1.8 -> 4.2 (+ leaflet 1.9) — the last legacy react-* lib 2026-07-21 18:45:15 +02:00

Tod@s contra el Fuego (All Against Fire)

Build Status

This is web service that notifies about fires detected in an area of your interest. It helps the early detection of fires and facilitates local mobilization, while the professional extinction services arrive.

Install

Prerrequisites: a running meteor (we share the fuegos database with the telegram bot).

Install meteor and run meteor npm install and npm start

Some other development deps (in debian & ubuntu):

apt-get install libcairo2-dev libjpeg-dev libgif-dev pkg-config

GeoIP

Configure mirror and cron of the geoip database.

Telegram bot

See our bot.

More platforms and services in the future...

Tests

We do tests via:

TEST_PORT=3000 TEST_WATCH=1 TEST_CLIENT=0 MONGO_URL=mongodb://localhost:27017/fuegostest  meteor --settings settings-development.json test --driver-package meteortesting:mocha --port 3010

# and

node_modules/.bin/chimp --watch --ddp=http://localhost:3000 --path=cucumber

# and

node_modules/.bin/chimp --ddp=http://localhost:3000 --path=cucumber

FAQ & Troubleshooting

Q - I get something like (...) /node_modules/fibers/future.js:280 (...) Error: Could not locate the bindings file. What can I do? A - Try meteor npm rebuild

Data source acknowledgements

We acknowledge the use of data and imagery from LANCE FIRMS operated by the NASA/GSFC/Earth Science Data and Information System (ESDIS) with funding provided by NASA/HQ.

License

GNU APLv3. See our LICENSE, for a complete text.

Thanks & other acknowlegments

Thanks indeed to:

  • Lupe Bao Reixa for Galician translation