Emit-Path Topology — click any node to see what flows through that path
flowchart TB subgraph CLIENT["Client-side"] direction TB CB["Browser"]:::cnode CL[("LRS")]:::cnode CB -->|"POST statement"| CL end subgraph SERVER["Server-side"] direction TB SB["Browser"]:::snode SS["Backend"]:::snode SL[("LRS")]:::snode SB -->|"event"| SS -->|"POST statement"| SL end subgraph HYBRID["Hybrid (recommended)"] direction TB HB["Browser"]:::hnode HS["Backend"]:::hnode HL[("LRS")]:::hnode HB -->|"analytics"| HL HB -->|"graded event"| HS HS -->|"POST statement"| HL end click CB call showNodeInfo("CB") click CL call showNodeInfo("CL") click SB call showNodeInfo("SB") click SS call showNodeInfo("SS") click SL call showNodeInfo("SL") click HB call showNodeInfo("HB") click HS call showNodeInfo("HS") click HL call showNodeInfo("HL") classDef cnode fill:#0d9488,stroke:#134e4a,color:#fff,font-size:14px,font-weight:bold classDef snode fill:#4338ca,stroke:#312e81,color:#fff,font-size:14px,font-weight:bold classDef hnode fill:#be185d,stroke:#831843,color:#fff,font-size:14px,font-weight:bold style CLIENT fill:#ecfdf5,stroke:#0d9488,stroke-width:2px,color:#0f766e style SERVER fill:#eef2ff,stroke:#4338ca,stroke-width:2px,color:#3730a3 style HYBRID fill:#fdf2f8,stroke:#be185d,stroke-width:2px,color:#9d174d linkStyle default stroke:#64748b,stroke-width:2px,font-size:12px

Path Details

Click any Browser, Backend, or LRS node in any of the three topologies to see the kinds of statements that flow through it and the security implications.

Client-side — fast, forgeable, analytics
Server-side — slower, authoritative, grades
Hybrid — production default