ZombieBox is a JavaScript framework for development of Smart TV and STB applications.
- 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;
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
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
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 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.
Use npx to access ZombieBox CLI utility: npx zombiebox
or npx zb
.
npx zb init <name> [root]
- generates skeleton of a project interactivelynpx zb run
- starts the development servernpx zb build <platforms..>
- builds a distribution packagenpx zb buildCode
- generates runtime codenpx zb (addScene|addPopup|addWidget) <name> [path]
- generates boilerplate code for UI componentsnpx zb generateAliases [filename]
- generates alias map for development toolsnpx zb <platform> <command>
- runs a specific command provided by a specific platform
See the CHANGELOG.md.
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.
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.
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].