• Stars
    star
    105
  • Rank 328,196 (Top 7 %)
  • Language
    Clojure
  • License
    MIT License
  • Created over 8 years ago
  • Updated over 4 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

A Clojure mini-framework for building realtime dashboards

dashboard-clj

Join the chat at https://gitter.im/multunus/dashboard-clj

A clojure mini-framework to build dashboards inspired by dashing.

A lot of plumbing work goes into building a dashboard. Setting up a dashboard involves the following challenges:

  • Fetching data
  • Scheduling data retrieval
  • Transferring data to the client
  • Visualizing
  • Deployment

Fetching

Data source, used for fetching data, is just a clojure function! The scheduler will run the function and broadcast the result to the client side as per the schedule. We take care of caching the data so that a client who joins later can immediately use the last results available.

Scheduling

In order to periodically update the dashboard with the latest data, every data source can optionally have a schedule. Data gets fetched and sent to the client at the configured intervals.

Here is an example configuration for a data source with schedule,

{
  :name :sample-dashboard-stats
  :read-fn :sample-dashboard.fetcher/fetch
  :params ["multunus" "dashboard-clj"]
  :schedule {
    :in [0 :seconds]
    :every [5 :minutes]}}

Transferring data

Sente is a great websocket library that we use to broadcast the data fetched by every data source to the clients. On the client side, we use re-frame, and the data will be cached on the client - this happens under the hood. The widgets will be re-rendered when data changes on the client side. So, no confguration is required here.

Visualizing

We are still trying to improve this part. We are shipping a basic layout(react grid layout) but not any widgets yet. We found that widgets and their look and feel vary greatly, and we are still pondering over a good common set of widgets to ship.

Since widgets are just reagent components, they are easy to create. Above all, tons of great libraries can be found here. In addition, the reagent cookbook talks in depth on how to setup common libraries.

Deployment

We can host this dashboard on Heroku in no time! Read about it here.

![Screenshot] (https://db.tt/Z5WnyEpj)

Demo

Usage

About

Multunus logo

dashboard-clj is maintained and funded by Multunus Software Pvt. Ltd. The names and logos for Multunus are trademarks of Multunus Software Pvt. Ltd.

We built this as part of learning Clojure in our 20% time. We will be supporting this library during our investment time and using it to create internal dashboards at Multunus.

More Repositories

1

autonomous-rc-car

Autonomous RC car using Raspberry Pi and ANN
Python
307
star
2

onemdm-server

OneMDM is an open source Mobile Device Management (MDM) solution.
Ruby
153
star
3

React-Native-TDD-Tutorial

JavaScript
85
star
4

jekyll-author-plugin

A Jekyll plugin for generating author archives for posts
Ruby
41
star
5

Open-Playbook

Our open culture, tools and process playbook.
34
star
6

react-native-boilerplate

JavaScript
19
star
7

onemdm-client

Java
19
star
8

motion-gyro-image-controller

RubyMotion library for controlling images using tilt
Ruby
11
star
9

motion-horizontal-scroll

Horizontal scroll for items in iOS (RubyMotion) to mimic Pulse-like UI
Ruby
8
star
10

career-quiz

A recommendation engine that will help you find out what career to choose.
JavaScript
7
star
11

dockerfiles

Collection of dockerfiles we use here at Multunus
6
star
12

motion-animated-cell-table

A RubyMotion library that facilitates the animation of cells tapped in a table
Ruby
5
star
13

lambdacd-notifications

Build status notification library for lambdacd
Clojure
3
star
14

moveit-mobile

React native iOS and Android apps for MoveIt (Not Maintained)
JavaScript
3
star
15

onemdm-installer

A library which checks whether OneMDM is installed - WIP
Java
3
star
16

engineering-handbook

2
star
17

motion-linear-animate

RubyMotion library for linear animations
Ruby
2
star
18

multunus.github.io

Multunus Website
HTML
1
star
19

timeline

Young Turks @ Multunus
JavaScript
1
star
20

onemdm-library

OneMDM library for android applications - WIP
Java
1
star
21

surveyor

Ruby
1
star
22

cookbooks

Chef cookbooks containing ruby-build, nginx, passenger, postgresql, monit, new relic
HTML
1
star
23

js_fixtures

A gem to create js fixtures for JS Tests for Jasmine and JSTestDriver
Ruby
1
star
24

app-push-library

A Library for Android MDM clients to push applications to the device
Java
1
star