# gcanudo-barreras/vivo-platform architecture

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

- Interactive diagram: https://gitdiagram.com/gcanudo-barreras/vivo-platform
- Repository: https://github.com/gcanudo-barreras/vivo-platform

## Overview

ViVo is a browser-based in-vivo efficacy analysis application. Researchers load CSV measurements, configure a study, review and analyze tumor-growth data, then explore comparisons and predictions and export results. The documented workflow includes data cleaning/outlier handling, regression and statistical analysis, TGR matrices, visualizations, and HTML/CSV reporting. The map includes the sampled application and analysis layers; several feature paths are documented in the README but their exact UI wiring is not visible in the excerpts, so uncertain links are omitted.

Main entry points: [`js/core/ApplicationController.js`](https://github.com/gcanudo-barreras/vivo-platform/blob/main/js/core/ApplicationController.js) (Application controller), [`index.html`](https://github.com/gcanudo-barreras/vivo-platform/blob/main/index.html) (ViVo web app), [`js/core/AnalysisController.js`](https://github.com/gcanudo-barreras/vivo-platform/blob/main/js/core/AnalysisController.js) (Analysis controller), [`js/core/WorkerManager.js`](https://github.com/gcanudo-barreras/vivo-platform/blob/main/js/core/WorkerManager.js) (Worker manager)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_interface["User interface"]
  node_webapp["ViVo web app<br/>[index.html]"]
  node_wizard["Study setup wizard"]
end

subgraph group_analysis["Analysis"]
  node_analysiscontroller["Analysis controller"]
  node_outlier["Outlier detection"]
  node_outlierworker["Outlier worker"]
  node_modelquality["Model homogeneity"]
  node_dataworker["Regression worker"]
  node_tgrworker["TGR worker"]
end

subgraph group_results["Results and export"]
  node_tgrservice["TGR matrices"]
  node_chartservice["Chart service<br/>[ChartService.js]"]
  node_prediction["Weight predictions"]
  node_report["HTML reports<br/>[ReportGenerator.js]"]
  node_export["CSV export<br/>[ExportManager.js]"]
  node_github["GitHub issue service"]
end

subgraph group_runtime["Application runtime"]
  node_appcontroller["Application controller"]
  node_state["Application state<br/>[AppState.js]"]
  node_workermanager["Worker manager<br/>[WorkerManager.js]"]
  node_chartpool["Chart pool"]
end

node_researcher(("Researcher"))
node_githubapi{{"GitHub proxy"}}

node_researcher -->|"opens and imports"| node_webapp
node_webapp -->|"starts app"| node_appcontroller
node_appcontroller -->|"initializes services"| node_state
node_appcontroller -->|"initializes"| node_analysiscontroller
node_appcontroller -->|"initializes"| node_wizard
node_analysiscontroller -->|"dispatches analysis"| node_workermanager
node_workermanager -->|"runs regression"| node_dataworker
node_tgrservice -->|"dispatches matrix work"| node_tgrworker
node_chartservice -->|"renders charts"| node_chartpool
node_prediction -->|"reads analysis data"| node_state
node_export -->|"uses report generator"| node_report
node_github -.->|"requests issues"| node_githubapi

click node_webapp "https://github.com/gcanudo-barreras/vivo-platform/blob/main/index.html"
click node_appcontroller "https://github.com/gcanudo-barreras/vivo-platform/blob/main/js/core/ApplicationController.js"
click node_state "https://github.com/gcanudo-barreras/vivo-platform/blob/main/js/core/AppState.js"
click node_wizard "https://github.com/gcanudo-barreras/vivo-platform/blob/main/js/services/ScientificWizardService.js"
click node_analysiscontroller "https://github.com/gcanudo-barreras/vivo-platform/blob/main/js/core/AnalysisController.js"
click node_outlier "https://github.com/gcanudo-barreras/vivo-platform/blob/main/js/IntelligentOutlierDetector.js"
click node_outlierworker "https://github.com/gcanudo-barreras/vivo-platform/blob/main/js/workers/OutlierDetectionWorker.js"
click node_modelquality "https://github.com/gcanudo-barreras/vivo-platform/blob/main/js/ModelHomogeneityEvaluator.js"
click node_dataworker "https://github.com/gcanudo-barreras/vivo-platform/blob/main/js/workers/DataAnalysisWorker.js"
click node_workermanager "https://github.com/gcanudo-barreras/vivo-platform/blob/main/js/core/WorkerManager.js"
click node_tgrservice "https://github.com/gcanudo-barreras/vivo-platform/blob/main/js/services/TGRMatricesService.js"
click node_tgrworker "https://github.com/gcanudo-barreras/vivo-platform/blob/main/js/workers/TGRCalculationWorker.js"
click node_chartservice "https://github.com/gcanudo-barreras/vivo-platform/blob/main/js/services/ChartService.js"
click node_chartpool "https://github.com/gcanudo-barreras/vivo-platform/blob/main/js/core/ChartPoolManager.js"
click node_prediction "https://github.com/gcanudo-barreras/vivo-platform/blob/main/js/services/PredictionService.js"
click node_report "https://github.com/gcanudo-barreras/vivo-platform/blob/main/js/services/ReportGenerator.js"
click node_export "https://github.com/gcanudo-barreras/vivo-platform/blob/main/js/services/ExportManager.js"
click node_github "https://github.com/gcanudo-barreras/vivo-platform/blob/main/js/services/GitHubIssuesService.js"

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_webapp,node_wizard toneBlue
class node_analysiscontroller,node_outlier,node_outlierworker,node_modelquality,node_dataworker,node_tgrworker toneAmber
class node_tgrservice,node_chartservice,node_prediction,node_report,node_export,node_github toneMint
class node_appcontroller,node_state,node_workermanager,node_chartpool toneRose
class node_researcher,node_githubapi toneIndigo
```

## Components

### User interface

- [ViVo web app](https://github.com/gcanudo-barreras/vivo-platform/blob/main/index.html): `index.html`
- [Study setup wizard](https://github.com/gcanudo-barreras/vivo-platform/blob/main/js/services/ScientificWizardService.js): `js/services/ScientificWizardService.js`

### Analysis

- [Analysis controller](https://github.com/gcanudo-barreras/vivo-platform/blob/main/js/core/AnalysisController.js): `js/core/AnalysisController.js`
- [Outlier detection](https://github.com/gcanudo-barreras/vivo-platform/blob/main/js/IntelligentOutlierDetector.js): `js/IntelligentOutlierDetector.js`
- [Outlier worker](https://github.com/gcanudo-barreras/vivo-platform/blob/main/js/workers/OutlierDetectionWorker.js): `js/workers/OutlierDetectionWorker.js`
- [Model homogeneity](https://github.com/gcanudo-barreras/vivo-platform/blob/main/js/ModelHomogeneityEvaluator.js): `js/ModelHomogeneityEvaluator.js`
- [Regression worker](https://github.com/gcanudo-barreras/vivo-platform/blob/main/js/workers/DataAnalysisWorker.js): `js/workers/DataAnalysisWorker.js`
- [TGR worker](https://github.com/gcanudo-barreras/vivo-platform/blob/main/js/workers/TGRCalculationWorker.js): `js/workers/TGRCalculationWorker.js`

### Results and export

- [TGR matrices](https://github.com/gcanudo-barreras/vivo-platform/blob/main/js/services/TGRMatricesService.js): `js/services/TGRMatricesService.js`
- [Chart service](https://github.com/gcanudo-barreras/vivo-platform/blob/main/js/services/ChartService.js): `js/services/ChartService.js`
- [Weight predictions](https://github.com/gcanudo-barreras/vivo-platform/blob/main/js/services/PredictionService.js): `js/services/PredictionService.js`
- [HTML reports](https://github.com/gcanudo-barreras/vivo-platform/blob/main/js/services/ReportGenerator.js): `js/services/ReportGenerator.js`
- [CSV export](https://github.com/gcanudo-barreras/vivo-platform/blob/main/js/services/ExportManager.js): `js/services/ExportManager.js`
- [GitHub issue service](https://github.com/gcanudo-barreras/vivo-platform/blob/main/js/services/GitHubIssuesService.js): `js/services/GitHubIssuesService.js`

### Application runtime

- [Application controller](https://github.com/gcanudo-barreras/vivo-platform/blob/main/js/core/ApplicationController.js): `js/core/ApplicationController.js`
- [Application state](https://github.com/gcanudo-barreras/vivo-platform/blob/main/js/core/AppState.js): `js/core/AppState.js`
- [Worker manager](https://github.com/gcanudo-barreras/vivo-platform/blob/main/js/core/WorkerManager.js): `js/core/WorkerManager.js`
- [Chart pool](https://github.com/gcanudo-barreras/vivo-platform/blob/main/js/core/ChartPoolManager.js): `js/core/ChartPoolManager.js`

### Other components

- **Researcher**
- **GitHub proxy**

## Connections

- Researcher → ViVo web app: opens and imports
- ViVo web app → Application controller: starts app
- Application controller → Application state: initializes services
- Application controller → Analysis controller: initializes
- Application controller → Study setup wizard: initializes
- Analysis controller → Worker manager: dispatches analysis
- Worker manager → Regression worker: runs regression
- TGR matrices → TGR worker: dispatches matrix work
- Chart service → Chart pool: renders charts
- Weight predictions → Application state: reads analysis data
- CSV export → HTML reports: uses report generator
- GitHub issue service → GitHub proxy: requests issues
