gCube CMS Suite is a distributed full stack application for publication management of geospatial data in a gCube Hybrid e-infrastructure.
Go to file
Francesco Mangiacrapa 86092aedc3 updated doc 2025-08-07 16:34:33 +02:00
.settings added eclipse configurations 2025-08-01 12:18:03 +02:00
D4S_Export_PDF added ICA logo, see #28872 2025-03-25 11:15:35 +01:00
D4S_UCDs updated according to #29696 2025-07-18 15:36:42 +02:00
catalogue-binding-plugin commented source and target maven 2025-08-01 16:57:33 +02:00
cms-plugin-framework added eclipse configurations 2025-08-01 12:18:03 +02:00
cms-test-commons commented source and target maven 2025-08-01 16:57:33 +02:00
concessioni-lifecycle commented source and target maven 2025-08-01 16:57:33 +02:00
concessioni-model commented source and target maven 2025-08-01 16:57:33 +02:00
dataminer-plugins Release 1.0.4 2023-01-13 17:36:22 +01:00
default-lc-managers added eclipse configurations 2025-08-01 12:18:03 +02:00
geoportal-client added maven-compiler-plugin <release>8</release> 2025-08-04 15:52:13 +02:00
geoportal-common added maven-compiler-plugin <release>8</release> 2025-08-04 15:52:13 +02:00
geoportal-service added .gitignore 2025-07-30 14:54:09 +02:00
images-plugin Release 1.0.4 2023-01-13 17:36:22 +01:00
notifications-plugins commented source and target maven 2025-08-01 16:57:33 +02:00
sdi-plugins commented source and target maven 2025-08-01 16:57:33 +02:00
test-data added Catalogue-Binding-Plugin config 2024-06-28 09:55:37 +02:00
use-cases Tests 2023-01-30 12:06:22 +01:00
.gitignore added eclipse configurations 2025-08-01 12:18:03 +02:00
.project added eclipse configurations 2025-08-01 12:18:03 +02:00
ARCHITECTURE.md Updated Documentation 2025-08-07 11:44:31 +02:00
CHANGELOG.md reverted to version 1.0.6 2025-08-04 10:42:32 +02:00
CITATION.cff updated documentation 2025-08-07 15:43:27 +02:00
FUNDING.md Merged repositories 2021-09-20 16:47:35 +02:00
LICENSE.md Merged repositories 2021-09-20 16:47:35 +02:00
README.md updated doc 2025-08-07 16:34:33 +02:00
TECH_SPECIFICATIONS.md renamed 2025-08-07 12:05:24 +02:00
pom.xml reverted to version 1.0.6 2025-08-04 10:42:32 +02:00

README.md

gCube CMS Suite - The Geoportal Technology

gCube CMS Suite is a distributed full-stack application for publication management within gCube Hybrid e-infrastructures. It provides comprehensive document lifecycle management with built-in accessibility features, ensuring published documents are discoverable and accessible through multiple channels including REST APIs, web interfaces, and integrated search capabilities.

Overview

The gCube CMS Suite provides a comprehensive content management solution designed for research communities and data infrastructures. It combines powerful document lifecycle management with spatial data capabilities (geportal technology), offering a flexible plugin architecture that enables customization for diverse use cases.

Rationale

Publication workflows involve numerous common features alongside custom behaviors and formats. The service implements core shared logic while delegating specialized functions to installed plugins. This includes validation, data manifestation, indexing, and lifecycle management.

Lifecycle management operates as an extensible framework supporting both standard and complex ad-hoc workflows. High plugin modularity enables the composition of tailored use cases while maximizing component reusability.

The suite comes with a set of pre-built plugins and GUIs that communities can easily extend and / or reuse.

General Architecture

Components Architecture

See Components Architecture

Built with

Key Features and Functionalities

The gCube CMS Suite offers a rich set of features and functionalities designed to support complex publication workflows and geospatial data management:

Feature/Area Description
📋 Project Management (CRUD Operations) - Create: Create new georeferenced research projects with custom metadata schemas
- Read: Query and retrieve projects with advanced filtering, pagination, and projection capabilities
- Update: Modify project documents with version control and lifecycle state management
- Delete: Remove projects with configurable force options and relationship cleanup
🔄 Publication Lifecycle Management - Multi-phase Workflows: Support for 2-phase (Draft → Published) and 3-phase (Draft → Pending Approval → Published) lifecycles
- Step-based Operations: Configurable lifecycle steps (publish, unpublish, submit-for-review, approve, reject)
- Role-based Access Control: Fine-grained permissions based on user roles and project states
- Automated State Transitions: Event-driven state changes with validation and notification support
📂 FileSet Management - Multi-format Support: Handle various file types (images, documents, GIS data, etc.)
- Storage Integration: Seamless integration with gCube StorageHub for file archiving
- Clash Resolution: Configurable options for handling file conflicts (REPLACE_EXISTING, MERGE_EXISTING, APPEND)
- Access Policy Control: Granular access control for individual filesets
🗄️ Use Case Descriptor (UCD) Framework - Schema Definition: Define custom metadata schemas for different project types
- Validation Rules: Automated validation based on UCD specifications
- Plugin Configuration: Declarative configuration of handlers and lifecycle managers
- GUI Integration: Custom user interface configurations per use case
🔍 Advanced Querying & Search - MongoDB-powered Queries: Leverage MongoDB's powerful querying capabilities
- Spatial Queries: GIS-based spatial filtering and aggregation
- Text Search: Full-text indexing and search capabilities
- Dynamic Aggregation: Zoom-level based aggregation for map visualizations
🗺️ Geospatial Features - GIS Indexing: Automatic creation of spatial indexes (centroids)
- Map Integration: Integration with GeoServer for WMS/WFS services
- Spatial Relationships: Create and manage spatial relationships between projects
🔌 Plugin Architecture - Extensible Handlers: Custom handlers for validation, indexing, materialization
- Event System: Comprehensive event handling (ON_CREATE, ON_UPDATE, ON_DELETE, etc.)
- Notification System: Configurable notifications for lifecycle events
- SDI Integration: Built-in Spatial Data Infrastructure plugins
🔐 Security & Access Control - Authentication: gCube token-based authentication
- Authorization: Role-based access control with policy enforcement
🌐 REST API & Integration - RESTful Interface: Comprehensive REST API for all operations
- Client Libraries: Java client libraries for easy integration
- API Documentation: Interactive API documentation via Swagger/Enunciate
💾 Data Management - MongoDB Storage: Document-oriented storage for flexible schema evolution
- Relationship Management: Create and manage relationships between projects
- Data Export: Multiple export formats and integration options
🖥️ Web Applications - Data Entry App: Rich web interface for project creation and editing
- Data Viewer App: Map-based visualization and exploration interface

Each feature is complemented by robust functionalities, ensuring flexibility, extensibility, and ease of integration for diverse research and data management scenarios.

Lifecycle Managements

Document Lifecycle Managements in action:

Single Step (no moderation)
flowchart LR
    New[New Project] -..-> DRAFT(DRAFT)
    Update[Update Project] -..-> DRAFT(DRAFT)
    DRAFT ==>|publish| Published(Published)
    Published ==>|unpublish| DRAFT

    classDef noteClass fill:#ffe4b5,stroke:none,font-style:italic,font-size:14px;
    classDef box-b fill:#3D6BA6,stroke:#12407B,stroke-width:1px,color:#fff,font-size:16px;
    classDef box-g fill:#3BBF9E,stroke:#03926E,stroke-width:1px,color:#fff,font-size:16px;

    class New,Update noteClass
    class DRAFT box-b
    class Published box-g
3 Phases (content moderation)
flowchart LR
    New[New Project] -..-> DRAFT(DRAFT)
    Update[Update Project] -..-> DRAFT(DRAFT)
    DRAFT ==>|submit-for-review| PendingApproval(Pending<br>Approval)
    PendingApproval ==> |approve-submitted| Published(Published)
    PendingApproval ==>|reject-draft| DRAFT
    Published ==>|unpublish| DRAFT

    classDef noteClass fill:#ffe4b5,stroke:none,font-style:italic,font-size:14px;
    classDef box-b fill:#3D6BA6,stroke:#12407B,stroke-width:1px,color:#fff,font-size:16px;
    classDef box-g fill:#3BBF9E,stroke:#03926E,stroke-width:1px,color:#fff,font-size:16px;
    classDef box-o fill:#FF904E,stroke:#E15604,stroke-width:1px,color:#fff,font-size:16px;

    class New,Update noteClass
    class DRAFT box-b
    class PendingApproval box-o
    class Published box-g

Plugins

Plugins in action:

Use Cases and Applications

🏛️ Cultural Heritage - D4GNA Project

"Dataset per il Geoportale Nazionale per l'Archeologia" - D4GNA Portal

A comprehensive archaeological data management system featuring:

  • Archaeological Site Management: Georeferenced archaeological projects with rich metadata
  • Multimedia Integration: Support for images and documents
  • Expert Review Workflows: Multi-phase approval process for archaeological data
  • Public Access: Controlled access for researchers and public users
  • GIS Integration: Advanced spatial analysis and visualization capabilities
D4GNA Component diagram
graph TB
    subgraph Geoportal [D4GNA Components]
        geoportalservice[<img src='https://gcube.wiki.gcube-system.org/images_gcube/6/63/Geoportal_logo.png'> Geoportal Service]
        mongo[<img src='https://webimages.mongodb.com/_com_assets/cms/kuyjf3vea2hg34taa-horizontal_default_slate_blue.svg?auto=format%252Ccompress'> Mongo DB]
        postgis[<img src='https://www.osgeo.org/wp-content/uploads/postgis-logo-1.png'> PostGIS DB]
        geoserver[<img src='https://geoserver.org/img/geoserver-logo.png'> Geoserver]
        note-gs-to-mongo[Geoportal Service:<br>creates/reads Profiled Documents and UCDs<br>creates/reads Plugins configured<br>on Mongo DB]
        note-gs-to-geoserver[Geoportal Service:<br>creates/reads Workspaces,Stores,Layers,Styles<br>on Geoserver]
        note-gs-to-geoserver2[Geoportal Service:<br>READS via GS Rest Interface<br>e.g. the GeoServerRESTReader.class reads from REST path <br>geoserver_endpoint/rest/layers/profiledconcessioni_gna:profiledconcessioni_gna_centroids.xml<br>WRITES via FeatureTypes<br>e.g. the SDIManagerWrapper.class creates the index layer via FTE]
        note-gs-to-postgis[Geoportal Service:<br>creates/reads Index Layers <br>as Tables on PostGIS for Profile Document ID.<br>Add the Index Layers Store/Workspace to Geoserver]
        note-to-featuretypes[A feature type is a vector based spatial resource<br> or data set that originates from a data store.<br> In some cases, such as with a shapefile,<br> a feature type has a one-to-one relationship<br> with its data store.<br> In other cases, such as PostGIS,<br> the relationship of feature type<br> to data store is many-to-one,<br> feature types corresponding to a table in the database,<br>see https://docs.geoserver.org/main/en/user/rest/api/featuretypes.html]
    end

    subgraph Storage [Cloud Storage]
        shub[SHUB]
        disk1[Storage]
    end

    geoportalservice -->|uses| geoserver
    geoportalservice -->|stores docs| mongo
    geoportalservice -->|sends data| shub
    geoportalservice -->|uses| postgis
    geoserver -->|uses| postgis
    shub -->|stores data| disk1

    note-gs-to-mongo -.-> mongo
    note-gs-to-geoserver -.-> geoserver
    note-gs-to-geoserver2 -.-> geoserver
    note-gs-to-postgis -.-> postgis

    classDef noteClass fill:#ffe4b5,stroke:#000,stroke-dasharray: 1 5,font-style:italic,font-size:12px;
    classDef note2Class fill:#aaccdd,stroke:#000,stroke-dasharray: 1 5,font-style:italic,font-size:12px;
    class note-gs-to-mongo,note-gs-to-geoserver,note-gs-to-geoserver2,note-gs-to-postgis noteClass
    class note-to-featuretypes note2Class
D4GNA Architecture

Documentation and Resources

📚 Comprehensive Documentation

🚀 Getting Started

  1. Installation: Deploy the service in a gCube infrastructure
  2. Configuration: Set up UCDs for your specific use case
  3. Integration: Use the Java client or REST API for system integration
  4. Web Interface: Access the web applications for user interaction

Technical Specifications

See Technical Specifications

Change log

See CHANGELOG.md.

Authors

  • (since December 2022) Fabio Sinibaldi as "Architect", "Developer" (ORCID) Computer Scientist at ISTI-CNR

  • Francesco Mangiacrapa as "Architect", "Developer" and "Maintainer" (ORCID) Computer Scientist at ISTI-CNR Infrascience Group

How to Cite this Software

Tell people how to cite this software.

  • Cite an associated paper?
  • Use a specific BibTeX entry for the software?
    @Manual{,
        title = {gCube CMS Suite - The Geoportal Technology},
        author = {Francesco Mangiacrapa and Fabio Sinibaldi at ISTI-CNR Infrascience Group},
        organization = {ISTI - CNR},
        address = {Pisa, Italy},
        year = 2025,
        note = {The gCube CMS Suite is a distributed full-stack application for publication management within gCube Hybrid e-infrastructures. It provides comprehensive document lifecycle management with built-in accessibility features, ensuring published documents are discoverable and accessible through multiple channels including REST APIs, web interfaces, and integrated search capabilities.},
        url = {https://code-repo.d4science.org/gCubeSystem/gcube-cms-suite}
    }

License

This project is licensed under the terms specified in the LICENSE.md file

About the gCube Framework

This software is part of the gCubeFramework: an open-source software toolkit used for building and operating Hybrid Data Infrastructures enabling the dynamic deployment of Virtual Research Environments by favouring the realisation of reuse oriented policies.

The projects leading to this software have received funding from a series of European Union programmes see FUNDING.md