# vvvrome/data-center-scada architecture

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

- Interactive diagram: https://gitdiagram.com/vvvrome/data-center-scada
- Repository: https://github.com/vvvrome/data-center-scada

## Overview

DataCenter Lab is a Python critical-infrastructure simulation lab with a Flask interface. The main runtime starts in `main.py`: it configures the datacenter and simulation engine, starts periodic updates, then serves the web app. The simulation combines infrastructure, workload/power/cooling/network behavior, monitoring and security; the plant is a separate physical-process and safety domain, with QKD security. Graph Lab and user/audit persistence are additional capabilities. Edges use README architecture statements or source-index references; unsampled subsystem internals are not inferred.

Main entry points: [`simulacion/motor.py`](https://github.com/vvvrome/data-center-scada/blob/main/simulacion/motor.py) (Simulation engine), [`planta/proceso.py`](https://github.com/vvvrome/data-center-scada/blob/main/planta/proceso.py) (Nuclear plant process), [`API/app.py`](https://github.com/vvvrome/data-center-scada/blob/main/API/app.py) (Flask application), [`main.py`](https://github.com/vvvrome/data-center-scada/blob/main/main.py) (Runtime launcher)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_runtime["Runtime and web"]
  node_main["Runtime launcher<br/>[main.py]"]
  node_web["Flask application<br/>[app.py]"]
end

subgraph group_datacenter["Datacenter simulation"]
  node_infra["Datacenter infrastructure<br/>[datacenter.py]"]
  node_devices["Server and network devices<br/>[server.py]"]
  node_engine["Simulation engine<br/>[motor.py]"]
  node_workload["Workload generation<br/>[workload.py]"]
  node_physical["Power and cooling<br/>[power.py]"]
  node_network["Network simulation<br/>[network.py]"]
  node_monitor["Monitoring and alerts<br/>[alerts.py]"]
end

subgraph group_security["Security and persistence"]
  node_security["Security manager"]
  node_firewall["Firewall policies<br/>[firewall.py]"]
  node_ids["Intrusion detection<br/>[ids.py]"]
  node_users[("User accounts<br/>[users.py]")]
  node_audit[("Audit records<br/>[audit.py]")]
end

subgraph group_plant["Plant and QKD"]
  node_plant["Nuclear plant process<br/>[proceso.py]"]
  node_reactor["Reactor model<br/>[reactor.py]"]
  node_faults["Fault management<br/>[fault_manager.py]"]
  node_safety["Plant safety control"]
  node_qkdmanager["QKD session manager<br/>[qkd_manager.py]"]
  node_qkd["BB84 QKD session<br/>[qkd.py]"]
  node_plantsecurity["QKD security response"]
end

subgraph group_analysis["Graph Lab"]
  node_graphroutes["Graph Lab routes<br/>[routes.py]"]
  node_parser["Expression parser"]
  node_plotting["Graph plotting<br/>[plotting.py]"]
end

node_user(("User"))

node_user -->|"uses"| node_web
node_main -->|"creates"| node_infra
node_main -->|"starts"| node_engine
node_main -->|"serves"| node_web
node_main -->|"configures"| node_devices
node_web -->|"registers"| node_graphroutes
node_web -->|"authenticates users"| node_users
node_web -->|"records events"| node_audit
node_engine -->|"uses"| node_workload
node_engine -->|"updates"| node_monitor
node_engine -->|"checks security"| node_security
node_engine -->|"updates"| node_plant
node_infra -->|"builds"| node_devices
node_security -->|"checks connections"| node_firewall
node_security -->|"inspects connections"| node_ids
node_plant -->|"updates"| node_reactor
node_plant -->|"updates"| node_faults
node_plant -->|"checks safety"| node_safety
node_plant -->|"runs sessions"| node_qkdmanager
node_qkdmanager -->|"runs session"| node_qkd
node_plant -->|"handles QKD result"| node_plantsecurity
node_graphroutes -->|"parses expressions"| node_parser
node_graphroutes -->|"prepares graphs"| node_plotting
node_engine -->|"models power and cooling"| node_physical
node_engine -->|"simulates traffic"| node_network
node_monitor -.->|"alerts across domains"| node_plant

click node_main "https://github.com/vvvrome/data-center-scada/blob/main/main.py"
click node_web "https://github.com/vvvrome/data-center-scada/blob/main/API/app.py"
click node_infra "https://github.com/vvvrome/data-center-scada/blob/main/infraestructura/datacenter.py"
click node_devices "https://github.com/vvvrome/data-center-scada/blob/main/infraestructura/server.py"
click node_engine "https://github.com/vvvrome/data-center-scada/blob/main/simulacion/motor.py"
click node_workload "https://github.com/vvvrome/data-center-scada/blob/main/simulacion/workload.py"
click node_physical "https://github.com/vvvrome/data-center-scada/blob/main/simulacion/power.py"
click node_network "https://github.com/vvvrome/data-center-scada/blob/main/simulacion/network.py"
click node_monitor "https://github.com/vvvrome/data-center-scada/blob/main/monitorizar/alerts.py"
click node_security "https://github.com/vvvrome/data-center-scada/blob/main/seguridad/security_manager.py"
click node_firewall "https://github.com/vvvrome/data-center-scada/blob/main/seguridad/firewall.py"
click node_ids "https://github.com/vvvrome/data-center-scada/blob/main/seguridad/ids.py"
click node_users "https://github.com/vvvrome/data-center-scada/blob/main/database/users.py"
click node_audit "https://github.com/vvvrome/data-center-scada/blob/main/database/audit.py"
click node_plant "https://github.com/vvvrome/data-center-scada/blob/main/planta/proceso.py"
click node_reactor "https://github.com/vvvrome/data-center-scada/blob/main/planta/reactor.py"
click node_faults "https://github.com/vvvrome/data-center-scada/blob/main/planta/fault_manager.py"
click node_safety "https://github.com/vvvrome/data-center-scada/blob/main/planta/safety_controller.py"
click node_qkdmanager "https://github.com/vvvrome/data-center-scada/blob/main/planta/security/qkd_manager.py"
click node_qkd "https://github.com/vvvrome/data-center-scada/blob/main/planta/security/qkd.py"
click node_plantsecurity "https://github.com/vvvrome/data-center-scada/blob/main/planta/security/security_controller.py"
click node_graphroutes "https://github.com/vvvrome/data-center-scada/blob/main/graph_lab/routes.py"
click node_parser "https://github.com/vvvrome/data-center-scada/blob/main/graph_lab/expression_parser.py"
click node_plotting "https://github.com/vvvrome/data-center-scada/blob/main/graph_lab/plotting.py"

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_main,node_web,node_user toneBlue
class node_infra,node_devices,node_engine,node_workload,node_physical,node_network,node_monitor toneAmber
class node_security,node_firewall,node_ids,node_users,node_audit toneMint
class node_plant,node_reactor,node_faults,node_safety,node_qkdmanager,node_qkd,node_plantsecurity toneRose
class node_graphroutes,node_parser,node_plotting toneIndigo
```

## Components

### Runtime and web

- [Runtime launcher](https://github.com/vvvrome/data-center-scada/blob/main/main.py): `main.py`
- [Flask application](https://github.com/vvvrome/data-center-scada/blob/main/API/app.py): `API/app.py`

### Datacenter simulation

- [Datacenter infrastructure](https://github.com/vvvrome/data-center-scada/blob/main/infraestructura/datacenter.py): `infraestructura/datacenter.py`
- [Server and network devices](https://github.com/vvvrome/data-center-scada/blob/main/infraestructura/server.py): `infraestructura/server.py`
- [Simulation engine](https://github.com/vvvrome/data-center-scada/blob/main/simulacion/motor.py): `simulacion/motor.py`
- [Workload generation](https://github.com/vvvrome/data-center-scada/blob/main/simulacion/workload.py): `simulacion/workload.py`
- [Power and cooling](https://github.com/vvvrome/data-center-scada/blob/main/simulacion/power.py): `simulacion/power.py`
- [Network simulation](https://github.com/vvvrome/data-center-scada/blob/main/simulacion/network.py): `simulacion/network.py`
- [Monitoring and alerts](https://github.com/vvvrome/data-center-scada/blob/main/monitorizar/alerts.py): `monitorizar/alerts.py`

### Security and persistence

- [Security manager](https://github.com/vvvrome/data-center-scada/blob/main/seguridad/security_manager.py): `seguridad/security_manager.py`
- [Firewall policies](https://github.com/vvvrome/data-center-scada/blob/main/seguridad/firewall.py): `seguridad/firewall.py`
- [Intrusion detection](https://github.com/vvvrome/data-center-scada/blob/main/seguridad/ids.py): `seguridad/ids.py`
- [User accounts](https://github.com/vvvrome/data-center-scada/blob/main/database/users.py): `database/users.py`
- [Audit records](https://github.com/vvvrome/data-center-scada/blob/main/database/audit.py): `database/audit.py`

### Plant and QKD

- [Nuclear plant process](https://github.com/vvvrome/data-center-scada/blob/main/planta/proceso.py): `planta/proceso.py`
- [Reactor model](https://github.com/vvvrome/data-center-scada/blob/main/planta/reactor.py): `planta/reactor.py`
- [Fault management](https://github.com/vvvrome/data-center-scada/blob/main/planta/fault_manager.py): `planta/fault_manager.py`
- [Plant safety control](https://github.com/vvvrome/data-center-scada/blob/main/planta/safety_controller.py): `planta/safety_controller.py`
- [QKD session manager](https://github.com/vvvrome/data-center-scada/blob/main/planta/security/qkd_manager.py): `planta/security/qkd_manager.py`
- [BB84 QKD session](https://github.com/vvvrome/data-center-scada/blob/main/planta/security/qkd.py): `planta/security/qkd.py`
- [QKD security response](https://github.com/vvvrome/data-center-scada/blob/main/planta/security/security_controller.py): `planta/security/security_controller.py`

### Graph Lab

- [Graph Lab routes](https://github.com/vvvrome/data-center-scada/blob/main/graph_lab/routes.py): `graph_lab/routes.py`
- [Expression parser](https://github.com/vvvrome/data-center-scada/blob/main/graph_lab/expression_parser.py): `graph_lab/expression_parser.py`
- [Graph plotting](https://github.com/vvvrome/data-center-scada/blob/main/graph_lab/plotting.py): `graph_lab/plotting.py`

### Other components

- **User**

## Connections

- User → Flask application: uses (evidence: `README.md`)
- Runtime launcher → Datacenter infrastructure: creates (evidence: `main.py`)
- Runtime launcher → Simulation engine: starts (evidence: `main.py`)
- Runtime launcher → Flask application: serves (evidence: `main.py`)
- Runtime launcher → Server and network devices: configures (evidence: `main.py`)
- Flask application → Graph Lab routes: registers (evidence: `API/app.py`)
- Flask application → User accounts: authenticates users (evidence: `API/app.py`)
- Flask application → Audit records: records events (evidence: `API/app.py`)
- Simulation engine → Workload generation: uses (evidence: `simulacion/motor.py`)
- Simulation engine → Monitoring and alerts: updates (evidence: `simulacion/motor.py`)
- Simulation engine → Security manager: checks security (evidence: `simulacion/motor.py`)
- Simulation engine → Nuclear plant process: updates (evidence: `simulacion/motor.py`)
- Datacenter infrastructure → Server and network devices: builds (evidence: `infraestructura/datacenter.py`)
- Security manager → Firewall policies: checks connections (evidence: `seguridad/security_manager.py`)
- Security manager → Intrusion detection: inspects connections (evidence: `seguridad/security_manager.py`)
- Nuclear plant process → Reactor model: updates (evidence: `planta/proceso.py`)
- Nuclear plant process → Fault management: updates (evidence: `planta/proceso.py`)
- Nuclear plant process → Plant safety control: checks safety (evidence: `planta/proceso.py`)
- Nuclear plant process → QKD session manager: runs sessions (evidence: `planta/proceso.py`)
- QKD session manager → BB84 QKD session: runs session (evidence: `planta/security/qkd_manager.py`)
- Nuclear plant process → QKD security response: handles QKD result (evidence: `planta/proceso.py`)
- Graph Lab routes → Expression parser: parses expressions (evidence: `graph_lab/routes.py`)
- Graph Lab routes → Graph plotting: prepares graphs (evidence: `graph_lab/routes.py`)
- Simulation engine → Power and cooling: models power and cooling (evidence: `README.md`)
- Simulation engine → Network simulation: simulates traffic (evidence: `README.md`)
- Monitoring and alerts → Nuclear plant process: alerts across domains (evidence: `README.md`)
