castmill

Digital Signage Player

Usage no npm install needed!

<script type="module">
  import castmill from 'https://cdn.skypack.dev/castmill';
</script>

README

Castmill - Open Digital Signage Player

Castmill is an Open Source library that implements a full featured Digital Signage player. Some of its features:

  • HTML5 Lightweight and modular player.
  • Built-in widgets for playing videos, images or texts.
  • Flexible layout system allows for any kind of imaginable setup.
  • Optimized for maximul reliability, low memory and offline operation.

Install

Use yarn or npm to install the package in your project:

yarn add castmill

Check the demos and API reference for how to use the library.

License

This library is covered by the AGPL license. If you are in need of a different license for commercial purposes, please get in touch with us.

Development

In order to run the demo just run:

yarn dev

If you want to build the demo for publishing somewhere:

yarn build

Widgets

Widgets are the primitives that shows any content on a display. Widgets must be completely isolated from the rest of the system and other primitives. If a widgets crashes should not affect the player in any significant way. If a widget leaks memory, it will be cleaned when the widget is destroyed.

Widgets should be self-contained. They must cache all the assets they need, as well as their code. They must work online as well as offline. Service workers will be used for this.

More than one widget can exist at the same time on the display. Widgets can be used to fill layouts. But this is outside the scope of the widget. The widget does just need to show, and play itself as required by the layout orchestrator.

Widgets may have a server componet besides the client part. The server component may be needed to feed the widget with dynamic informations, such as news, real state data, etc.

Layers

Layers are the containers of the widgets. Layers can be placed around in the screen, moved or animated. They are very lightweight and expose the widget interface to the rest of the system.

Layouts

Layouts are containers for several layers or playlists. A playlist can contain layers and layouts, allowing mixing content with different layouts for maximum flexibility.

Layer server

A layer server is responsible of putting and removing the layers on a given container.

Roadmap

  • Looping of playlists including layouts.
  • Triggers. Trigges to play a widget when some condition has been met.
  • Caching using service workers.
  • postMessage interface between widgets and layers.
  • sandboxed iframes.