Unleash awesomeness. Private packages, team management tools, and powerful integrations. Get started with npm Orgs »


1.0.0-beta5 • Public • Published


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 3th party code;

Getting started

Install ZombieBox CLI tool:

npm i zombiebox-cli -g

Create an empty project:

zb init /path/to/empty/dir

Install the dependencies:

npm install

Run the development server:

zb run


ZombieBox supports a lot of modern Smart TV and STB platforms and also bunch of legacy but high-demand platforms, which let to deliver your application to a maximum number of devices.

List of supported platforms:

Platform Package Version
Browsers zombiebox-platform-pc
Headless browsers zombiebox-platform-headless
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
Dune STB zombiebox-platform-dune
Eltex STB zombiebox-platform-eltex
TVIP STB zombiebox-platform-tvip
MAG STB zombiebox-platform-mag
MAG 250 STB zombiebox-platform-mag250

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, you have decided to install Samsung Orsay platform:

npm i zombiebox-platform-samsung --save

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

// Your config.js
module.exports = () => ({
    samsung: {
        // Some platform-specific configuration

Finally, build a package:

zb build samsung


Extension is a special npm package that extends default functionality of the framework. For usage just install a package via npm and save it in the dependencies.

List of available extensions:

Description Package Version
Set of basic TV-oriented components zombiebox-extension-ui
Set of grid components zombiebox-extension-grid
I18n support zombiebox-extension-i18n
Tools for Pixel Perfect testing zombiebox-extension-pixelperfect
Popup with main info about an application zombiebox-extension-about
Lodash library integration zombiebox-extension-lodash
Environment for interactive UI development zombiebox-extension-storybook
Emojis support zombiebox-extension-emoji


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.

Configuration object:

  • appNamespace (required) - namespace of the app;

  • skipVersionsCheck (optional, false by default) - whether the peer dependencies checking should be skipped;

  • codeSources (optional) - object of alias: file path pairs;

  • templateLocations (optional) - array of paths to use for templates locating, alongside with default path templates;

  • define (optional) - object of name: value constants. Declared constant console.ENABLE_CONSOLE (true by default);

  • build.include (optional) - object of target path: source path pairs to copy to the build, alongside with files from web directory;

  • build.exclude (optional) - array of relative to web directory/file paths that should not be copied to the build;

  • scripts.include (optional) - array of JS file paths;

  • scripts.exclude (optional) - array of JS file paths to exclude;

  • scripts.external (optional) - array of strings to use as src in <script src="...">;

  • compilation.include (optional) - array of file paths to compile;

  • compilation.exclude (optional) - array of file paths to exclude from compilation;

  • compilation.externs (optional) - array of file paths to use as compilation externs;

  • compilation.flags (optional) - object of name: value pairs to pass as compiler flags;

  • compilation.level (optional, ADVANCED_OPTIMIZATIONS by default) - one of Closure Compiler Compilation Levels;

  • web.port (optional, 1337 by default) - development server port;

  • web.proxy (optional) - object of alias: url pairs for development server proxying;

  • web.enableRawProxy (optional, false by default) - development server proxying through /proxy/?url=%url%;

  • styles.include (optional) - array of CSS file paths;

  • styles.exclude (optional) - array of CSS file paths to exclude;

  • styles.external (optional) - array of strings to use as href in <link rel="stylesheet" href="...">;

  • styles.order (optional) - array of string/regexps patterns to resolve CSS files order. Pattern index represents the priority;

  • styles.inlineResources (optional, true by default) - use or not base64 encoding for images in CSS files;

  • styles.postcss.cssnextOpitons (optional, {browsers: 'for last 100 versions'} by default) - options for transformation by cssnext;

  • styles.postcss.plugins (optional) - array of PostCSS plugins;

Also you can pass a value for a specific key as JSON through CLI:

zb build pc --config.compilation.level '"SIMPLE_OPTIMIZATIONS"'

CLI commands

  • zb init <path> - generates skeleton of a project interactively;
  • zb run [--config <path>]... - starts the development server;
  • zb build <platforms> [--config <path>]... - builds a distribution package;
  • zb buildCode [--config <path>]... - generates code that located in .code-cache;
  • zb (addScene|addPopup|addWidget) <name> [--base=<namespace>] - generates boilerplate code for UI components;
  • zb <platform> <command> - runs a specific command provided by a specific platform;





See the Changelog.


Copyright (c) 2011-2018, Interfaced. All rights reserved.
If you have any questions about license, please write to licensing@zombiebox.tv.

This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, AND NON-INFRINGEMENT OF THIRD-PARTY INTELLECTUAL PROPERTY RIGHTS.


npm i zombiebox

Downloadsweekly downloads








last publish


  • avatar
  • avatar
  • avatar
  • avatar
Report a vulnerability