flowchart TD
LRS[("LRS
statements + logs")]:::source
Agg["Streaming aggregator
or batched query"]:::agg
OpMet["Operator metrics
throughput / latency / errors"]:::opmet
EdMet["Educator metrics
engagement / completion / attempts"]:::edmet
Graf["Grafana"]:::dash
Obs["Observable Framework"]:::dash
Ops(["Operators"]):::consumer
Teach(["Teachers /
Instructional Designers"]):::consumer
LRS --> Agg
Agg --> OpMet
Agg --> EdMet
OpMet --> Graf
EdMet --> Obs
Graf --> Ops
Obs --> Teach
click LRS call showLayer("LRS")
click Agg call showLayer("Agg")
click OpMet call showLayer("OpMet")
click EdMet call showLayer("EdMet")
click Graf call showLayer("Graf")
click Obs call showLayer("Obs")
click Ops call showLayer("Ops")
click Teach call showLayer("Teach")
classDef source fill:#1e293b,stroke:#0f172a,color:#fff,font-weight:bold
classDef agg fill:#0d9488,stroke:#134e4a,color:#fff
classDef opmet fill:#dc2626,stroke:#7f1d1d,color:#fff
classDef edmet fill:#4338ca,stroke:#312e81,color:#fff
classDef dash fill:#ca8a04,stroke:#854d0e,color:#fff
classDef consumer fill:#16a34a,stroke:#14532d,color:#fff
linkStyle default stroke:#64748b,stroke-width:2px