I've been IP blocked from the Masters. (Spoiler: A simple message would have gotten me to take it down. Would have been less work too haha)
Roku app for watching the Masters.com streams and videos with leaderboards.
- download the latest release at Releases
- side-load the
.zipfile on your Roku device (see Roku's developer guide for instructions) - enjoy
Before you ask, no private channels will be provided. You must side-load the app yourself with the above instructions.
- Node.js (for the BrightScript compiler)
- A Roku device on the same network (set host/password in
.env) - VS Code (optional, project includes a debug config) x
Build the BrightScript package with the provided NPM script:
npm run build(package config: package.json, BrightScript config: bsconfig.json)
The build output is assembled into the staging directory .stage (used by the VS Code debug config: .vscode/launch.json).
- Use the "Debug" launch configuration in VS Code (reads
.envforroku_host/roku_pass) to deploy and debug on-device. - The app entrypoint is src/source/main.bs.
- App manifest: src/manifest
- App entry: src/source/main.bs
UI components and code:
- Scene root: src/components/MastersScene.xml and logic src/components/MastersScene.bs
- API client: src/components/api/MastersApi.bs (
MastersApi.getScores,MastersApi.getLiveStreams,MastersApi.getVideoVault)- Service task: src/components/api/MastersApiService.xml and src/components/api/MastersApiService.bs (
MastersApiService.getScores,MastersApiService.getLiveStreams,MastersApiService.getVideoVault)
- Service task: src/components/api/MastersApiService.xml and src/components/api/MastersApiService.bs (
- Video + leaderboard view: src/components/views/VideoLeaderboard.xml and src/components/views/VideoLeaderboard.bs
- Small leaderboard: src/components/views/SmallLeaderboard.xml and src/components/views/SmallLeaderboard.bs
- Row components:
- Player card: src/components/views/PlayerCard.xml and logic src/components/views/PlayerCard.bs (
PlayerCard.onContent) - Item component for feeds: src/components/items/SimpleItem.xml / src/components/items/SimpleItem.bs
- UI primitives:
Utilities:
- Color blending: src/components/utils/ColorBlender.bs (
ColorBlender.getBlendedColor) - Country code mapping: src/components/utils/CountryCodes.bs (
CountryCodes.getImageCode)
Assets:
- Fonts: src/components/fonts/ and referenced from SimpleLabel
- Images: src/components/images/ (icons, masks, posters, etc.)
MastersApiperforms HTTP requests and returns parsed JSON to callers (src/components/api/MastersApi.bs).MastersApiServiceis a Task that serializes API requests and returns results via aPromiseNode(src/components/api/MastersApiService.bs / src/components/api/PromiseNode.xml).
- The BrightScript source is under
src/. The staging output is written to.stageby the build. - To add UI components, put
.xmland.bsfiles undersrc/components/and reference them from scenes. - Keep network calls in the API classes and use the service task to avoid blocking the main thread.
- If deploying from VS Code fails, confirm
.envhas correctroku_hostandroku_passvalues. - Increase the request timeout in src/components/api/MastersApi.bs if network requests time out.

