Mundaú Sentinela: monitoramento hidrológico cívico da bacia por dentro
Nove pontos monitorados, previsão de 48 horas a partir do GloFAS, relatos cidadãos moderados, memória de cheias desde 1988 e projeção climática até 2050. A arquitetura completa da plataforma.

Em 2010 o Rio Mundaú transbordou e destruiu parte de doze municípios em Alagoas e Pernambuco. Os dados que teriam permitido antecipar aquela cheia existiam, publicados em formato aberto. O que não existia era alguém traduzindo número de cota em decisão de quem mora na margem.
O Mundaú Sentinela é uma plataforma cívica de monitoramento hidrológico construída em cima dessa lacuna. Ela recebeu premiação na Semana STEAM do Colégio Rosalvo Félix em 2026, na categoria Ensino Médio.
Este texto descreve a plataforma inteira: as fontes, a conversão que sustenta o número exibido, a camada cidadã e as decisões de arquitetura que a fazem funcionar em conexão ruim.
O que a plataforma entrega
São sete superfícies, cada uma respondendo a uma pergunta diferente.
| Superfície | Pergunta que responde |
|---|---|
| Pulso do Rio | Como está o rio agora e para onde ele vai |
| Mapa | Onde estão os pontos, os relatos e as camadas |
| Histórico de Cheias | O que já aconteceu nesta bacia |
| Tendência Climática | Isto está piorando no longo prazo |
| Inteligência Coletiva | O que os moradores relatam, por categoria e período |
| Memória do Mundaú | Que patrimônio está em risco hídrico |
| Perfil | O que eu contribuí e qual o meu histórico |
A separação não é organizacional, é de escala de tempo. Quem precisa decidir se sai de casa hoje não deveria esbarrar num gráfico climático de noventa anos, e quem estuda tendência não deveria precisar interpretar leitura horária.
A aplicação é instalável como PWA, em modo standalone, porque o cenário de uso previsto é celular e a informação precisa continuar acessível quando a rede oscila.
Da vazão para a régua
Esta é a decisão que sustenta todo o resto, e ela precisa ser dita sem eufemismo: o nível em centímetros exibido é derivado, não medido.
A fonte é o GloFAS, o sistema global de alerta de cheias, servido pela API de cheias do Open-Meteo. O que ele entrega é vazão em metros cúbicos por segundo. A conversão para cota é uma curva empírica de potência:
export function dischargeToCm(discharge: number): number {
if (discharge <= 0) return 0
return Math.round(18 * Math.pow(discharge / 4.5, 0.42))
}Os nove pontos carregam o código da estação da ANA que os identifica, o município e as coordenadas, mas a leitura que alimenta o gráfico vem do modelo. Chamar isso de medição seria mais simples de explicar e seria incorreto.
A vazão chega em passo diário e o gráfico é horário, então a série é interpolada linearmente entre dois dias antes de virar leitura. Dias sem valor recebem a média entre o vizinho anterior e o seguinte, em vez de serem descartados ou plotados como zero, que é o pior dos mundos: zero desenha um vale que nunca existiu.
Limiar calibrado por ponto
Sete centímetros em Rio Largo é normalidade absoluta. A mesma leitura em outro ponto da bacia significa outra coisa. Cada ponto carrega cotas próprias de atenção, alerta e inundação:
| Ponto | Atenção | Alerta | Inundação |
|---|---|---|---|
| Rio Largo / Fazenda Boa Fortuna | 400 cm | 600 cm | 800 cm |
| União dos Palmares | 350 cm | 520 cm | 700 cm |
| Murici | 340 cm | 510 cm | 680 cm |
Os nove pontos cobrem Rio Largo, Murici, União dos Palmares, São José da Laje, Santana do Mundaú e Branquinha, e ainda Palmeirina, Canhotinho e Correntes do lado pernambucano, porque a cabeceira da bacia está em Pernambuco e ignorar isso seria monitorar metade do problema.
Aplicar um limiar único para toda a bacia seria mais fácil de programar e completamente inútil.
Consumir API de terceiro em sistema que alerta
Aqui a fonte cair não é inconveniente de interface. Um painel de alerta de cheia que fica em branco falhou exatamente quando importava. Quatro regras saíram deste projeto, e eu as aplico em qualquer integração desde então.
Nunca confiar em quem responde. A busca de vazão devolve null em vez de estourar, e a camada de cima decide o que mostrar com o que tem. Erro de rede não deveria virar tela vazia sem explicação.
Data em ISO 8601 com fuso declarado. Toda consulta declara America/Maceio. Sem isso, uma série diária muda de dia perto da meia-noite e o pico de uma cheia aparece na data errada.
Cache com prazo pensado por tipo de dado. O nível é considerado válido por trinta minutos e revalidado a cada hora; a previsão, a cada seis. É a cadência real com que cada um muda, e buscar mais que isso é gastar rede de quem tem pouca. O gerenciamento fica com o TanStack Query, que também dá deduplicação de requisição e revalidação em foco sem código extra.
Buraco na série é normal e precisa de política. A decisão sobre dado ausente precisa ser tomada uma vez, no lugar certo, e não improvisada em cada gráfico.
Chuva, que é a outra metade da pergunta
Nível de rio conta o que já aconteceu na bacia. Chuva prevista conta o que está a caminho, e as duas juntas mudam a leitura.
A previsão de precipitação vem da API de tempo do Open-Meteo, com até dezesseis dias, trazendo três séries por dia: precipitação total, chuva acumulada e probabilidade máxima de precipitação. O intervalo pedido é limitado no código entre um e dezesseis dias, porque pedir além do que a fonte entrega devolve série truncada sem aviso, e série truncada silenciosamente é pior que erro.
A distinção entre precipitação total e chuva acumulada parece redundante e não é: a primeira inclui outras formas de precipitação, e manter as duas separadas evita que o gráfico afirme mais do que a fonte diz.
O ponto de consulta padrão é o centro da bacia, e cada estação consulta as próprias coordenadas. Isso importa numa bacia que atravessa dois estados: chuva forte na cabeceira, em Pernambuco, é o sinal que antecede a subida em Alagoas, e uma média única da bacia esconderia exatamente esse sinal.
A camada cidadã
Sensor não mente, mas também não vê tudo. Ele mede um ponto e ignora o bueiro entupido três ruas adiante, a mata ciliar removida no mês passado e a voçoroca que abriu depois da última chuva forte.
O morador registra em oito categorias: erosão, assoreamento, mata ciliar, descarte irregular, área alagada, voçoroca, patrimônio e outros. A descrição é limitada a duzentos e oitenta caracteres, o que força objetividade e evita que o campo vire desabafo.
O relato entra com status pending e não aparece em lugar nenhum até ser revisado. Só o que está approved chega ao mapa público e à Inteligência Coletiva. É mais lento, e é a única versão defensável para um sistema cujo propósito é alertar sobre risco de vida.
A Inteligência Coletiva agrega o que foi aprovado por categoria e por período. É onde o relato individual vira padrão observável: cinco registros de mata ciliar no mesmo trecho em duas semanas é informação que nenhuma estação daria.
Há também uma camada de engajamento ligada às contribuições, com cinco níveis nomeados segundo a função que a pessoa exerce na bacia:
| Nível | XP acumulado |
|---|---|
| Observador | 0 |
| Vigia | 500 |
| Sentinela | 2.000 |
| Guardião | 5.000 |
| Pesquisador do Mundaú | 15.000 |
A pontuação premia o que o projeto realmente precisa: relato aprovado vale 120, registro de patrimônio aprovado vale 500, e há bônus por sequência de sete e de trinta dias. Note que a pontuação vem da aprovação, e não do envio. Premiar envio produz volume; premiar aprovação produz qualidade, e num sistema com moderação humana no caminho essa diferença decide se a fila é sustentável.
A camada existe pelo mesmo motivo que em qualquer plataforma dependente de participação contínua: o problema não é o primeiro relato, é o décimo.
Memória e tendência
Duas superfícies olham para trás e para a frente.
O Histórico de Cheias mantém o registro de eventos extremos desde 1988, com pico de cota e municípios afetados. A cheia de 1988 tem tempo de retorno estimado em cem anos, e saber disso muda a leitura de qualquer medição atual. Número sem régua não informa nada.
A Tendência Climática exibe a série de precipitação e a projeção até 2050 pelo modelo EC-Earth3P-HR, consultado na API climática do Open-Meteo. É a camada que responde à pergunta de longo prazo, separada de propósito da operação diária.
A Memória do Mundaú cataloga patrimônio em risco hídrico na bacia. É a camada menos técnica e a que mais explica por que o projeto existe: cheia não destrói só casa.
As três se apoiam numa base própria no Firebase Realtime Database, alimentada por uma rotina de carga inicial que semeia estações, leituras, eventos históricos e pontos de patrimônio. A rotina verifica se cada conjunto já foi semeado antes de escrever, o que a torna idempotente: rodar duas vezes não duplica nada. É um detalhe pequeno e é a diferença entre um script de carga que dá para executar com segurança e um que exige limpar a base antes.
A pilha, e por que cada peça
| Camada | Tecnologia | Motivo |
|---|---|---|
| Aplicação | Next.js 16 e React 19 | Renderização no servidor, para abrir rápido em rede ruim |
| Dados remotos | TanStack Query | Cache com prazo, deduplicação e revalidação |
| Mapa | MapLibre GL | Renderização vetorial, sem dependência de provedor proprietário |
| Gráficos | Recharts | Séries temporais compostas |
| Persistência | Firebase | Autenticação, perfis e relatos |
| Datas | date-fns | Aritmética de período sem surpresa de fuso |
| Movimento | Framer Motion | Transições contidas, respeitando redução de movimento |
MapLibre em vez de uma alternativa proprietária foi decisão deliberada: uma plataforma cívica que depende de chave comercial de mapa herda o risco de preço e de política de uso de terceiro.
O limite honesto do projeto
O Mundaú Sentinela não substitui a Defesa Civil, e a plataforma diz isso na própria interface. Ele é uma camada de leitura pública sobre dados que já são públicos, feita para reduzir o atrito entre a informação existente e a pessoa que precisa dela.
E ele carrega a limitação da primeira seção: o nível vem de modelo global, com resolução e viés próprios, convertido por uma curva empírica. Ligar a plataforma a leitura telemétrica de estação, onde ela existir, é o próximo passo e o que tornaria o aviso operacional de verdade. Depois disso vem a comparação sistemática entre o nível derivado e o medido, que é o que permitiria calibrar a curva por ponto em vez de usar uma só para a bacia inteira.
Onde está
A plataforma está no ar em mundau.vercel.app, cobrindo doze municípios em Alagoas e Pernambuco, com nove pontos monitorados, previsão de 48 horas, relatos moderados e histórico desde 1988. Toda leitura exibe a procedência, seja ANA, IBGE, GloFAS ou Open-Meteo, porque dado sem origem declarada é boato com boa tipografia.
O código lida com cheia, mas o problema que ele ataca é de interface: quando a informação certa chega ilegível, é como se não tivesse chegado.
Continue lendo
- 8 min
Guardião da Praia: a plataforma de ciência cidadã da costa alagoana por dentro
Oito tipos de ocorrência, cinco estados de moderação com trilha de auditoria, mapa público derivado do estado e limites de envio no servidor. A arquitetura completa do projeto. - 9 min
NATIVA: uma plataforma de educação ambiental com dado, texto e IA na mesma superfície
Indicadores com fonte declarada, biblioteca editorial, quiz gerado na hora, busca de vídeo e uma assistente que explica sem virar a origem do número. A arquitetura completa do projeto. - 8 min
ReciclaMapa: um mapa de coleta que não envelhece, apoiado em OpenStreetMap
Consulta ao Overpass com três espelhos e failover, cache por área visível, trinta e uma traduções de tag e um painel de impacto com constantes declaradas. A arquitetura completa do projeto.