Skip to content
This repository has been archived by the owner on Sep 18, 2023. It is now read-only.
/ nugget Public archive

Client/server framework for building awesome communal dashboards.

License

Notifications You must be signed in to change notification settings

hudl/nugget

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

50 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

What's a nugget?

It's a simple communal dashboard (or information radiator), although perhaps not in the typical sense.

While a lot of dashboards are complex and meant for reacting and driving decision making, nuggets are more about creating general awareness. And looking awesome.

Here's an example - Hudl's concurrent user count:

Current Users

The number moves up and down in real time.

You can put one up on a spare monitor or a TV, but for maximum #mindblown, you should project it onto a surface:

Current Users projected onto a floor

How do I make one?

  1. Fork this repository
  2. Create a datasource and a display
  3. (optional) Get a projector

Still interested? Continue on for more detail.

Presentation Slides

This project has been the subject of a presentation. See the slides.

Project Structure

The system is just a simple client-server architecture, with a node.js/socket.io server retrieving and curating data, and a browser/socket.io client subscribing to data events fired by the server.

Architecture

Terminology

  • Stat - A (javascript object) message containing a small piece of data to be displayed.
  • Datasource - A node.js module on the server that grabs data from one or more external sources, builds them into a stat, and emits that stat.
  • Display - A require.js module in a browser client that consumes stats and renders them.

Datasource

Datasource modules go in server/user/datasource.

See a simple, documented Current System Time datasource example.

Display

Display JavaScript, HTML, and CSS goes in server/user/displays.

For each display you should define exactly one file with the same name. For a display called current-time, you'll create:

Each of the links above is to an example that works with the system-time datasource (above).

Making It Go

Note: This assumes you're running the server on linux. For Windows, some additional work may be required.

  1. Download and install node.js

  2. Switch to the server/ directory and install dependencies with npm

     npm install
     npm install forever -g
    
  3. Start the server

     ./start.sh
    

    This uses forever to run node server.js. You can list running processes with forever list and stop the server with forever stop server.js. See the forever documentation for more details.

  4. Open up a browser and visit:

  • http://localhost:42420 to load a display
  • http://localhost:42420/dashboard to load the nugget control panel

Projectors and Raspberry Pi

More coming soon.

These are the parts I used that've worked pretty well for me. I'd recommend price shopping a bit for them.

About

Client/server framework for building awesome communal dashboards.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published