• Stars
    star
    101
  • Rank 336,909 (Top 7 %)
  • Language
    JavaScript
  • License
    MIT License
  • Created over 5 years ago
  • Updated almost 3 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

JavaScript Smart TV development framework

ZombieBox

ZombieBox is a JavaScript framework for development of Smart TV and STB applications.

Why ZombieBox?

  • It's cross-platform;
  • It leverages a strongly typed JavaScript by Google Closure Compiler and modern ECMAScript;
  • It provides a set of typical solutions for TV, such as spatial navigation or remote logging;
  • It produces a fast application that has a small size and a minimum of 3rd party code;

Getting started

Init a node.js project:

npm init

Install ZombieBox and some of its components that you will most likely need:

npm install zombiebox
npm install zombiebox-platform-pc zombiebox-extension-cutejs

Either create application config.js manually and start developing or start with a boilerplate:

npx zombiebox init $NAME

# or without npx:
./node_modules/zombiebox/bin/cli.js init

Run the development server:

npx zombiebox run

Platforms

ZombieBox supports a lot of modern Smart TV and STB platforms and also some legacy but high-demand platforms, which allows you to deliver your application to a wide number of devices. Any capable platform can be easily support by extending it.

Platforms are a subtype of ZombieBox Addon. See addons for more information.

List of supported platforms:

Platform Package Version
Desktop browsers zombiebox-platform-pc
Android TV zombiebox-platform-android-tv
Samsung Tizen (2015+) zombiebox-platform-tizen
Samsung Orsay (2012-2014) zombiebox-platform-samsung
LG webOS (2014+) zombiebox-platform-webos
LG NetCast (2012-2014) zombiebox-platform-lg
MAG STB zombiebox-platform-mag
Dune HD zombiebox-platform-dune

Archived platforms:

Platform Package Version
Headless browsers zombiebox-platform-headless
Eltex STB zombiebox-platform-eltex
TVIP STB zombiebox-platform-tvip

Installation of a new platform is easy and nothing more than installation of a new npm package with further saving in the dependencies.

For example, for LG Netcast platform:

npm i zombiebox-platform-lg --save

Then configure the installed platform for building of a distribution package:

// Your config.js

module.exports = () => ({
	platforms: {
		lg: {
			// Some platform-specific configuration, see platform documentation
		}
	}
});

Finally, build a package:

npx zombiebox build lg

Extensions:

Extension is a special npm package that extends default functionality of the framework. To add an extension just install a package via npm and save it in the dependencies.

Extensions are a subtype of ZombieBox Addon. See addons for more information.

List of available extensions:

Description Package Version
CuteJS Template engine zombiebox-extension-cutejs
Set of basic TV-oriented components zombiebox-extension-ui
Dependency Injection zombiebox-extension-dependency-injection
I18n support zombiebox-extension-i18n
Tools for Pixel Perfect testing zombiebox-extension-pixelperfect
Popup with main info about the application zombiebox-extension-about
Lodash library integration zombiebox-extension-lodash
Environment for interactive UI development zombiebox-extension-storybook
Emoji support zombiebox-extension-emoji
Subtitles zombiebox-extension-ui-subtitles

Configuration

Configuration file is a module that exports a function returning configuration object.

By default, the framework will try to find file config.js in the root of the project, but you can set a custom path passing --config to the CLI commands.

See configuration for details.

CLI commands

Use npx to access ZombieBox CLI utility: npx zombiebox or npx zb.

  • npx zb init <name> [root] - generates skeleton of a project interactively
  • npx zb run - starts the development server
  • npx zb build <platforms..> - builds a distribution package
  • npx zb buildCode - generates runtime code
  • npx zb (addScene|addPopup|addWidget) <name> [path] - generates boilerplate code for UI components
  • npx zb generateAliases [filename] - generates alias map for development tools
  • npx zb <platform> <command> - runs a specific command provided by a specific platform

Change log

See the CHANGELOG.md.

Version policy

ZombieBox is not semver compatible. We tried, but this wasn't working well. ZombieBox tries it's best to follow a version policy close to semver that makes sense.

  • Major versions denote major changes in code structure and APIs. It's probably either a brand new framework or requires extensive migration if major version changed.
  • Minor versions mean new features. There might be breaking changes in minor versions, but they likely require minor migrations like changing methods order, signatures or replacing one component with another equivalent. These should be documented in CHANGELOG.md and migratiosn docs.
  • Patch versions do not introduce breaking changes and either fix bugs or add neglectable improvements in non-breaking way.
  • Pre-release versions are meant to contain experimental features that are going to be introduced later and are likely to break compatibility and be generally unstable. These are only pushed to @dev dist-tag.

All ZombieBox components declare their dependencies on each other with peerDependencies field in package.json. Node itself does not enforce this field, but ZombieBox does in its CLI commands.

Behind ZombieBox

ZombieBox was developed and is maintained by Interfaced.

It was created as internal framework for numerous Smart TV and STB applications developed for industry leaders.

License

This library is distributed under MIT license. See LICENSE.

Copyright © 2012-2021, Interfaced. All rights reserved. If you have any questions about license, please write to [email protected].

More Repositories

1

app-launcher

Smart TV application launcher. This project is outdated and not maintained anymore.
JavaScript
19
star
2

cutejs-intellij-plugin

CuteJS plugin for IntelliJ platform.
Kotlin
6
star
3

brightscript-intellij-plugin

BrightScript language support plugin for IntelliJ platform.
Kotlin
6
star
4

zombiebox-demo

Smart TV demo application
JavaScript
5
star
5

zombiebox-platform-lg

Abstraction above smart-tv platform LG NetCast for Zombiebox framework
JavaScript
5
star
6

pew

TypeScript
4
star
7

zombiebox-platform-webos

JavaScript
4
star
8

zombiebox-platform-tizen

JavaScript
2
star
9

zb-minimal-project

Minimal ZombieBox 2.0 project
JavaScript
2
star
10

zombiebox-extension-storybook

ZombieBox extension for interactive UI development
JavaScript
2
star
11

karma-module-resolver-preprocessor

Karma preprocessor to resolve ES6 modules
JavaScript
2
star
12

zombiebox-platform-pc

PC platfrom adapter for ZombieBox Smart TV framework
JavaScript
2
star
13

zombiebox-extension-cutejs

ZombieBox CuteJS template engine extension
JavaScript
2
star
14

zombiebox-platform-android-tv

ZombieBox Android TV platform
JavaScript
2
star
15

zombiebox-platform-vidaa

JavaScript
1
star
16

tomsk-front-end-meetup

Docs from www.meetup.com/tomsk-front-end-meetup/
HTML
1
star
17

zombiebox-platform-mag

JavaScript
1
star
18

postcss-zombiebox-multires-assets

JavaScript
1
star
19

types-zombiebox-platform-webos

TypeScript definitions for zombiebox-platform-webos
1
star
20

eslint-plugin-interfaced

ESLint plugin with essential rules for Closure Compiler environment and JSDoc
JavaScript
1
star
21

zombiebox-platform-samsung

JavaScript
1
star