npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

castmill

v1.0.0

Published

Digital Signage Player

Downloads

2

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.