# komfi31/fakultet architecture

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

- Interactive diagram: https://gitdiagram.com/komfi31/fakultet
- Repository: https://github.com/komfi31/fakultet

## Overview

This repository is a portfolio of engineering projects, not one unified application. Its most substantial executable product is the SCADA simulator: an operator uses a desktop GUI to manage tags and alarms, monitor PLC-simulated inputs, inspect history, and generate reports. The other README-highlighted projects are separate signal-processing, image-analysis, and engineering-design work; their implementation links are limited to documented capabilities because their runtime source was not sampled.

Main entry points: [`SCADA simulator/DataConcentrator/DataConcentratorManager.cs`](https://github.com/komfi31/fakultet/blob/main/SCADA%20simulator/DataConcentrator/DataConcentratorManager.cs) (Data concentrator), [`SCADA simulator/ScadaGUI/MainWindow.xaml.cs`](https://github.com/komfi31/fakultet/blob/main/SCADA%20simulator/ScadaGUI/MainWindow.xaml.cs) (SCADA main window), [`README.md`](https://github.com/komfi31/fakultet/blob/main/README.md) (Portfolio overview), [`SCADA simulator/DataConcentrator/ContextClass.cs`](https://github.com/komfi31/fakultet/blob/main/SCADA%20simulator/DataConcentrator/ContextClass.cs) (Entity Framework context)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_scada_ui["SCADA operator interface"]
  node_main_window["SCADA main window<br/>[MainWindow.xaml.cs]"]
  node_tag_editor["Tag and alarm editor<br/>[AddWindow.xaml.cs]"]
  node_write_dialog["Output value dialog"]
  node_alarm_dialog["Alarm details"]
  node_history_dialog["History viewer"]
  node_reporting["Report generation<br/>[MainWindow.xaml.cs]"]
end

subgraph group_scada_runtime["SCADA runtime"]
  node_manager["Data concentrator"]
  node_plc_facade["PLC access facade<br/>[PLC.cs]"]
  node_plc_sim["PLC simulator"]
  node_scan["Input scanning"]
  node_alarms["Alarm evaluation"]
end

subgraph group_scada_data["SCADA data and state"]
  node_context[("Entity Framework context<br/>[ContextClass.cs]")]
  node_tag_models["Tag types<br/>[Tag.cs]"]
  node_input_models["Input tag models<br/>[AnalogInput.cs]"]
  node_output_models["Output tag models<br/>[AnalogOutput.cs]"]
  node_alarm_model["Alarm records<br/>[Alarm.cs]"]
  node_activated_alarm["Activated alarms<br/>[ActivatedAlarm.cs]"]
  node_history_records["Analog history records"]
  node_logger["System logger<br/>[SystemLogger.cs]"]
end

subgraph group_portfolio_projects["Other engineering projects"]
  node_sim_project["Conveyor and weighing automation"]
  node_signal_project["Audio signal processing"]
  node_image_project["Blood vessel video analysis"]
  node_image_app["Image analysis application"]
  node_design_project["Engineering design documents"]
  node_wiring_project["Electrical wiring design"]
  node_portfolio_readme["Portfolio overview<br/>[README.md]"]
end

node_operator(("SCADA operator"))

node_operator -->|"operates"| node_main_window
node_main_window -->|"starts scanning"| node_manager
node_main_window -->|"opens editor"| node_tag_editor
node_main_window -->|"opens output dialog"| node_write_dialog
node_main_window -->|"opens details"| node_alarm_dialog
node_main_window -->|"opens history"| node_history_dialog
node_main_window -->|"generates reports"| node_reporting
node_tag_editor -->|"adds or updates"| node_manager
node_write_dialog -->|"writes output"| node_manager
node_alarm_dialog -->|"loads alarm data"| node_manager
node_history_dialog -->|"loads history"| node_manager
node_manager -->|"reads and writes I/O"| node_plc_facade
node_plc_facade -->|"delegates PLC access"| node_plc_sim
node_manager -->|"persists records"| node_context
node_manager -->|"runs scan loop"| node_scan
node_scan -->|"reads input values"| node_plc_facade
node_scan -->|"checks thresholds"| node_alarms
node_alarms -->|"stores activations"| node_context
node_manager -->|"logs operations"| node_logger
node_context -->|"maps tags"| node_tag_models
node_context -->|"maps alarms"| node_alarm_model
node_manager -->|"manages tag types"| node_tag_models
node_manager -->|"scans inputs"| node_input_models
node_manager -->|"writes outputs"| node_output_models
node_manager -->|"evaluates definitions"| node_alarm_model
node_manager -->|"creates activations"| node_activated_alarm
node_manager -->|"records analog values"| node_history_records
node_portfolio_readme -->|"documents analysis"| node_signal_project
node_portfolio_readme -->|"documents analysis"| node_image_project
node_portfolio_readme -->|"documents design"| node_design_project
node_portfolio_readme -->|"documents wiring"| node_wiring_project
node_image_app -.->|"implements video analysis"| node_image_project
node_portfolio_readme -.->|"mentions planned work"| node_sim_project

click node_main_window "https://github.com/komfi31/fakultet/blob/main/SCADA%20simulator/ScadaGUI/MainWindow.xaml.cs"
click node_tag_editor "https://github.com/komfi31/fakultet/blob/main/SCADA%20simulator/ScadaGUI/AddWindow.xaml.cs"
click node_write_dialog "https://github.com/komfi31/fakultet/blob/main/SCADA%20simulator/ScadaGUI/WriteValueWindow.xaml.cs"
click node_alarm_dialog "https://github.com/komfi31/fakultet/blob/main/SCADA%20simulator/ScadaGUI/AlarmDetailsWindow.xaml.cs"
click node_history_dialog "https://github.com/komfi31/fakultet/blob/main/SCADA%20simulator/ScadaGUI/HistoryWindow.xaml.cs"
click node_manager "https://github.com/komfi31/fakultet/blob/main/SCADA%20simulator/DataConcentrator/DataConcentratorManager.cs"
click node_plc_facade "https://github.com/komfi31/fakultet/blob/main/SCADA%20simulator/DataConcentrator/PLC.cs"
click node_plc_sim "https://github.com/komfi31/fakultet/blob/main/SCADA%20simulator/PLCSimulator/PLCSimulatorManager.cs"
click node_scan "https://github.com/komfi31/fakultet/blob/main/SCADA%20simulator/DataConcentrator/DataConcentratorManager.cs"
click node_alarms "https://github.com/komfi31/fakultet/blob/main/SCADA%20simulator/DataConcentrator/DataConcentratorManager.cs"
click node_reporting "https://github.com/komfi31/fakultet/blob/main/SCADA%20simulator/ScadaGUI/MainWindow.xaml.cs"
click node_context "https://github.com/komfi31/fakultet/blob/main/SCADA%20simulator/DataConcentrator/ContextClass.cs"
click node_tag_models "https://github.com/komfi31/fakultet/blob/main/SCADA%20simulator/DataConcentrator/Model/Tag.cs"
click node_input_models "https://github.com/komfi31/fakultet/blob/main/SCADA%20simulator/DataConcentrator/Model/AnalogInput.cs"
click node_output_models "https://github.com/komfi31/fakultet/blob/main/SCADA%20simulator/DataConcentrator/Model/AnalogOutput.cs"
click node_alarm_model "https://github.com/komfi31/fakultet/blob/main/SCADA%20simulator/DataConcentrator/Model/Alarm.cs"
click node_activated_alarm "https://github.com/komfi31/fakultet/blob/main/SCADA%20simulator/DataConcentrator/Model/ActivatedAlarm.cs"
click node_history_records "https://github.com/komfi31/fakultet/blob/main/SCADA%20simulator/DataConcentrator/Model/AnalogValueRecord.cs"
click node_logger "https://github.com/komfi31/fakultet/blob/main/SCADA%20simulator/DataConcentrator/SystemLogger.cs"
click node_sim_project "https://github.com/komfi31/fakultet/tree/main/Automatizacija%20transportne%20trake%20sa%20stanicom%20za%20vaganje%20proizvoda"
click node_signal_project "https://github.com/komfi31/fakultet/blob/main/DSP/Obrada%20audio%20signala.ipynb"
click node_image_project "https://github.com/komfi31/fakultet/blob/main/Obrada%20slike/Skripte/obradi_video_krvnog_suda.m"
click node_image_app "https://github.com/komfi31/fakultet/blob/main/Obrada%20slike/Aplikacija/AnalizaKrvnogSuda.mlapp"
click node_design_project "https://github.com/komfi31/fakultet/tree/main/Centrifugalni%20filter%20za%20ulje"
click node_wiring_project "https://github.com/komfi31/fakultet/tree/main/O%C5%BEi%C4%8Denje%20instalacije%20za%20centrifugalni%20filter%20za%20ulje%20kroz%20EPlan"
click node_portfolio_readme "https://github.com/komfi31/fakultet/blob/main/README.md"

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_window,node_tag_editor,node_write_dialog,node_alarm_dialog,node_history_dialog,node_reporting toneBlue
class node_manager,node_plc_facade,node_plc_sim,node_scan,node_alarms toneAmber
class node_context,node_tag_models,node_input_models,node_output_models,node_alarm_model,node_activated_alarm,node_history_records,node_logger toneMint
class node_sim_project,node_signal_project,node_image_project,node_image_app,node_design_project,node_wiring_project,node_portfolio_readme toneRose
class node_operator toneIndigo
```

## Components

### SCADA operator interface

- [SCADA main window](https://github.com/komfi31/fakultet/blob/main/SCADA%20simulator/ScadaGUI/MainWindow.xaml.cs): `SCADA simulator/ScadaGUI/MainWindow.xaml.cs`
- [Tag and alarm editor](https://github.com/komfi31/fakultet/blob/main/SCADA%20simulator/ScadaGUI/AddWindow.xaml.cs): `SCADA simulator/ScadaGUI/AddWindow.xaml.cs`
- [Output value dialog](https://github.com/komfi31/fakultet/blob/main/SCADA%20simulator/ScadaGUI/WriteValueWindow.xaml.cs): `SCADA simulator/ScadaGUI/WriteValueWindow.xaml.cs`
- [Alarm details](https://github.com/komfi31/fakultet/blob/main/SCADA%20simulator/ScadaGUI/AlarmDetailsWindow.xaml.cs): `SCADA simulator/ScadaGUI/AlarmDetailsWindow.xaml.cs`
- [History viewer](https://github.com/komfi31/fakultet/blob/main/SCADA%20simulator/ScadaGUI/HistoryWindow.xaml.cs): `SCADA simulator/ScadaGUI/HistoryWindow.xaml.cs`
- [Report generation](https://github.com/komfi31/fakultet/blob/main/SCADA%20simulator/ScadaGUI/MainWindow.xaml.cs): `SCADA simulator/ScadaGUI/MainWindow.xaml.cs`

### SCADA runtime

- [Data concentrator](https://github.com/komfi31/fakultet/blob/main/SCADA%20simulator/DataConcentrator/DataConcentratorManager.cs): `SCADA simulator/DataConcentrator/DataConcentratorManager.cs`
- [PLC access facade](https://github.com/komfi31/fakultet/blob/main/SCADA%20simulator/DataConcentrator/PLC.cs): `SCADA simulator/DataConcentrator/PLC.cs`
- [PLC simulator](https://github.com/komfi31/fakultet/blob/main/SCADA%20simulator/PLCSimulator/PLCSimulatorManager.cs): `SCADA simulator/PLCSimulator/PLCSimulatorManager.cs`
- [Input scanning](https://github.com/komfi31/fakultet/blob/main/SCADA%20simulator/DataConcentrator/DataConcentratorManager.cs): `SCADA simulator/DataConcentrator/DataConcentratorManager.cs`
- [Alarm evaluation](https://github.com/komfi31/fakultet/blob/main/SCADA%20simulator/DataConcentrator/DataConcentratorManager.cs): `SCADA simulator/DataConcentrator/DataConcentratorManager.cs`

### SCADA data and state

- [Entity Framework context](https://github.com/komfi31/fakultet/blob/main/SCADA%20simulator/DataConcentrator/ContextClass.cs): `SCADA simulator/DataConcentrator/ContextClass.cs`
- [Tag types](https://github.com/komfi31/fakultet/blob/main/SCADA%20simulator/DataConcentrator/Model/Tag.cs): `SCADA simulator/DataConcentrator/Model/Tag.cs`
- [Input tag models](https://github.com/komfi31/fakultet/blob/main/SCADA%20simulator/DataConcentrator/Model/AnalogInput.cs): `SCADA simulator/DataConcentrator/Model/AnalogInput.cs`
- [Output tag models](https://github.com/komfi31/fakultet/blob/main/SCADA%20simulator/DataConcentrator/Model/AnalogOutput.cs): `SCADA simulator/DataConcentrator/Model/AnalogOutput.cs`
- [Alarm records](https://github.com/komfi31/fakultet/blob/main/SCADA%20simulator/DataConcentrator/Model/Alarm.cs): `SCADA simulator/DataConcentrator/Model/Alarm.cs`
- [Activated alarms](https://github.com/komfi31/fakultet/blob/main/SCADA%20simulator/DataConcentrator/Model/ActivatedAlarm.cs): `SCADA simulator/DataConcentrator/Model/ActivatedAlarm.cs`
- [Analog history records](https://github.com/komfi31/fakultet/blob/main/SCADA%20simulator/DataConcentrator/Model/AnalogValueRecord.cs): `SCADA simulator/DataConcentrator/Model/AnalogValueRecord.cs`
- [System logger](https://github.com/komfi31/fakultet/blob/main/SCADA%20simulator/DataConcentrator/SystemLogger.cs): `SCADA simulator/DataConcentrator/SystemLogger.cs`

### Other engineering projects

- [Conveyor and weighing automation](https://github.com/komfi31/fakultet/tree/main/Automatizacija%20transportne%20trake%20sa%20stanicom%20za%20vaganje%20proizvoda): `Automatizacija transportne trake sa stanicom za vaganje proizvoda`
- [Audio signal processing](https://github.com/komfi31/fakultet/blob/main/DSP/Obrada%20audio%20signala.ipynb): `DSP/Obrada audio signala.ipynb`
- [Blood vessel video analysis](https://github.com/komfi31/fakultet/blob/main/Obrada%20slike/Skripte/obradi_video_krvnog_suda.m): `Obrada slike/Skripte/obradi_video_krvnog_suda.m`
- [Image analysis application](https://github.com/komfi31/fakultet/blob/main/Obrada%20slike/Aplikacija/AnalizaKrvnogSuda.mlapp): `Obrada slike/Aplikacija/AnalizaKrvnogSuda.mlapp`
- [Engineering design documents](https://github.com/komfi31/fakultet/tree/main/Centrifugalni%20filter%20za%20ulje): `Centrifugalni filter za ulje`
- [Electrical wiring design](https://github.com/komfi31/fakultet/tree/main/O%C5%BEi%C4%8Denje%20instalacije%20za%20centrifugalni%20filter%20za%20ulje%20kroz%20EPlan): `Ožičenje instalacije za centrifugalni filter za ulje kroz EPlan`
- [Portfolio overview](https://github.com/komfi31/fakultet/blob/main/README.md): `README.md`

### Other components

- **SCADA operator**

## Connections

- SCADA operator → SCADA main window: operates (evidence: `SCADA simulator/ScadaGUI/MainWindow.xaml.cs`)
- SCADA main window → Data concentrator: starts scanning (evidence: `SCADA simulator/ScadaGUI/MainWindow.xaml.cs`)
- SCADA main window → Tag and alarm editor: opens editor (evidence: `SCADA simulator/ScadaGUI/MainWindow.xaml.cs`)
- SCADA main window → Output value dialog: opens output dialog (evidence: `SCADA simulator/ScadaGUI/MainWindow.xaml.cs`)
- SCADA main window → Alarm details: opens details (evidence: `SCADA simulator/ScadaGUI/MainWindow.xaml.cs`)
- SCADA main window → History viewer: opens history (evidence: `SCADA simulator/ScadaGUI/MainWindow.xaml.cs`)
- SCADA main window → Report generation: generates reports (evidence: `SCADA simulator/ScadaGUI/MainWindow.xaml.cs`)
- Tag and alarm editor → Data concentrator: adds or updates (evidence: `SCADA simulator/ScadaGUI/AddWindow.xaml.cs`)
- Output value dialog → Data concentrator: writes output (evidence: `SCADA simulator/ScadaGUI/WriteValueWindow.xaml.cs`)
- Alarm details → Data concentrator: loads alarm data (evidence: `SCADA simulator/ScadaGUI/AlarmDetailsWindow.xaml.cs`)
- History viewer → Data concentrator: loads history (evidence: `SCADA simulator/ScadaGUI/HistoryWindow.xaml.cs`)
- Data concentrator → PLC access facade: reads and writes I/O (evidence: `SCADA simulator/DataConcentrator/DataConcentratorManager.cs`)
- PLC access facade → PLC simulator: delegates PLC access (evidence: `SCADA simulator/DataConcentrator/PLC.cs`)
- Data concentrator → Entity Framework context: persists records (evidence: `SCADA simulator/DataConcentrator/DataConcentratorManager.cs`)
- Data concentrator → Input scanning: runs scan loop (evidence: `SCADA simulator/DataConcentrator/DataConcentratorManager.cs`)
- Input scanning → PLC access facade: reads input values (evidence: `SCADA simulator/DataConcentrator/DataConcentratorManager.cs`)
- Input scanning → Alarm evaluation: checks thresholds (evidence: `SCADA simulator/DataConcentrator/DataConcentratorManager.cs`)
- Alarm evaluation → Entity Framework context: stores activations (evidence: `SCADA simulator/DataConcentrator/DataConcentratorManager.cs`)
- Data concentrator → System logger: logs operations (evidence: `SCADA simulator/DataConcentrator/DataConcentratorManager.cs`)
- Entity Framework context → Tag types: maps tags (evidence: `SCADA simulator/DataConcentrator/ContextClass.cs`)
- Entity Framework context → Alarm records: maps alarms (evidence: `SCADA simulator/DataConcentrator/ContextClass.cs`)
- Data concentrator → Tag types: manages tag types (evidence: `SCADA simulator/DataConcentrator/DataConcentratorManager.cs`)
- Data concentrator → Input tag models: scans inputs (evidence: `SCADA simulator/DataConcentrator/DataConcentratorManager.cs`)
- Data concentrator → Output tag models: writes outputs (evidence: `SCADA simulator/DataConcentrator/DataConcentratorManager.cs`)
- Data concentrator → Alarm records: evaluates definitions (evidence: `SCADA simulator/DataConcentrator/DataConcentratorManager.cs`)
- Data concentrator → Activated alarms: creates activations (evidence: `SCADA simulator/DataConcentrator/DataConcentratorManager.cs`)
- Data concentrator → Analog history records: records analog values (evidence: `SCADA simulator/DataConcentrator/DataConcentratorManager.cs`)
- Portfolio overview → Audio signal processing: documents analysis (evidence: `README.md`)
- Portfolio overview → Blood vessel video analysis: documents analysis (evidence: `README.md`)
- Portfolio overview → Engineering design documents: documents design (evidence: `README.md`)
- Portfolio overview → Electrical wiring design: documents wiring (evidence: `README.md`)
- Image analysis application → Blood vessel video analysis: implements video analysis
- Portfolio overview → Conveyor and weighing automation: mentions planned work (evidence: `README.md`)
