GeoNetwork bildet seit vielen Jahren als Metadatenkatalog eine grundlegende Komponente in zahlreichen Geodateninfrastrukturen. Um die Weiterentwicklung einer Benutzeroberfläche mit modernen JavaScript-Features zu ermöglichen wurde 2020 das Projekt GeoNetwork UI ins Leben gerufen. Dieser Vortrag präsentiert den Ansatz und die aktuellen Entwicklungen des Projekts.
GeoNetwork ist als Metadatenkatalog und offizielles OSGeo-Projekt im FOSSGIS-Umfeld ein fester Begriff. Während der Kern der Anwendung im Backend liegt, ist der Funktionsumfang des Frontends mit der Zeit ebenfalls stark gewachsen. Eine Weiterentwicklung der auf AngularJS basierenden UI wurde in der jüngeren Vergangenheit jedoch zu einer immer größeren Herausforderung. Der Support für AngularJS lief im Sommer 2021 aus und eine Nutzung neuer JavaScript Features erwies sich in der aktuellen Architektur als schwierig. Eine komplette Migration zu einem neuen JavaScript-Framework würde enorme zeitliche und finanzielle Ressourcen binden.
So entstand 2020 das Projekt „GeoNetwork UI“. Die Idee des Projektes ist es, eine alternative Benutzeroberfläche für GeoNetwork in einer eigenständigen Anwendung bereitzustellen. Dabei wird nicht das Ziel verfolgt, die bestehende UI komplett zu migrieren, sondern sie zu ergänzen. Ein Hauptziel ist die einfache Entwicklung von neuen Funktionalitäten. Hierbei wird der Ansatz von Monorepositories genutzt, d.h. verschiedene Anwendungen befinden sich im gleichen Code Repository. Die Logik wird in verschiedenen Modulen durch sogenannte Smart Components bereitgestellt, an denen sich die Anwendungen bedienen können. Das erlaubt es, aus den gleichen Bausteinen sowohl umfangreiche Portal Anwendungen zu bauen, als auch Mini-Apps, die nur den für sie notwendigen Code beinhalten. Solche Mini-Apps können schließlich als Web Components verpackt werden und leicht in andere Anwendungen eingebunden werden. Denkbar wäre hier zum Beispiel eine einfache Suchmaske, die in einem bestehenden CMS ihren Platz finden soll.
Technisch basiert GeoNetwork UI auf Angular 12, dessen dependency injection es erlaubt bereits existierende Logik zu überschreiben und für spezielle Anwendungslogik zu implementieren. Auch die visuelle Erscheinungsform lässt sich mittels CSS-Variablen anpassen und ermöglicht Theming direkt im Browser. Eine CSS-Bibliothek, die dies unterstützt, ist das genutzte Tailwind-CSS.
Im vergangenen Jahr wurde eine solide Codebasis im Projekt entwickelt, aus der bislang zwei Anwendungen hervorgegangen sind:
Der Datafeeder stellt eine einfache Möglichkeit bereit, Geodaten in eine Geodateninfrastruktur hochzuladen. Über einen intuitiven, geführten und bewusst einfach gehaltenen Wizard beschreibt der Benutzer die Geodaten. Diese Informationen werden in einen Metadateneintrag im GeoNetwork überführt. Automatisiert werden die Geodaten in die Datenbank geladen und als Layer im GeoServer publiziert.
Der Datahub ist ein Open-Data-Portal, welches sich an den Metadaten von GeoNetwork bedient. Neben einer Suchfunktion und einer allgemeinen Präsentation der Metadaten, listet er Daten-Downloads und APIs auf und ermöglicht eine tabellarische, sowie kartografische Vorschau auf die Daten.