Skip to main content
Version: Production

Architecture

GoCast is a Go monolith (tum-live) that serves the web app and API, surrounded by services that capture, transcode and deliver video.

Components​

ComponentRole
tum-liveWeb app, REST v1 (api/), Protobuf/Connect v2 (apiv2/), gRPC endpoint for runners. Owns the database.
frontend/ + web/The Vue SPA (frontend/), embedded into the binary from web/spa/. spaRoutes in web/router.go lists the paths Go answers with the SPA shell.
ingestReceives RTMP streams from lecture hall SMPs and self-streamers.
runnerCaptures streams, transcodes them to HLS and creates VoDs. Replaces the older worker.
vod-serviceAccepts uploaded files and packages them to HLS without re-encoding.
edgeServes HLS and VoD files to viewers, validates stream tokens against tum-live.
MariaDB / MeilisearchPersistence and full-text search. Search is optional locally.

The diagram follows docker-compose.yml, which is for local development only; production deployments split these across hosts (see Deployment).