Skip to main content

Model Repository Code Structure

The backend application lives under maize-model-repository/model-repository-server/src/main/java/com/modular/workflow.

Package Map

PackageResponsibility
ControllersHTTP endpoints, auth header handling, request routing, and OpenAPI annotations.
serviceBusiness logic, persistence orchestration, external service calls, file rendering, provisioning, monitoring, and token handling.
repositorySpring Data MongoDB repositories.
model/entityPersisted catalog, settings, observation, workflow, and status records.
model/dtoAPI DTO classes. Many currently extend entity classes.
model/dataModelsEmbedded structures such as Parameter, ParameterValue, DataSchema, Location, and Position.
model/dataTypesWorkflow and template graph payload structures.
model/GraphNode, edge, and workflow graph helpers used by workflow payloads.
converterEntity-to-DTO conversion helpers.
listenersMongo lifecycle listeners for timestamps, defaults, or consistency hooks.
configSpring Security and SpringDoc/OpenAPI configuration.
errorsCustom exceptions and REST exception handling.
utilShared utilities, JinJava rendering, legacy DAG generation, and credential encryption.

Controller Groups

ControllerPrimary endpointsNotes
TestController/test/v1/pingUnauthenticated connectivity check.
AssetController/user/v1/resource/ac, /user/v1/resource/assetAsset Categories and Worker Assets. Creating a Worker can trigger processor re-provisioning.
DataInterfaceController/user/v1/resource/dit, /user/v1/resource/dsData Interface Types and Digital Resources.
DataKindController/user/v1/resource/dkPayload contract metadata used by Digital Resources.
ObservationController/user/v1/resource/obsObservation records and search.
ProcessorController/user/v1/dpe/registry/*Processor Definitions, Processor Manifests, Workflows, Workflow Templates, DAG status, Airflow run details, and cleanup endpoints.
SettingsController/user/v1/settings*User settings and GitHub token CRUD.
MonitoringController/user/v1/monitoring/logstash/*Logstash pipeline status and activation operations.
VisualizationController/user/v1/visualization/*Kibana link and data-view resolution.
CeleryWorkerController/user/v1/resource/celery/workers*Flower-backed Celery worker discovery/import.
LogstashAiController/api/ai/logstash/chatStreaming chat endpoint for Logstash filter assistance.

Service Responsibilities

Use the manager/service layer for behavior changes rather than putting business rules in controllers.

ServiceMain responsibility
DataInterfaceTypeManager, DigitalResourceManager, DataKindManager, AssetManager, AssetCategoryManagerCatalog CRUD, search, ownership, and defaults.
ProcessorDefinitionManagerProcessor Definition validation, persistence, source fields, and re-provision triggers.
ProcessorProvisioningServiceFan-out of processor source folders to workers and provisioning status records.
ProcessorManifestManagerProcessor instance persistence and Logstash-related save/delete side effects.
ProcessorOrchestratorManagerWorkflow persistence, run/stop behavior, Airflow API calls, and search.
WorkflowTemplateManagerSave, search, update, delete, and instantiate workflow templates.
DagManager, FileHandlingManagerAirflow DAG rendering and distribution to workers.
LogstashManager, LogstashMonitoringServiceLogstash config rendering, pipelines.yml, and monitoring status.
KibanaServiceKibana data view and visualization destination setup.
SettingsManager, CredentialEncryptorSettings merge semantics plus encrypted registry and GitHub token handling.
CeleryWorkerSyncService, AirflowRunMonitorManagerExternal runtime status import and Airflow run inspection.

Configuration Files

FilePurpose
model-repository-server/src/main/resources/application.propertiesMaps environment variables to Spring properties.
.env.exampleDeployment-time environment template.
docker-compose.ymlBackend, MongoDB, Kafka/AKHQ, and ELK service wiring.
model-repository-server/src/main/resources/*.j2JinJava templates for Airflow DAGs and Logstash pipelines.
model-repository-server/src/main/resources/kibana/*.jsonKibana saved-object assets used by visualization provisioning.
config/extra-processors.example.jsonOptional extra processor catalog seed template.

Change Guidance

  • Add or change endpoint behavior in the relevant controller and manager together.
  • Keep OpenAPI annotations in sync with side effects, async behavior, and response status codes.
  • Update these public docs when a contract changes, and update backend docs/ when a cross-service sequence changes.
  • Prefer adding tests around managers for business rules and controller tests for route/auth/wire-shape behavior.