https://github.com/dashorst/dashboard
Dashboard for the coffee corner based on HTML5/CSS3
https://github.com/dashorst/dashboard
Last synced: 9 months ago
JSON representation
Dashboard for the coffee corner based on HTML5/CSS3
- Host: GitHub
- URL: https://github.com/dashorst/dashboard
- Owner: dashorst
- License: gpl-3.0
- Created: 2010-09-20T09:25:59.000Z (almost 16 years ago)
- Default Branch: master
- Last Pushed: 2021-12-14T14:40:55.000Z (over 4 years ago)
- Last Synced: 2024-04-20T12:44:36.373Z (over 2 years ago)
- Language: Java
- Homepage:
- Size: 4.07 MB
- Stars: 99
- Watchers: 13
- Forks: 40
- Open Issues: 3
-
Metadata Files:
- Readme: README.md
- License: LICENSE.txt
Awesome Lists containing this project
README
Topicus Onderwijs Dashboard
===========================
This project is meant to be an implementation of the [Panic
Dashboard](http://www.panic.com/blog/2010/03/the-panic-status-board/) that was
published by the [Panic team](http://panic.com) in last March.
This is an internal project for Topicus Onderwijs and will ultimately run on a
PC + LCD monitor near our coffee corner. The idea is to show the status of our
production systems, build system, issues, release calendar and other
interesting things that make our company tick.
The project consists of two parts: a HTML5/CSS3 client and a small light
weight Java server that will aggregate the data for the client from our
production systems.
Currently the dashboard has the following modules:
* Project status
* NS (Dutch railways train schedule)
* MantisBT
* Google Calendar
* Hudson
* Subversion
* Twitter
* Weather
The Topicus Onderwijs Dashboard only works in the latest webkit browsers. No
effort has been done to make it work in Firefox, Opera or IE. Safari and
Chromium work as advertised.
## Dependencies ##
Most dependencies will be fetched by Maven from the Maven central repository or
from the repositories listed in the POM. However, three dependencies are not
available in a Maven repository: the MantisBT connector, the WiQuery version and
WQPlot.
To use MantisBT 1.2, you need to rebuild the MantisBT connector 1.1.1.0 against
a MantisBT 1.2 installation. Install the jar as
org.mantisbt.mantisconnect:client-api:1.2.1.0 in your Maven repository.
Both WiQuery and WQPlot can be found on GitHub under papegaaij/wiquery and
hielkehoeve/wiquery-jqplot respectively. Simply checkout these projects and
install them into your Maven repository.
## Configuration ##
The configuration for the dashboard is stored in
~/.dashboard/nl.topicus.onderwijs.dashboard.config.Settings.json
This JSON file contains the list of projects, locations and organizations (and
possibly other types of keys) and for each key (project, location,...) the
settings for the enabled plugins.
{
"keys" : [ {
"nl.topicus.onderwijs.dashboard.keys.Project" : {
"code" : "",
"name" : ""
}
}, {
"nl.topicus.onderwijs.dashboard.keys.Project" : {
"code" : "dashboard",
"name" : "Dashboard"
}
}, {
"nl.topicus.onderwijs.dashboard.keys.Location" : {
"code" : "amsterdam",
"name" : "Amsterdam"
}
}, {
"nl.topicus.onderwijs.dashboard.keys.Organization" : {
"code" : "topicus",
"name" : "Topicus"
}
} ],
"projectSettings" : {
"amsterdam" : {
"nl.topicus.onderwijs.dashboard.modules.ns.NSService" : {
"station" : "Amsterdam"
}
},
"topicus" : {
"nl.topicus.onderwijs.dashboard.modules.google.GoogleEventService" : {
"username" : "",
"calendarId" : "",
"password" : ""
}
},
"dashboard" : {
"nl.topicus.onderwijs.dashboard.modules.google.GoogleEventService" : {
"username" : "",
"calendarId" : "",
"password" : ""
},
"nl.topicus.onderwijs.dashboard.modules.hudson.HudsonService" : {
"matchers" : { "" : "" },
"url" : ""
},
"nl.topicus.onderwijs.dashboard.modules.plots.PlotService" : {
"timeToLive" : "86400"
}
}
}
}
## Available Modules ##
### Project Status Integration ###
To show the status of a project we need data. This is in the form of number of
current users, average request time, deployed version, etc. At Topicus we
created special status pages to retrieve this type of information. Typically a
status page shows the overall health of the application for a server.
Waiting for a proper JSON status resource, we just scrape our status pages
using the `FooRetriever` classes. To show your project's health, you should
create such a status page yourself for your own application and write a
scraper for it. In the `onConfigure` method you can add the `DataSource`
implementations your retriever provides. See the `ParnassysStatusRetriever` as
a typical example.
Configuring a project for the status retrievers is simple. Provide a list of
URLs to fetch, each with a unique code. This code should be exactly one
character.
"" : "",
"" : "",
...
}
}
In order to see how our applications perform we show several plots generated by
wiquery-jqplot. This data is retreived from several datasources. To prevent large
amounts of data to be held in memory and eventually cause an OutOfMemoryError it
is possible to set a timeToLive value which makes sure that data older than
a certain amount of seconds is removed.
Configuring this value is easy, just add the PlotService to your project:
"nl.topicus.onderwijs.dashboard.modules.plots.PlotService" : {
"timeToLive" : "86400"
}
### Google Calendar Integration ###
To access Google calendar you need to provide a username, password and the
calendar ID you want to retrieve events from. If you add `#major` in the body
of the event, the event will be shown in the major events section.
### Hudson Integration ###
The hudson configuration per project consists of two parameters:
"nl.topicus.onderwijs.dashboard.modules.hudson.HudsonService" : {
"matchers" : { "" : "" },
"url" : ""
}
The project matchers is a list of regular expressions that match Hudson jobs for
your project. As it is customary to have a seperate build for production branch,
acceptance test branch and trunk, the Hudson plugin will aggregate build
information across the matched jobs. To differentiate between these branches,
provide different regulare expressions for all branches, each with a different
code. The code should be exactly one character.
The Hudson url points to the root of your Hudson installation. The Hudson
dashboard plugin will take it from there using the Hudson JSON API.
### MantisBT Integration ###
MantisBT integration requires MantisConnect 1.2.1.0 which is unfortunately not
available in a Maven repository. You can rebuild the connector yourself
against a 1.2+ MantisBT installation.
Configuring the MantisBT integration:
"nl.topicus.onderwijs.dashboard.modules.mantis.MantisService" : {
"url" : "",
"password" : "
}
The MantisBT connect URL is something like:
http:///mantisbt/api/soap/mantisconnect.php
The user needs developer permission for each project to see the issues.
### Subversion Integration ###
The Subversion module shows the latest commits that were applied to the stream
of monitored projects. Each project that wants its commits to be displayed in
the commit log needs to be configured in the following way:
"nl.topicus.onderwijs.dashboard.modules.svn.SvnService" : {
"url" : "",
"password" : ""
},
The URL is the point at which place the commits are logged from. If you have a
standard layout like:
/project
/trunk
/branches
/tags
Setting the path to the root of the project will track all commits done to
trunk, tags and branches. If you set the path to the `trunk` folder, only
commits to `trunk` will be logged.
### Twitter Integration ###
"nl.topicus.onderwijs.dashboard.modules.twitter.TwitterService" : {
"application" : {
"key" : "",
"secret" : ""
},
"topicus_dashboard" : {
"key" : "",
"secret" : "
}
### Weather Integration ###
The weather module takes local weather from www.wetter.com. It needs to know
the wetter.com city key to get the weather for. This key can be found on
wetter.com by searching for the city of choice. The key will show up in the
URL. For Deventer, the key is 'NL0OI0046'.
To compute the sunrise and sunset times, it also needs the latitude and
longitude of the city. For the longitude, use positive values for eastward
movement and negative values for westward movevent. Specify the coordinates
in decimal notation. For Deventer, the coordinates are: latitude = 52.25 and
longitude = 6.2.
You can use our API key and application name for the wetter.com integration.
It is also possible to register your own account at wetter.com.
"nl.topicus.onderwijs.dashboard.modules.wettercom.WetterComService" : {
"apiKey" : "a810d551e21496e8123b82752c4171d5",
"applicationName" : "topicusdashboard",
"cityKey" : "",
"latitude" : ,
"longitude" :
}