Skip to main content

Repository map

This workspace is not a single monorepo. Use this page when you want to answer one practical question quickly:

  • where should a code change go?
  • which repository owns which part of the platform?
  • which folders are active code versus examples or legacy material?

If you want the product-level architecture first, start with Understanding the Platform architecture. If you already know you are touching the Angular UI, also see Frontend workspace map.

Mental model

The workspace is easiest to understand as four layers:

  1. Docs and operations
  2. Frontend
  3. Platform services
  4. Tooling and example apps

This diagram is intentionally simplified. It is meant as a repo ownership map, not a full runtime diagram.

How to read this workspace

  • A top-level folder with its own .git directory is an independent repository with its own history and CI.
  • apps/ is a shared collection of tool/app folders, not a single Git repo in this checkout.
  • deprecated/ is a reference area for older services and should not be your default target for new work.
  • Most active repos point to the same GitLab namespace: cosybio/federated-learning/federated_db.

Core product repositories

FolderWhat it ownsWhen you usually change itLink
user-documentationDocusaurus site for product, deployment, user, and contributor docsWriting or restructuring docsuser-documentation
frontend-sharedAngular workspace for the local and global frontends plus the shared UI library and brand themesUI flows, components, routes, frontend integrations, brand variants such as dAIbetes and PosyMedfrontend-shared
core-apiPython DTOs, serializers, and helpers used on the Python service sideIn practice this is mainly relevant for data-importer-api; the Java services use their own Maven-based shared modulescore-api
learning-apisParent repo for the active Java backend modules, including the local/global learning APIs and the Java schema servicesFederated learning flows, query handling, workflow execution state, local/global backend behavior, and the active datamodeler implementationglobal-learning-apis
data-importer-apiConnector and ETL backend for ingesting site data, applying transformers, and previewing import resultsLocal ingestion, connector runs, data mapping, transformation previewsdata-importer-api
orch-apiOrchestration backend for controlled tool execution and run lifecycle managementStarting runs, tracking execution, runtime coordinationorch-api
feature-cloud-controllerGo-based controller and relay pieces used by the federated execution stackController behavior, relay process, lower-level execution coordinationfeature-cloud-controller
metaDeployment definitions, infra templates, C4/Structurizr docs, Keycloak exports, helper scriptsEnvironment setup, deployment changes, operational wiring, internal architecture assetsmeta

Tooling and app-development repositories

FolderWhat it ownsNotesLink
apps/Example/import/transformer apps and data assets used by the platformThis folder is a workspace collection, not a standalone repo in this checkoutNone in this checkout
pyappstarterPython helper that starts containerized apps and streams run updates over WebSocketsUseful for local app execution and transformer-style workflowspyappstarter
pyfedappwrapPython wrapper for local FEDDB app developmentLightweight support package for app authoring and local workflowspyfedappwrap
app-build-pipelineRemote build-and-publish pipeline client for app imagesClones repos, injects files, builds images, runs pytest, scans images, pushes artifactsapp-build-pipeline
pyclientsimulationPython simulator for local-learning websocket clientsHandy for testing the global-learning flow without full local serverspyclientsimulation
example-appsExample project space, currently including a digital-twin-oriented exampleGood starting point when you need reference app materialexample-apps

Shared folders that are not top-level repos

apps/

This folder currently holds small platform tools and sample material such as:

  • SQL extraction
  • train/test splitting
  • row combination and splitting
  • date normalization
  • imported diabetes example data

Treat apps/ as a toolbox area. If you are changing a reusable platform service, this is usually not the right place. If you are changing a concrete tool's behavior, it often is.

deprecated/

This folder keeps older services such as harmonized-api, meta-api, query-controller, and other archived components. Use it mainly for historical reference or migration context.

Alternative or legacy implementations worth noticing

  • py-datamodeler-api is deprecated. Current schema and datamodel work runs on the Java side.
  • learning-apis is the active home for the Java services, including the current datamodeler implementation used now.
  • datamodeler-api exists separately in this workspace as a Java/Quarkus service checkout, but this local folder does not currently have a Git remote configured.
  • feature-cloud-controller/README_relay.md is focused on relay certificate operations, so the code tree itself is more informative than the README for understanding that repo.

Fast path: where should I change what?

  • Documentation: user-documentation
  • Angular UI or shared frontend components: frontend-shared
  • Python-side DTOs for the importer stack: core-api
  • Schema, ontology, or metadata modeling in the current stack: learning-apis
  • Legacy Python schema service work only: py-datamodeler-api
  • Local ingestion, connectors, or transformation preview flow: data-importer-api
  • Federated learning or local/global backend behavior: learning-apis
  • Run orchestration and execution lifecycle: orch-api
  • Controller or relay internals: feature-cloud-controller
  • Deployment, docker-compose, Keycloak, or environment glue: meta
  • Tool/app authoring support: pyappstarter, pyfedappwrap, app-build-pipeline

Source of truth for this page

This overview was assembled from the local checkout structure, each repo's configured Git remote, and the README files currently present in this workspace. If a repo's role changes, update this page together with the relevant README so the map stays trustworthy.