Back to projects

Sportbak

Real-Time Match Streaming & Replay Platform

Distributed SystemsReal-Time SystemsWebRTCGStreamerWebSocketsNode.jsLive StreamingSports Tech
Sportbak's Smart Scorer

Indoor soccer facilities needed more than a scoreboard—they needed a way to run live matches with professional overlays, instant replays, and mobile viewing, without the cost or complexity of broadcast infrastructure.

I designed and built Sportbak, a distributed system that captures, enriches, and streams live matches while synchronizing scoring events across all devices in real time.


Core Capabilities

  • Live video pipeline with real-time overlay rendering (score, teams, match clock)
  • Event-driven match control (goals, periods, pauses) synchronized across all clients
  • WebRTC-based streaming playable directly in mobile browsers
  • Automatic replay generation triggered by in-game events
  • Unified app for both scoring operators and viewers

Key Results

  • Sub-second synchronization between scorer interface, video stream, and viewer devices
  • Fully live production pipeline—no post-processing required for overlays or replays
  • Resilient system design: individual services fail and recover without interrupting matches
  • Delivered broadcast-like features on commodity hardware (IP cameras + embedded devices)

Architecture Overview

Sportbak is a polyglot, distributed system composed of loosely coupled services:

  • Video Layer (Python + GStreamer)
    Hardware-accelerated encoding (VAAPI) with a custom overlay compositor rendering match state directly into a 1080p video stream in real time
  • Session Orchestration (Node.js)
    Manages match lifecycle: periods, goals (with timestamps), timer control, and event propagation
  • Broadcast Layer (Node.js + Redis + MongoDB)
    Distributes state and metadata across device channels using WebSockets / Socket.io
  • Client Applications (Angular + Ionic + Capacitor)
    • Scorer interface with real-time controls and keyboard bindings
    • TV/mobile viewer with live playback via WebRTC

Technical Highlights

  • Designed a cross-service WebSocket protocol linking Python and Node.js systems
  • Implemented real-time overlay updates via GStreamer property bindings
  • Built WebRTC signaling pipeline (SDP/ICE over WebSocket) for low-latency playback
  • Enabled automatic clip extraction at goal timestamps without manual editing
  • Ensured fault isolation across video capture, orchestration, and broadcast services

My Role

Owned the system end-to-end:

  • Designed architecture and service boundaries
  • Built the video pipeline and streaming stack
  • Implemented real-time communication between services
  • Developed both operator and viewer applications