Tecnologia¶
O ClimWeb inclui ferramentas e funcionalidades destinadas a apoiar os SMHN nas suas atividades diárias de gestão do website, na prestação de informação e serviços aos seus utilizadores.
Esta seção busca apresentar a escolha das tecnologias, abordagem de desenvolvimento e apresentar os pacotes que suportam as funcionalidades disponíveis no ClimWeb em alto nível.
O ClimWeb desenvolvido é de código aberto e está hospedado no GitHub em https://github.com/wmo-raf/nmhs-cms
Estrutura básica do ClimWeb¶
O modelo de site é construído com base na estrutura de código aberto Wagtail. O próprio Wagtail é baseado no Django , que é uma estrutura web Python de alto nível que incentiva o desenvolvimento rápido e um design limpo e pragmático

O seguinte foi levado em consideração ao escolher o Wagtail como estrutura de escolha:
Python como linguagem de programação. O domínio do tempo e do clima requer muita interação com dados científicos. Python é uma das linguagens de script que facilita o desenvolvimento de procedimentos para manipulação desse tipo de dados. Desenvolver um site usando Python permite assim a flexibilidade de desenvolver funcionalidades baseadas em dados
Fácil de usar: Um dos principais recursos do Wagtail é sua interface intuitiva e fácil de usar. Isso torna mais fácil para os editores de conteúdo gerenciar sites sem precisar aprender as complexidades e detalhes técnicos da estrutura subjacente.
Flexibilidade: Wagtail é flexível quando se trata de criar e gerenciar sites. Ele permite o desenvolvimento rápido de sites altamente customizados com layouts, conteúdo e recursos complexos, com base nas necessidades dos editores de conteúdo.
Extensibilidade: O Wagtail foi projetado para ser facilmente estendido com uma ampla variedade de plug-ins, temas, componentes e outros recursos. Isso permite adicionar novos recursos, personalizar a aparência do seu site e estender a funcionalidade do ClimWeb.
Segurança: O Wagtail foi projetado pensando na segurança. Ele vem com recursos de segurança integrados do Django, como autenticação de usuário, validação de entrada e proteção contra métodos de ataque comuns.
Escalabilidade: Baseado em Django, o Wagtail foi projetado para ser altamente escalável, tornando-o a escolha ideal para sites com grandes quantidades de conteúdo e usuários. Ele pode lidar com grandes quantidades de dados sem problemas de desempenho, permitindo que os desenvolvedores criem sites que podem crescer à medida que sua base de usuários aumenta.
Recursos empresariais prontos para uso: Wagtail inclui permissões de usuários e grupos, fluxos de trabalho de conteúdo e moderação, relatórios, rastreamento de histórico de edição de conteúdo e outros recursos que os administradores e equipes de sites precisam.
Experiência da equipe de desenvolvimento: A atual equipe de desenvolvimento do ClimWeb do NMHS tem vasta experiência no desenvolvimento de projetos baseados em Wagtail e Django. Isso agiliza a implementação de novos recursos e funcionalidades
Abordagem de Desenvolvimento¶
Usamos a abordagem modular Django/Wagtail para desenvolver “aplicativos Django” para fornecer um conjunto de recursos e funcionalidades. Um aplicativo Django/Wagtail é um pacote Python que fornece algum conjunto de recursos. Os aplicativos podem ser reutilizados em vários projetos.
Os aplicativos incluem alguma combinação de modelos Django, visualizações, modelos, tags de modelo, arquivos estáticos, URLS, middleware etc. Eles são então conectados ao projeto com configurações INSTALLED_APPS. Uma aplicação, portanto, neste contexto, é um conjunto de códigos que interage com várias partes do framework.
O NMHS ClimWeb é assim concebido com um conjunto de aplicações internas que fornecem funcionalidades para diferentes páginas do site funcional. Eles estão organizados no diretório de páginas do código-fonte do ClimWeb. Cada subdiretório das páginas corresponde a uma seção do site que pode permitir a criação de uma ou mais páginas relacionadas a essa seção
Funcionalidades mais especializadas são desenvolvidas como aplicativos Wagtail externos que podem ser conectados ao projeto de código. Eles são então instalados como pacotes Python publicados no Python Package Index (PyPI), que é um repositório de software para a linguagem de programação Python.
Pacotes de Funcionalidades¶
CAP Composer: Ferramenta de composição e publicação do Common Alerting Protocol (CAP) que fornece funcionalidade para criar e publicar alertas formatados em CAP.
Gerenciador de previsão – Interface para gerenciamento de previsões de cidades de NMHSs
GeoManager – Fornece uma interface interativa para gerenciar e publicar conjuntos de dados georreferenciados (GIS)
Administrative Boundary Manager: Fornece funcionalidade para carregar, gerenciar e visualizar limites de um país
Editor de WebStories – Fornece funcionalidade para criar e publicar Google Web Stories
Surveys Creator – Fornece funcionalidade para criar e publicar pesquisas diretamente no ClimWeb, visualização e análise dos resultados usando gráficos interativos
Pacotes de integração de ferramentas de terceiros¶
E-mail Marketing¶
Integração Mailchimp: Integre Mailchimp em projetos Wagtail
Integração Mautic: Integração de formulários Mautic em projetos Wagtail.
Reuniões on-line¶
Integração com Zoom: Integre Zoom Registro de eventos (reuniões ou webinars) para formar páginas criadas com Wagtail
Estruturas e bibliotecas de interface do usuário¶
Modelagem - modelos baseados em Django
Estrutura CSS - Bulma
Biblioteca JavaScript - JQuery
Biblioteca de Mapeamento Web - MapLibre GL JS
Fontes de ícones SVG - Font Awesome , Ocha Humanitarian Icons
Desenvolvendo novas funcionalidades¶
Uma abordagem modular é usada no desenvolvimento de novas funcionalidades a serem incluídas no ClimWeb. A nova funcionalidade deve ser desenvolvida isoladamente como um pacote Wagtail Python e publicada no PyPi para instalação usando Pip.
Seguimos os seguintes passos em geral:
Explore pacotes existentes na comunidade Wagtail/Django que fornecem funcionalidades semelhantes.
Se existir um pacote existente e não puder ser integrado diretamente no ClimWeb, tentamos personalizar o máximo que pudermos sobre este pacote, para torná-lo interoperável. Caso contrário, nós o usamos diretamente
Se não conseguirmos encontrar os pacotes existentes, desenvolvemos o pacote do zero. A ideia é evitar a reinvenção da roda sempre que possível.
Implantação de produção¶
Docker é usado para conteinerizar os diferentes componentes do ClimWeb.
Outros recipientes usados incluem
PostgreSQL com extensão PostGIS como banco de dados
Nginx como servidor web e proxy web
Memcached como sistema de cache para solicitações da web
Eclipse Mosquitto como o corretor de mensagens MQTT. Usado principalmente para mensagens de alertas CAP
Eles são colocados em um arquivo de configuração do docker compose, usado para implantar o projeto usando o Docker Compose.
É fornecido um repositório de inicialização que reúne todos os diferentes componentes em um projeto. Isso pode ser acessado em https://github.com/wmo-raf/nmhs-cms-init . Um guia de instalação é fornecido no arquivo README do repositório.
Gerenciando atualizações¶
Novos lançamentos com correções de bugs e atualizações de recursos são publicados periodicamente nos lançamentos do repositório nmhs-cms.
Quando houver um novo lançamento, a interface ClimWeb Admin mostrará uma mensagem indicando que há um novo lançamento. O administrador do site pode então optar por atualizar para a nova versão, após ler as notas de lançamento que acompanham cada lançamento.
A atualização é feita através do clique de um botão, que aciona um processo de construção do docker com as novas versões. Depois que a nova versão for construída com sucesso, o contêiner será reiniciado com a nova versão efetivada.

Em casos raros em que o gatilho automático de compilação falha, os administradores do sistema são treinados para realizar a atualização manualmente
Segurança em Django/Alvéola¶
O ClimWeb, usando Django/Wagtail, contém os seguintes recursos de segurança integrados. Mais detalhes sobre cada recurso podem ser encontrados em https://docs.djangoproject.com/en/5.0/topics/security
Proteção de script entre sites (XSS)
Proteção contra falsificação de solicitação entre sites (CSRF)
Proteção de injeção SQL
Proteção contra clickjacking
Configurações de proteção SSL\HTTPS
Validação de cabeçalho de host
Proteção da política de referência
Política de abertura de origem cruzada
Segurança da Sessão
Proteção de conteúdo enviado pelo usuário
Recursos de segurança específicos do ClimWeb:¶
Capacidade de alterar o URL do administrador periodicamente
Mecanismos de backup diário
Prevenções de login de força bruta
Autenticação de 2 fatores para conta de administrador