Skip to main content

Quick Start

Get the app running on your Roku device in minutes

Architecture

Understand how the app is structured and how screens interact

Build & Deploy

Package, sideload, and publish to the Roku Channel Store

Reference

Full reference for tasks, utilities, ad formats, and overlays

What is GlobalTV Roku?

GlobalTV Roku is a Roku SceneGraph channel that delivers live TV streaming to Roku devices. It handles the full user journey — from splash screen and onboarding through authentication, channel browsing, live video playback, and ad delivery — all built in BrightScript and SceneGraph XML. Version: 1.0.6

Key features

Live TV streaming

Streams live channels via M3U/HLS playlists loaded from a configurable backend

On-device authentication

Roku-compliant on-device login with auto-login using persisted credentials

Ad system

Three ad display formats (A, B, C) with polling, impression tracking, and viewport adjustment

Channel grid

Category-aware channel grid with number overlay and channel banner

Deep linking

Supports mediaType=live deep links via both launch and input events

Connectivity monitoring

Periodic connectivity polling with graceful offline/online state transitions

Settings panel

Safe-area settings, server management, channel refresh, and logout

Certification ready

Meets Roku Channel Store certification requirements out of the box

Project structure

manifest              ← Channel metadata and splash config
Makefile              ← Build, sideload, packaging, and certification targets
source/
  main.brs            ← Entry point, roSGScreen setup, deep link handling
  AppConstants.brs    ← Central config: endpoints, timeouts, colors, flags
  AppState.brs        ← Global state initialization (m.global fields)
  utils/              ← Logger, HTTP client, M3U parser, registry, server manager
components/
  MainScene.*         ← Root scene: auth flow, screen coordination
  SplashScreen/       ← Startup splash display
  OnboardingScreen/   ← First-run onboarding
  LoginScreen/        ← User/password capture and Roku on-device auth
  MainScreen/         ← Channel grid and category browsing
  PlayerScreen/       ← Live stream playback with overlay and ad integration
  SettingsScreen/     ← Configuration, server panel, logout
  tasks/              ← Background tasks: auth, playlist, ads, connectivity
  ads/                ← Ad manager and format renderers (A, B, C)
  overlays/           ← Channel banner, number overlay, dialogs
images/               ← Icons, splash screens
out/                  ← Build output (ZIP, PKG, screenshots)

How the app flows

  1. Launchmain.brs creates roSGScreen, instantiates MainScene, and processes any deep links
  2. SplashSplashScreen displays while initial setup runs
  3. Auth checkMainScene checks for saved credentials; shows OnboardingScreen or auto-logins
  4. Main contentMainScreen loads the channel grid and fires AppLaunchComplete
  5. PlaybackPlayerScreen streams the selected live channel with overlay and ad support
GlobalTV Roku requires a compatible backend that provides health, handshake, auth, and playlist endpoints. See AppConstants for endpoint configuration.

Build docs developers (and LLMs) love