Vela by WebKoding

A streaming app for LG and Samsung TVs, built for the remote.

Vela is the source code for the TV side of a streaming service: remote-control navigation, adaptive HLS playback, a live TV guide and continue watching. Point it at your catalogue and ship it under your brand.

This is the real app. Press the remote, or click the screen and use ← ↑ → ↓ Enter Esc.

Everything a viewer does, they do with five keys.

TV apps fail on the details a browser never needed: where focus goes when a row ends, what Back does on each screen, what happens when the stream stalls. Vela has an answer for each of them.

  • ◀ ▶

    Rows that move, not pages

    Left and right slide one row of posters. Up and down keep your column, so focus never jumps somewhere unexpected.

  • OK

    Adaptive HLS playback

    hls.js picks the right quality for the connection, with native HLS as a fallback. Progress bar, buffer indicator and timecodes.

  • Back

    Back always goes somewhere sensible

    Player to detail, detail to home, home exits the app, as both LG and Samsung require.

  • ◀◀ ▶▶

    Seek from the remote

    Arrows and the media keys jump ten seconds. Play/pause works from the dedicated button on webOS and Tizen remotes.

  • focus

    Preview on focus

    Rest on a title and it starts playing, muted, inside its poster. Move on and it stops.

  • resume

    Continue watching

    Playback position is kept on the TV. Titles you left half-way show a progress bar and a Resume button.

  • ⤡

    Picture-in-picture

    Minimise the player and keep browsing while the video plays in the corner.

  • live

    Live TV guide

    Channels with what is on now, how far in it is and what comes next, following the real clock.

  • mood

    “What to watch?”

    Viewers pick or type a mood and get titles from your catalogue with matching genres. Plain rules, no external service.

  • EN TR

    Two languages, more in minutes

    Interface strings live in one file. Catalogue text can carry a version per language.

Your catalogue is one JSON file.

Export it from whatever you run today: a CMS, a spreadsheet, your middleware. Serve it from your own server and you can change rows and titles without releasing a new app.

  • Rows, titles, channels and moods in one documented format
  • Branding in one file: name, colours, language, behaviour switches
  • Your own API instead? Every screen reads through four functions. Replace them; no screen code changes.
// public/catalog.json
{
  "rows": [
    { "title": { "en": "Featured", "tr": "Öne Çıkanlar" },
      "type": "mixed",
      "items": ["sintel", "spring"] }
  ],
  "items": {
    "sintel": {
      "title": "Sintel",
      "year": 2010,
      "genres": ["fantasy", "adventure"],
      "poster": "https://cdn.example.com/sintel.jpg",
      "stream": "https://cdn.example.com/sintel/master.m3u8"
    }
  },
  "channels": [ … ],
  "moods": [ … ]
}

One code base, three places to run it.

Vela is plain JavaScript with no framework, built with Vite to a small static bundle with relative paths: the shape both TV web runtimes expect.

PlatformIn the boxHow you ship it
LG webOSappinfo.json, launcher icons, Back-key handlingnpm run webos:package builds the .ipk with LG's CLI
Samsung Tizentizen/config.xml, media-key registration, exit on Backnpm run tizen:stage, then package and sign with Tizen Studio
Browsers and boxesThe same build, scaled to any screen sizeUpload dist/ to any static host

The demo on this page is the browser build. The .ipk is produced and verified with LG's packaging tool. TV web engines differ between model years, so test on the models you plan to support before you submit to LG or Samsung.

What Vela is not.

Vela is the app your viewers hold the remote for. It reads content from you; it does not run your service. If you need any of these, you bring them.

  • No accountsNo sign-up, login or profiles.
  • No paymentsNo subscriptions or paywall.
  • No DRMPlays clear HLS. Widevine/PlayReady is yours to add.
  • No CMSNo admin panel. You produce the catalogue feed.

Pay once. Keep the source.

Both licences include the full source code, a year of updates and a year of email support.

Standard

For one streaming service of your own.

$199one-time
  • One app, one brand
  • Publish it on LG, Samsung and the web
  • Change anything in the code
  • 1 year of updates and email support
Buy Standard — $199

Agency

For studios that build TV apps for clients.

$499one-time
  • Unlimited apps and brands
  • Client projects included
  • Change anything in the code
  • 1 year of updates and email support
Buy Agency — $499

Checkout by Paddle, our reseller, who handles VAT and invoices. 30-day money-back guarantee. Neither licence lets you resell the source code itself.

Questions

Will it pass LG and Samsung store review?

Vela handles the things reviewers check most often: Back behaviour, exit from the home screen, remote-only navigation and media keys. Store review also looks at your content, your metadata and your behaviour on specific TV models, so plan a test round on real hardware.

Which TV models does it support?

The bundle targets ES2015, which webOS 4+ and Tizen 4+ (roughly 2018 TVs onward) run. Older models may need extra polyfills.

What stream formats does it play?

HLS (.m3u8) through hls.js with native HLS as the fallback, and MP4 where the TV supports it. Encrypted streams need DRM integration, which is not included.

Can I connect it to my existing backend?

Yes. Either produce the catalogue JSON from your backend, or rewrite the four functions in src/api/catalog.js to call your API directly.

Can I use the demo films?

They are open movies by the Blender Foundation under Creative Commons Attribution licences, included so the demo works out of the box. The demo streams are hosted by us for evaluation; replace them with your own content before you publish.

How do I get the code?

Right after payment you get a download link and your licence key by email. Questions go to support@webkoding.com.