Shopify Dashing Modular Extension

Dashing is a Sinatra based framework that lets you build beautiful dashboards. It was originally built by Shopify and now re-branded as Smashing and maintained by the community.


The original dashing has limited features. Although there are many modules available in the community, there wasn’t a structure method for framework to develop and reused the functionalities. dashing-contrib aims to address a couple of areas:

  • Introduce DashingContrib::RunnableJob module to define reusable and testable jobs
  • Built-in jobs are only a couple of lines implementation, no repetitive copy and paste
  • Allow loading secret parameters is automatically loaded from .env file
  • Built-in state management to allow all jobs have a final state (ok, warning, critical)
  • Built-in rest API to get overall state summary
  • Built-in rest API to trigger save history

There are many pre-built modules and instructions are available for integrations, here are some examples:

HotState is forked from the HotStatus widget except it uses state instead of status to alter it’s display and trigger an optional sound on alerts. It’s color is based on the text displayed which is determined from the state passed to it (OK, WARNING, CRITICAL or UNKNOWN).

Sidekiq is a message queue running on a backing service, e.g Redis. This Sidekiq widget has three states(ok, warning, critical) based on configurations.

Pingdom Uptime and Pingdom Summary modules are able to cache pingdom’s report and provide uptime summaries.

Kue Status a widget that shows current status of Kue (a Node.js) simple job queue.

The Switcher adds some functionality on existing modules. When adding widgets to a dashboard, one gets easily out of screen space because of not many widgets can be added in same screen/dashboard. Instead of putting them into separate dashboards, Switcher can switch widgets in same region periodically.