- It's cross-platform;
- 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:
Install ZombieBox and some of its components that you will most likely need:
npm install zombieboxnpm install zombiebox-platform-pc zombiebox-extension-cutejs
config.js and start developing or use 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:
|Samsung Tizen (2015+)||
|Samsung Orsay (2012-2014)||
|LG webOS (2014+)||
|LG NetCast (2012-2014)||
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.jsmoduleplatforms: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:
|CuteJS Template engine||
|Set of basic TV-oriented components||
|Tools for Pixel Perfect testing||
|Popup with main info about the application||
|Lodash library integration||
|Environment for interactive UI development||
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 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
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
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-2019, Interfaced. All rights reserved. If you have any questions about license, please write to firstname.lastname@example.org.