Overview

Introduction to Dana

Dana is a UI framework for building performant, high-quality TV apps on all available platforms using only JavaScript.

Why Dana?

If you ever tried to develop the same TV application on several platforms, it is most likely that you encountered the following challenges:

  • Being compatible with several TV devices and middlewares is complex !
    The TV ecosystem is overly complex with boxes, smart TVs, Chromecast and so on. All those devices run on different hardware and OS with different players, stores & languages. You cannot do the same application when creating a custom launcher on Android and a third-party application. All platform players requires different integrations.

  • Offering the best performance on each target requires native application !
    There is no point in shipping a poorly performing application. Knowing that being “fast enough” is not necessarily enough on embedded device where an HD stream is running on full screen for hours. This is why going native always feels the safer choice.

  • Factoring applicative code is not possible !
    As you are developing several native applications, in different languages, with different teams, it is impossible to keep everything at the same place and to reuse code. You must develop everything for each platform.

With more than a decade of expertise in the TV UIs, hundreds of applications shipped, Wiztivi also encountered those challenges and today we are proposing our solution to those issues.

Overview

Goals

Dana aims at enabling the creation of natively performant TV applications on all currently available platforms. Three principles are driving the framework:

Develop application native anywhere

Dana aims at supporting all main TV platforms: Browser, Samsung, LG, Android, Apple, Xbox, Linux and so on with native components.

One codebase to manage them all

Develop for every platform but write on codebase only in JavaScript. Dana minimizes as much as possible dependencies.

Performance focused

Dana is built with performance in mind to make the most of embedded devices. With embedded devices like TV, performance is the main concern. Because Dana is manipulating native components, it is simple to keep a performant application across all platforms.

Architecture

To achieve these three statements, Dana uses a unique architecture. The Core library provide an abstraction to many bridges or runtimes that are available on each platform. The engine provides a way to access the platform available APIs (e.g. system info, filesystem, network, player). The renderer allows to display either simple primitives (text, rectangle, image) or more complex native component (rail, input). A mere visualization can be found below:

Application (JS)
Application (JS)
Dana
Dana
Platform
Platform
Core (JS)
Core (JS)
Bridge
Bridge
Renderer
Renderer
Engine
Engine
Text is not SVG - cannot display

Compatibility and supported platform

Dana supports many different platforms, follow the link to know more about it:

Supported platform

Check if your target is supported !

Ecosystem

Dana is currently supported by a small team at Wiztivi.

License

If you want to know more about copyright of the framework, see our License page.