# alexochoki/real-time-streaming-with-fabric architecture

> Architecture diagram of the GitHub repository alexochoki/real-time-streaming-with-fabric, 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/alexochoki/real-time-streaming-with-fabric
- Repository: https://github.com/alexochoki/real-time-streaming-with-fabric

## Overview

The repository combines a minute-level tablet-press telemetry simulator with a manufacturing-operations dashboard. The documented workflow runs from simulated machine signals through IoT ingestion, stream processing, time-series analytics, and dashboard monitoring; the sampled Python source supports the simulator’s payload and IoT send, while the README describes the cloud services. The React dashboard renders operational KPIs and downtime, failure, MTTR, MTBF, and state views. Its sampled state chart uses embedded example data, so a live connection from the dashboard to the documented analytics services is not evidenced here.

Main entry points: [`report/themes/src/App.tsx`](https://github.com/alexochoki/real-time-streaming-with-fabric/blob/main/report/themes/src/App.tsx) (Dashboard app), [`factory_data_simulator/dawa_stream.py`](https://github.com/alexochoki/real-time-streaming-with-fabric/blob/main/factory_data_simulator/dawa_stream.py) (Telemetry simulator), [`factory_data_simulator/config.py`](https://github.com/alexochoki/real-time-streaming-with-fabric/blob/main/factory_data_simulator/config.py) (Simulator settings), [`report/themes/src/components/KPIStrip.tsx`](https://github.com/alexochoki/real-time-streaming-with-fabric/blob/main/report/themes/src/components/KPIStrip.tsx) (KPI strip)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_simulation["Telemetry Simulation"]
  node_simulator["Telemetry simulator<br/>[dawa_stream.py]"]
  node_settings["Simulator settings<br/>[config.py]"]
end

subgraph group_streaming["Cloud Streaming"]
  node_iot{{"Azure IoT Hub"}}
  node_eventstream{{"Fabric Eventstream"}}
end

subgraph group_analytics["Operational Analytics"]
  node_kql[("Fabric KQL database")]
  node_powerbi["Power BI"]
  node_history[("Lakehouse or Warehouse")]
  node_alerts["Fabric alerts"]
end

subgraph group_dashboard["Dashboard"]
  node_app["Dashboard app<br/>[App.tsx]"]
  node_kpis["KPI strip<br/>[KPIStrip.tsx]"]
  node_downtime["Downtime by reason"]
  node_failures["Failures by hour"]
  node_mttr["MTTR by hour<br/>[MTTRByHour.tsx]"]
  node_mtbf["MTBF by hour<br/>[MTBFByHour.tsx]"]
  node_totaldowntime["Total downtime"]
  node_states["State distribution"]
end

node_machine(("Factory machines"))
node_operator(("Production engineer"))

node_machine -->|"simulates signals"| node_simulator
node_settings -->|"configures"| node_simulator
node_simulator -->|"sends telemetry"| node_iot
node_iot -->|"routes events"| node_eventstream
node_eventstream -->|"processes and routes"| node_kql
node_kql -->|"serves live queries"| node_powerbi
node_eventstream -.->|"stores historical data"| node_history
node_eventstream -.->|"triggers alerts"| node_alerts
node_operator -->|"views operations"| node_app
node_app -->|"renders"| node_kpis
node_app -->|"renders"| node_downtime
node_app -->|"renders"| node_failures
node_app -->|"renders"| node_mttr
node_app -->|"renders"| node_mtbf
node_app -->|"renders"| node_totaldowntime
node_app -->|"renders"| node_states

click node_simulator "https://github.com/alexochoki/real-time-streaming-with-fabric/blob/main/factory_data_simulator/dawa_stream.py"
click node_settings "https://github.com/alexochoki/real-time-streaming-with-fabric/blob/main/factory_data_simulator/config.py"
click node_app "https://github.com/alexochoki/real-time-streaming-with-fabric/blob/main/report/themes/src/App.tsx"
click node_kpis "https://github.com/alexochoki/real-time-streaming-with-fabric/blob/main/report/themes/src/components/KPIStrip.tsx"
click node_downtime "https://github.com/alexochoki/real-time-streaming-with-fabric/blob/main/report/themes/src/components/DowntimeByReason.tsx"
click node_failures "https://github.com/alexochoki/real-time-streaming-with-fabric/blob/main/report/themes/src/components/FailureCountByHour.tsx"
click node_mttr "https://github.com/alexochoki/real-time-streaming-with-fabric/blob/main/report/themes/src/components/MTTRByHour.tsx"
click node_mtbf "https://github.com/alexochoki/real-time-streaming-with-fabric/blob/main/report/themes/src/components/MTBFByHour.tsx"
click node_totaldowntime "https://github.com/alexochoki/real-time-streaming-with-fabric/blob/main/report/themes/src/components/TotalDowntimeByHour.tsx"
click node_states "https://github.com/alexochoki/real-time-streaming-with-fabric/blob/main/report/themes/src/components/StateDistribution.tsx"

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_simulator,node_settings toneBlue
class node_iot,node_eventstream toneAmber
class node_kql,node_powerbi,node_history,node_alerts toneMint
class node_app,node_kpis,node_downtime,node_failures,node_mttr,node_mtbf,node_totaldowntime,node_states toneRose
class node_machine,node_operator toneIndigo
```

## Components

### Telemetry Simulation

- [Telemetry simulator](https://github.com/alexochoki/real-time-streaming-with-fabric/blob/main/factory_data_simulator/dawa_stream.py): `factory_data_simulator/dawa_stream.py`
- [Simulator settings](https://github.com/alexochoki/real-time-streaming-with-fabric/blob/main/factory_data_simulator/config.py): `factory_data_simulator/config.py`

### Cloud Streaming

- **Azure IoT Hub**
- **Fabric Eventstream**

### Operational Analytics

- **Fabric KQL database**
- **Power BI**
- **Lakehouse or Warehouse**
- **Fabric alerts**

### Dashboard

- [Dashboard app](https://github.com/alexochoki/real-time-streaming-with-fabric/blob/main/report/themes/src/App.tsx): `report/themes/src/App.tsx`
- [KPI strip](https://github.com/alexochoki/real-time-streaming-with-fabric/blob/main/report/themes/src/components/KPIStrip.tsx): `report/themes/src/components/KPIStrip.tsx`
- [Downtime by reason](https://github.com/alexochoki/real-time-streaming-with-fabric/blob/main/report/themes/src/components/DowntimeByReason.tsx): `report/themes/src/components/DowntimeByReason.tsx`
- [Failures by hour](https://github.com/alexochoki/real-time-streaming-with-fabric/blob/main/report/themes/src/components/FailureCountByHour.tsx): `report/themes/src/components/FailureCountByHour.tsx`
- [MTTR by hour](https://github.com/alexochoki/real-time-streaming-with-fabric/blob/main/report/themes/src/components/MTTRByHour.tsx): `report/themes/src/components/MTTRByHour.tsx`
- [MTBF by hour](https://github.com/alexochoki/real-time-streaming-with-fabric/blob/main/report/themes/src/components/MTBFByHour.tsx): `report/themes/src/components/MTBFByHour.tsx`
- [Total downtime](https://github.com/alexochoki/real-time-streaming-with-fabric/blob/main/report/themes/src/components/TotalDowntimeByHour.tsx): `report/themes/src/components/TotalDowntimeByHour.tsx`
- [State distribution](https://github.com/alexochoki/real-time-streaming-with-fabric/blob/main/report/themes/src/components/StateDistribution.tsx): `report/themes/src/components/StateDistribution.tsx`

### Other components

- **Factory machines**
- **Production engineer**

## Connections

- Factory machines → Telemetry simulator: simulates signals
- Simulator settings → Telemetry simulator: configures
- Telemetry simulator → Azure IoT Hub: sends telemetry
- Azure IoT Hub → Fabric Eventstream: routes events
- Fabric Eventstream → Fabric KQL database: processes and routes
- Fabric KQL database → Power BI: serves live queries
- Fabric Eventstream → Lakehouse or Warehouse: stores historical data
- Fabric Eventstream → Fabric alerts: triggers alerts
- Production engineer → Dashboard app: views operations
- Dashboard app → KPI strip: renders
- Dashboard app → Downtime by reason: renders
- Dashboard app → Failures by hour: renders
- Dashboard app → MTTR by hour: renders
- Dashboard app → MTBF by hour: renders
- Dashboard app → Total downtime: renders
- Dashboard app → State distribution: renders
