Repositório que mantém o stack WordPress do projeto Defesa Climática Popular. Aqui vivem o tema dcp, o plugin de integração com serviços externos e a infraestrutura Docker usada por designers, desenvolvedores e equipe de dados. O objetivo desta base é sustentar o mapa colaborativo de riscos, o painel interno para agentes comunitários e as APIs consumidas por aplicações parceiras.
wp-root/: núcleo WordPress versionado para garantir reprodutibilidade do ambiente.themes/dcp/: tema principal, com assets emassets/, builds emdist/e lógica modular emlibrary/(dashboard, auth, integrações e importações).plugins/dcp-plugin/: plugin proprietário que expõe a API REST (/wp-json/dcp/v1/*), webhooks e rotinas de sincronização com Pods.plugins/hacklab-dev-utils: submódulo com utilidades de desenvolvimento (WP-CLI, PsySH etc.).compose/: imagens, entrypoints e configs extras de PHP, MariaDB e watcher de assets.dev-scripts/: atalhos para rotina local (./wp,./mysql,./dev.sh,./dump, entre outros).style.css: link simbólico que aponta parathemes/dcp/style.css, exigência do fluxo com o plugin git-updater.
- Git e acesso ao repositório.
- Docker e Docker Compose 2.x.
- Node 18+ e npm para builds locais do tema.
- Acesso ao repositório do submódulo
hacklab-dev-utils. - (Opcional) Chave
GOOGLE_MAPS_API_KEYpara habilitar geocoding via Google em vez do Nominatim.
git clone <ssh-do-repositorio> dcp
cd dcp
git submodule update --init --recursive
docker-compose up --buildO serviço watcher instala dependências do tema e roda npm run watch automaticamente. Caso prefira rodar localmente, entre em themes/dcp/ e execute npm install && npm run watch.
Importe um dump para compose/local/mariadb/data/ e reinicie os containers (docker-compose down -v && docker-compose up) quando precisar carregar dados reais.
- Trabalhe em branches a partir de
develop;mainacompanha o ambiente de produção. - Use
./dev-scripts/wppara comandos WP-CLI no container e./dev-scripts/mysqlpara acessar o banco com o usuáriowordpress. - Para depuração com PsySH, execute
./dev-scripts/dev.she injeteeval(\psy\sh());no ponto desejado. - Gere builds de produção com
npm run productionantes de publicar mudanças que afetem front-end ou APIs.
library/dashboard*.php: rotas e widgets do painel (/dashboard/inicio,/dashboard/riscos,/dashboard/indicadores), criação da roleagente-dcpe filtros de permissão.template-parts/: componentes PHP utilizados nas páginas públicas e no dashboard.assets/js,assets/scss: código fonte compilado pelo Laravel Mix definido emwebpack.mix.js.
O dashboard é uma área administrativa frontend customizada (/dashboard/*), renderizada pelo template page-dashboard.php. Ela não utiliza o wp-admin padrão e é voltada para agentes comunitários gerenciarem conteúdo do projeto.
Autenticação:
- Role customizada
agente-dcp(criada emlibrary/dashboard.php) com permissões de CRUD sobre riscos. - Acesso restrito a usuários com
edit_riscos; não-autenticados são redirecionados para login. ⚠️ Conflito conhecido:library/frontend_auth.phprestringe o dashboard a administradores, o que pode impedir que agentes comunitários acessem via formulário frontend.
Principais rotas:
/dashboard/inicio— Visão geral com situação atual, novos relatos e riscos pendentes./dashboard/riscos— Gestão de riscos (aprovação, publicação, arquivamento) com galeria de mídias./dashboard/acoes— Gestão de ações comunitárias (sugestões, agendadas, realizadas)./dashboard/apoio— Pontos de apoio (locais seguros, caçambas, iniciativas, quem acionar)./dashboard/situacao_atual— Alerta climático ativo e recomendações de segurança./dashboard/indicadores— Estatísticas e gráficos (Chart.js) sobre riscos e ações.
Operações CRUD:
Todas as operações de criação, edição e exclusão são feitas via AJAX centralizado em library/dashboard-ajax.php. Riscos e ações podem ser criados por usuários anônimos no frontend do site.
O plugin dcp-plugin entrega endpoints públicos para uso em apps e integrações:
GET /wp-json/dcp/v1/riscos: lista riscos com paginação, anexos e metadados.GET /wp-json/dcp/v1/riscos-resumo: resumo das ocorrências nas últimas 24h.POST /wp-json/dcp/v1/webhook/situacao-atual: webhook para atualizar temperatura, estágio e clima.GET /wp-json/dcp/v1/situacao-atual-home: conteúdo dinâmico da home. Outros endpoints tratam de tarefas de ETL, dashboards e sincronização com Pods. Consulte o arquivoplugins/dcp-plugin/dcp-plugin.phppara detalhes de parâmetros e cargas.
O workflow n8n (n8n/NOSSAS_DCP___SITUACAO_ATUAL.json) é executado a cada hora para coletar dados meteorológicos e de estágio de risco e enviá-los ao WordPress.
Fontes de dados:
- Clima: API HG Brasil (
https://api.hgbrasil.com/weather), consultando as coordenadas do Rio de Janeiro (-22.8873378, -43.2559982). Retornatemp,date,time,condition_code,description,currently,rain,condition_slug. - Estágio: API da COCR (
https://aplicativo.cocr.com.br/estagio_api), que retorna o estágio operacional de risco.
Payload enviado ao WordPress (multipart/form-data):
| Campo | Descrição |
|---|---|
temp |
Temperatura atual (°C) |
condition_code |
Código numérico da condição climática |
description |
Descrição textual do clima |
is_rain |
Indicador booleano de chuva |
estagio |
Estágio operacional de risco da COCR |
date |
Data da leitura |
time |
Hora da leitura |
currently |
Período do dia (dia / noite) |
condition_slug |
Slug da condição climática |
Destinos configurados no workflow:
https://<staging-url>/wp-json/dcp/v1/webhook/situacao-atual/— ambiente staginghttps://defesaclimaticapopular.org/wp-json/dcp/v1/webhook/situacao-atual/— ambiente de produçãohttps://<ngrok-local>/wp-json/dcp/v1/webhook/situacao-atual/— ambiente local (desabilitado)
A autenticação nos ambientes staging e produção utiliza credenciais do tipo wordpressApi (WP DCP PROD); o nó local usa WP_DCP_LOCAL.
O arquivo docker-compose.deploy.yml referencia a imagem nossas/dcp-wp e espera os serviços na rede externa web (compatível com Traefik). Ajuste as variáveis WORDPRESS_DB_*, GOOGLE_MAPS_API_KEY e a tag da imagem conforme o ambiente.
Este projeto se originou do boilerplate Hacklab. Para herdar melhorias, mantenha um remote apontando para o repositório base e sincronize quando necessário:
git remote add temaBase git@git.hacklab.com.br:open-source/base-wordpress-project.git
git pull temaBase developRevise os commits antes de aplicar para garantir que não revertam personalizações do DCP.
Em caso de dúvidas sobre infraestrutura ou integrações, abra uma issue no repositório ou contate a equipe Hacklab em contato@hacklab.com.br. Para novos recursos no mapa ou no dashboard, descreva o fluxo esperado, dependências externas e anexos relevantes ao abrir a issue ou pull request.
A Defesa Climática Popular é uma iniciativa voltada ao fortalecimento das respostas comunitárias frente aos impactos da crise climática em territórios populares. O projeto parte do reconhecimento de que eventos como alagamentos, deslizamentos, ondas de calor e outros desastres climáticos afetam de forma desproporcional populações historicamente vulnerabilizadas, demandando soluções que integrem tecnologia, organização comunitária e produção de conhecimento local.
O projeto piloto foi realizado no Jacarezinho (RJ) e envolveu a formação de lideranças climáticas, ações de aprendizado coletivo e mobilização comunitária, além do desenvolvimento de tecnologias comunitárias e mapeamentos participativos de risco. Ao ampliar as capacidades locais de prevenção, resposta e articulação, a iniciativa busca fortalecer a organização coletiva, a autonomia territorial e a resiliência climática.
Este repositório mantém a base tecnológica do projeto, construída sobre WordPress, e sustenta mapas colaborativos, conteúdos informativos e ferramentas digitais que apoiam a tomada de decisão comunitária e a redução de danos em contextos de risco climático.
A solução digital da Defesa Climática Popular é composta pelos seguintes módulos:
-
Recomendações
Módulo responsável por orientar a população sobre o que fazer em situações de risco climático, como alagamentos, deslizamentos e outros desastres ambientais, apoiando ações de prevenção, resposta imediata e redução de danos. -
Quem Chamar
Funcionalidade que auxilia na identificação e no contato com pessoas, serviços, órgãos públicos ou iniciativas comunitárias adequadas para cada tipo de situação de risco, facilitando o acionamento rápido de redes de apoio e resposta. -
Rede de Apoio
Módulo que orienta e apresenta locais, serviços e iniciativas onde é possível buscar abrigo, apoio ou assistência em momentos de emergência climática, fortalecendo a conexão entre a população e os recursos disponíveis no território. -
Mapa de Riscos e Apoios
Funcionalidade baseada no plugin Jeo, que exibe um mapa interativo com legendas e camadas temáticas, incluindo áreas de alagamento, pontos de lixo exposto, locais de risco e redes de apoio comunitárias. É uma ferramenta central para visualização territorial e planejamento de ações preventivas. -
Conteúdos sobre Riscos Climáticos
Conjunto de conteúdos informativos e educativos sobre temas como lixo, alagamentos e outros riscos ambientais, com foco em conscientização, prevenção e fortalecimento do conhecimento comunitário sobre a crise climática e seus impactos locais.