# flaviomelian/monitoring-resources architecture

> Architecture diagram of the GitHub repository flaviomelian/monitoring-resources, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-11-09). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/flaviomelian/monitoring-resources
- Repository: https://github.com/flaviomelian/monitoring-resources

## Overview

DockStream is a cluster-monitoring and container-orchestration product with a Next.js operations panel and a Spring backend. The main workflow is an operator viewing mesh and telemetry state, then requesting cluster scaling or managing files; backend controllers delegate these actions to services, which inspect Docker, collect metrics, or persist and replicate files. The README also describes an older React/Vite CRUD replica, but the sampled evidence does not establish it as part of the current panel workflow. Edges are limited to relationships visible in excerpts or explicitly documented; unsampled controllers and frontend pages are represented only where their capability is documented.

Main entry points: [`frontend/src/app/services/page.tsx`](https://github.com/flaviomelian/monitoring-resources/blob/master/frontend/src/app/services/page.tsx) (Operations pages), [`backend/src/main/java/com/flavio/backend/service/MonitoringService.java`](https://github.com/flaviomelian/monitoring-resources/blob/master/backend/src/main/java/com/flavio/backend/service/MonitoringService.java) (Telemetry collector), [`backend/src/main/java/com/flavio/backend/service/FileService.java`](https://github.com/flaviomelian/monitoring-resources/blob/master/backend/src/main/java/com/flavio/backend/service/FileService.java) (File service), [`backend/src/main/java/com/flavio/backend/repository/ResourceMetricRepository.java`](https://github.com/flaviomelian/monitoring-resources/blob/master/backend/src/main/java/com/flavio/backend/repository/ResourceMetricRepository.java) (Metric repository)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_web["Operations panel"]
  node_panel["Operations pages<br/>[page.tsx]"]
  node_meshgrid["Mesh app grid<br/>[MeshAppsGrid.tsx]"]
  node_topology["Stack topology"]
  node_header["Navigation header<br/>[Header.tsx]"]
  node_filespage["File workspace<br/>[page.tsx]"]
  node_docs["Client documentation<br/>[page.tsx]"]
end

subgraph group_api["Backend API"]
  node_clustercontroller["Cluster endpoints"]
  node_metricscontroller["Metrics endpoints"]
  node_filecontroller["File endpoints"]
end

subgraph group_mesh["Cluster and telemetry"]
  node_clusterorchestrator["Cluster orchestrator"]
  node_monitoring["Telemetry collector"]
  node_metricsrepo[("Metric repository")]
  node_metricmodel["Resource metrics"]
  node_servermodel["Server nodes<br/>[ServerNode.java]"]
end

subgraph group_files["File management"]
  node_fileservice["File service<br/>[FileService.java]"]
  node_filemodel["File records<br/>[File.java]"]
  node_filerepo[("File repository")]
end

subgraph group_identity["Identity and access"]
  node_authservice["Authentication service<br/>[AuthService.java]"]
  node_usermodel["User records<br/>[User.java]"]
  node_userrepo[("User repository")]
end

node_operator(("Operator"))
node_docker["Docker runtime"]
node_replicas["Replica nodes"]
node_sqlstore[("Relational store")]

node_operator -->|"uses"| node_panel
node_panel -->|"renders"| node_meshgrid
node_panel -->|"renders"| node_topology
node_operator -.->|"manages files"| node_filespage
node_header -->|"links to"| node_docs
node_clustercontroller -->|"delegates to"| node_clusterorchestrator
node_clusterorchestrator -->|"runs CLI"| node_docker
node_metricscontroller -->|"delegates to"| node_monitoring
node_monitoring -->|"queries and saves"| node_metricsrepo
node_metricsrepo -->|"stores"| node_metricmodel
node_metricmodel -->|"belongs to node"| node_servermodel
node_monitoring -->|"sends telemetry"| node_replicas
node_filecontroller -->|"delegates to"| node_fileservice
node_fileservice -->|"reads and writes"| node_filerepo
node_filerepo -->|"stores"| node_filemodel
node_fileservice -->|"propagates uploads"| node_replicas
node_authservice -->|"reads and saves"| node_userrepo
node_authservice -->|"creates"| node_usermodel
node_userrepo -->|"stores"| node_usermodel
node_operator -.->|"requests scaling"| node_clustercontroller
node_sqlstore -.->|"persists"| node_metricsrepo

click node_panel "https://github.com/flaviomelian/monitoring-resources/blob/master/frontend/src/app/services/page.tsx"
click node_meshgrid "https://github.com/flaviomelian/monitoring-resources/blob/master/frontend/src/app/component/MeshAppsGrid.tsx"
click node_topology "https://github.com/flaviomelian/monitoring-resources/blob/master/frontend/src/app/component/StackTopolgyGrid.tsx"
click node_header "https://github.com/flaviomelian/monitoring-resources/blob/master/frontend/src/app/component/Header.tsx"
click node_filespage "https://github.com/flaviomelian/monitoring-resources/blob/master/frontend/src/app/files/page.tsx"
click node_docs "https://github.com/flaviomelian/monitoring-resources/blob/master/frontend/src/app/frontend-doc/page.tsx"
click node_clustercontroller "https://github.com/flaviomelian/monitoring-resources/blob/master/backend/src/main/java/com/flavio/backend/controller/ClusterController.java"
click node_metricscontroller "https://github.com/flaviomelian/monitoring-resources/blob/master/backend/src/main/java/com/flavio/backend/controller/MetricsController.java"
click node_filecontroller "https://github.com/flaviomelian/monitoring-resources/blob/master/backend/src/main/java/com/flavio/backend/controller/FileController.java"
click node_clusterorchestrator "https://github.com/flaviomelian/monitoring-resources/blob/master/backend/src/main/java/com/flavio/backend/service/ClusterOrchestratorService.java"
click node_monitoring "https://github.com/flaviomelian/monitoring-resources/blob/master/backend/src/main/java/com/flavio/backend/service/MonitoringService.java"
click node_metricsrepo "https://github.com/flaviomelian/monitoring-resources/blob/master/backend/src/main/java/com/flavio/backend/repository/ResourceMetricRepository.java"
click node_metricmodel "https://github.com/flaviomelian/monitoring-resources/blob/master/backend/src/main/java/com/flavio/backend/model/ResourceMetric.java"
click node_servermodel "https://github.com/flaviomelian/monitoring-resources/blob/master/backend/src/main/java/com/flavio/backend/model/ServerNode.java"
click node_fileservice "https://github.com/flaviomelian/monitoring-resources/blob/master/backend/src/main/java/com/flavio/backend/service/FileService.java"
click node_filemodel "https://github.com/flaviomelian/monitoring-resources/blob/master/backend/src/main/java/com/flavio/backend/model/File.java"
click node_filerepo "https://github.com/flaviomelian/monitoring-resources/blob/master/backend/src/main/java/com/flavio/backend/repository/FileRepository.java"
click node_authservice "https://github.com/flaviomelian/monitoring-resources/blob/master/backend/src/main/java/com/flavio/backend/service/AuthService.java"
click node_usermodel "https://github.com/flaviomelian/monitoring-resources/blob/master/backend/src/main/java/com/flavio/backend/model/User.java"
click node_userrepo "https://github.com/flaviomelian/monitoring-resources/blob/master/backend/src/main/java/com/flavio/backend/repository/UserRepository.java"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_panel,node_meshgrid,node_topology,node_header,node_filespage,node_docs toneBlue
class node_clustercontroller,node_metricscontroller,node_filecontroller,node_sqlstore toneAmber
class node_clusterorchestrator,node_monitoring,node_metricsrepo,node_metricmodel,node_servermodel toneMint
class node_fileservice,node_filemodel,node_filerepo toneRose
class node_authservice,node_usermodel,node_userrepo,node_operator,node_docker,node_replicas toneIndigo
```

## Components

### Operations panel

- [Operations pages](https://github.com/flaviomelian/monitoring-resources/blob/master/frontend/src/app/services/page.tsx): `frontend/src/app/services/page.tsx`
- [Mesh app grid](https://github.com/flaviomelian/monitoring-resources/blob/master/frontend/src/app/component/MeshAppsGrid.tsx): `frontend/src/app/component/MeshAppsGrid.tsx`
- [Stack topology](https://github.com/flaviomelian/monitoring-resources/blob/master/frontend/src/app/component/StackTopolgyGrid.tsx): `frontend/src/app/component/StackTopolgyGrid.tsx`
- [Navigation header](https://github.com/flaviomelian/monitoring-resources/blob/master/frontend/src/app/component/Header.tsx): `frontend/src/app/component/Header.tsx`
- [File workspace](https://github.com/flaviomelian/monitoring-resources/blob/master/frontend/src/app/files/page.tsx): `frontend/src/app/files/page.tsx`
- [Client documentation](https://github.com/flaviomelian/monitoring-resources/blob/master/frontend/src/app/frontend-doc/page.tsx): `frontend/src/app/frontend-doc/page.tsx`

### Backend API

- [Cluster endpoints](https://github.com/flaviomelian/monitoring-resources/blob/master/backend/src/main/java/com/flavio/backend/controller/ClusterController.java): `backend/src/main/java/com/flavio/backend/controller/ClusterController.java`
- [Metrics endpoints](https://github.com/flaviomelian/monitoring-resources/blob/master/backend/src/main/java/com/flavio/backend/controller/MetricsController.java): `backend/src/main/java/com/flavio/backend/controller/MetricsController.java`
- [File endpoints](https://github.com/flaviomelian/monitoring-resources/blob/master/backend/src/main/java/com/flavio/backend/controller/FileController.java): `backend/src/main/java/com/flavio/backend/controller/FileController.java`

### Cluster and telemetry

- [Cluster orchestrator](https://github.com/flaviomelian/monitoring-resources/blob/master/backend/src/main/java/com/flavio/backend/service/ClusterOrchestratorService.java): `backend/src/main/java/com/flavio/backend/service/ClusterOrchestratorService.java`
- [Telemetry collector](https://github.com/flaviomelian/monitoring-resources/blob/master/backend/src/main/java/com/flavio/backend/service/MonitoringService.java): `backend/src/main/java/com/flavio/backend/service/MonitoringService.java`
- [Metric repository](https://github.com/flaviomelian/monitoring-resources/blob/master/backend/src/main/java/com/flavio/backend/repository/ResourceMetricRepository.java): `backend/src/main/java/com/flavio/backend/repository/ResourceMetricRepository.java`
- [Resource metrics](https://github.com/flaviomelian/monitoring-resources/blob/master/backend/src/main/java/com/flavio/backend/model/ResourceMetric.java): `backend/src/main/java/com/flavio/backend/model/ResourceMetric.java`
- [Server nodes](https://github.com/flaviomelian/monitoring-resources/blob/master/backend/src/main/java/com/flavio/backend/model/ServerNode.java): `backend/src/main/java/com/flavio/backend/model/ServerNode.java`

### File management

- [File service](https://github.com/flaviomelian/monitoring-resources/blob/master/backend/src/main/java/com/flavio/backend/service/FileService.java): `backend/src/main/java/com/flavio/backend/service/FileService.java`
- [File records](https://github.com/flaviomelian/monitoring-resources/blob/master/backend/src/main/java/com/flavio/backend/model/File.java): `backend/src/main/java/com/flavio/backend/model/File.java`
- [File repository](https://github.com/flaviomelian/monitoring-resources/blob/master/backend/src/main/java/com/flavio/backend/repository/FileRepository.java): `backend/src/main/java/com/flavio/backend/repository/FileRepository.java`

### Identity and access

- [Authentication service](https://github.com/flaviomelian/monitoring-resources/blob/master/backend/src/main/java/com/flavio/backend/service/AuthService.java): `backend/src/main/java/com/flavio/backend/service/AuthService.java`
- [User records](https://github.com/flaviomelian/monitoring-resources/blob/master/backend/src/main/java/com/flavio/backend/model/User.java): `backend/src/main/java/com/flavio/backend/model/User.java`
- [User repository](https://github.com/flaviomelian/monitoring-resources/blob/master/backend/src/main/java/com/flavio/backend/repository/UserRepository.java): `backend/src/main/java/com/flavio/backend/repository/UserRepository.java`

### Other components

- **Operator**
- **Docker runtime**
- **Replica nodes**
- **Relational store**

## Connections

- Operator → Operations pages: uses (evidence: `frontend/src/app/services/page.tsx`)
- Operations pages → Mesh app grid: renders (evidence: `frontend/src/app/services/page.tsx`)
- Operations pages → Stack topology: renders (evidence: `frontend/src/app/services/page.tsx`)
- Operator → File workspace: manages files
- Navigation header → Client documentation: links to (evidence: `frontend/src/app/component/Header.tsx`)
- Cluster endpoints → Cluster orchestrator: delegates to (evidence: `backend/src/main/java/com/flavio/backend/controller/ClusterController.java`)
- Cluster orchestrator → Docker runtime: runs CLI (evidence: `backend/src/main/java/com/flavio/backend/service/ClusterOrchestratorService.java`)
- Metrics endpoints → Telemetry collector: delegates to (evidence: `backend/src/main/java/com/flavio/backend/controller/MetricsController.java`)
- Telemetry collector → Metric repository: queries and saves (evidence: `backend/src/main/java/com/flavio/backend/service/MonitoringService.java`)
- Metric repository → Resource metrics: stores (evidence: `backend/src/main/java/com/flavio/backend/repository/ResourceMetricRepository.java`)
- Resource metrics → Server nodes: belongs to node (evidence: `backend/src/main/java/com/flavio/backend/model/ResourceMetric.java`)
- Telemetry collector → Replica nodes: sends telemetry (evidence: `backend/src/main/java/com/flavio/backend/service/MonitoringService.java`)
- File endpoints → File service: delegates to (evidence: `backend/src/main/java/com/flavio/backend/controller/FileController.java`)
- File service → File repository: reads and writes (evidence: `backend/src/main/java/com/flavio/backend/service/FileService.java`)
- File repository → File records: stores (evidence: `backend/src/main/java/com/flavio/backend/service/FileService.java`)
- File service → Replica nodes: propagates uploads (evidence: `backend/src/main/java/com/flavio/backend/service/FileService.java`)
- Authentication service → User repository: reads and saves (evidence: `backend/src/main/java/com/flavio/backend/service/AuthService.java`)
- Authentication service → User records: creates (evidence: `backend/src/main/java/com/flavio/backend/service/AuthService.java`)
- User repository → User records: stores (evidence: `backend/src/main/java/com/flavio/backend/service/AuthService.java`)
- Operator → Cluster endpoints: requests scaling
- Relational store → Metric repository: persists
