Karriere Newsroom Kontakt DE · EN Deutsches Zentrum für Luft- und Raumfahrt
Research Data Management Platform Storage for HEterogeneous Product And Research Data · DLR Center for Lightweight Production Technology, Augsburg
Architecture

Architecture

Stack, persistence, entity model, auth, and export — sourced from `aidocs/01-repo-overview.md` and the in-repo `architecture/src/` AsciiDoc.

This page summarises shepard’s architecture as it exists today. Sources: aidocs/01-repo-overview.md, architecture/src/05_building_block_view/, architecture/src/09_architecture_decisions/, infrastructure/docker-compose.yml.

High-level block diagram

flowchart LR user[Browser / API client] --> caddy[Caddy reverse proxy] caddy --> frontend[Nuxt 3 frontend] caddy --> backend[Quarkus 3 backend - Java 21] frontend --> backend backend --> neo4j[(Neo4j 5.24
metadata graph)] backend --> mongo[(MongoDB 8.0
files and structured)] backend --> ts[(Postgres + TimescaleDB
timeseries)] backend -. optional .- gis[(Postgres + PostGIS
spatial)] backend -. SPARQL .- semantic[Semantic repos
e.g. Ontobee] backend -. webhooks .- subs[Subscribers] oidc[OIDC IdP - Keycloak typical] --> caddy prom[Prometheus] --> backend

Stack

Polyglot persistence — and why each store

Store Role Reason
Neo4j 5.24 Metadata graph The Collection / DataObject / Reference / Container relationships are inherently graph-shaped; parent/child + predecessor/successor traversals are first-class.
MongoDB 8.0 Files, structured documents Variable-shaped JSON payloads and binary files do not benefit from a relational schema; MongoDB’s document model is the natural fit.
Postgres + TimescaleDB Timeseries Hypertables, time-bucket aggregation, and SQL-compatible ingestion outperformed InfluxDB for the workload (ADR-010 / ADR-011).
Postgres + PostGIS (optional) Spatial data Bounding-box queries returned in 380 ms versus 59 s on alternative stacks (ADR-014 / ADR-017). Behind the shepard.spatial-data.enabled feature flag.

ADR rationale: see architecture/src/09_architecture_decisions/008-..., 010-..., 011-..., 014-..., 017-....

Entity model

The four entity kinds, per architecture/src/05_building_block_view/ and the data-model wiki page:

Concrete *Rest.java endpoints live under backend/src/main/java/de/dlr/shepard/{context,data,auth,common}/.../endpoints/ — e.g. CollectionRest, DataObjectRest, FileReferenceRest, TimeseriesRest, StructuredDataRest, SpatialDataPointRest, LabJournalEntryRest, URIReferenceRest, SemanticRepositoryRest, SubscriptionRest, UserRest, UserGroupRest, ApiKeyRest, SearchRest.

Auth model

For deeper material, see the upstream architecture chapters under architecture/src/. Cross-references to the in-repo design notes aidocs/12 §11, aidocs/13, and aidocs/14 are marked planned / proposal; some forward-referenced aidocs (e.g. aidocs/19, aidocs/24) are not yet checked in at this snapshot date.

Export model

RO-Crate ZIP export with ro-crate-metadata.json, per aidocs/01. This is the canonical machine-readable handover format; consumers can re-attach the export into another shepard instance or process it with the wider RO-Crate toolchain.

Observability

Where this site sits

This site does not duplicate the canonical Arc42 docs in architecture/src/. For decision rationale and module decomposition, read those AsciiDoc sources (or the rendered docToolchain output) directly.