{"id":25255812,"url":"https://github.com/dashorst/dashboard","last_synced_at":"2025-10-27T01:31:34.877Z","repository":{"id":1079732,"uuid":"924449","full_name":"dashorst/dashboard","owner":"dashorst","description":"Dashboard for the coffee corner based on HTML5/CSS3","archived":false,"fork":false,"pushed_at":"2021-12-14T14:40:55.000Z","size":4270,"stargazers_count":99,"open_issues_count":3,"forks_count":40,"subscribers_count":13,"default_branch":"master","last_synced_at":"2024-04-20T12:44:36.373Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/dashorst.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2010-09-20T09:25:59.000Z","updated_at":"2024-01-03T02:42:59.000Z","dependencies_parsed_at":"2022-08-16T12:00:22.036Z","dependency_job_id":null,"html_url":"https://github.com/dashorst/dashboard","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dashorst%2Fdashboard","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dashorst%2Fdashboard/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dashorst%2Fdashboard/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dashorst%2Fdashboard/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/dashorst","download_url":"https://codeload.github.com/dashorst/dashboard/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":238422554,"owners_count":19469548,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-02-12T05:59:45.325Z","updated_at":"2025-10-27T01:31:30.681Z","avatar_url":"https://github.com/dashorst.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"Topicus Onderwijs Dashboard\n===========================\n\nThis project is meant to be an implementation of the [Panic\nDashboard](http://www.panic.com/blog/2010/03/the-panic-status-board/) that was\npublished by the [Panic team](http://panic.com) in last March.\n\nThis is an internal project for Topicus Onderwijs and will ultimately run on a\nPC + LCD monitor near our coffee corner. The idea is to show the status of our\nproduction systems, build system, issues, release calendar and other\ninteresting things that make our company tick.\n\nThe project consists of two parts: a HTML5/CSS3 client and a small light\nweight Java server that will aggregate the data for the client from our\nproduction systems.\n\nCurrently the dashboard has the following modules:\n\n * Project status\n * NS (Dutch railways train schedule)\n * MantisBT\n * Google Calendar\n * Hudson\n * Subversion\n * Twitter\n * Weather\n\nThe Topicus Onderwijs Dashboard only works in the latest webkit browsers. No\neffort has been done to make it work in Firefox, Opera or IE. Safari and\nChromium work as advertised.\n\n## Dependencies ##\n\nMost dependencies will be fetched by Maven from the Maven central repository or\nfrom the repositories listed in the POM. However, three dependencies are not\navailable in a Maven repository: the MantisBT connector, the WiQuery version and\nWQPlot.\n\nTo use MantisBT 1.2, you need to rebuild the MantisBT connector 1.1.1.0 against\na MantisBT 1.2 installation. Install the jar as\norg.mantisbt.mantisconnect:client-api:1.2.1.0 in your Maven repository.\n\nBoth WiQuery and WQPlot can be found on GitHub under papegaaij/wiquery and\nhielkehoeve/wiquery-jqplot respectively. Simply checkout these projects and\ninstall them into your Maven repository.\n\n## Configuration ##\n\nThe configuration for the dashboard is stored in \n\n\t~/.dashboard/nl.topicus.onderwijs.dashboard.config.Settings.json\n\nThis JSON file contains the list of projects, locations and organizations (and\npossibly other types of keys) and for each key (project, location,...) the\nsettings for the enabled plugins.\n\n\t{\n\t  \"keys\" : [ {\n\t    \"nl.topicus.onderwijs.dashboard.keys.Project\" : {\n\t      \"code\" : \"\u003cidentifier\u003e\",\n\t      \"name\" : \"\u003cdescriptive name\u003e\"\n\t    }\n\t  }, {\n\t    \"nl.topicus.onderwijs.dashboard.keys.Project\" : {\n\t      \"code\" : \"dashboard\",\n\t      \"name\" : \"Dashboard\"\n\t    }\n\t  }, {\n\t    \"nl.topicus.onderwijs.dashboard.keys.Location\" : {\n\t      \"code\" : \"amsterdam\",\n\t      \"name\" : \"Amsterdam\"\n\t    }\n\t  }, {\n\t    \"nl.topicus.onderwijs.dashboard.keys.Organization\" : {\n\t      \"code\" : \"topicus\",\n\t      \"name\" : \"Topicus\"\n\t    }\n\t  } ],\n\t  \"projectSettings\" : {\n\t    \"amsterdam\" : {\n\t      \"nl.topicus.onderwijs.dashboard.modules.ns.NSService\" : {\n\t        \"station\" : \"Amsterdam\"\n\t      }\n\t    },\n\t    \"topicus\" : {\n\t      \"nl.topicus.onderwijs.dashboard.modules.google.GoogleEventService\" : {\n\t        \"username\" : \"\u003cgoogle-calendar username\u003e\",\n\t        \"calendarId\" : \"\u003cidentifier for the calendar\u003e\",\n\t        \"password\" : \"\u003cpassword\u003e\"\n\t      }\n\t    },\n\t    \"dashboard\" : {\n\t      \"nl.topicus.onderwijs.dashboard.modules.google.GoogleEventService\" : {\n\t        \"username\" : \"\u003cgoogle-calendar username\u003e\",\n\t        \"calendarId\" : \"\u003cidentifier for the calendar\u003e\",\n\t        \"password\" : \"\u003cpassword\u003e\"\n\t      },\n\t      \"nl.topicus.onderwijs.dashboard.modules.hudson.HudsonService\" : {\n\t        \"matchers\" : { \"\u003ccode\u003e\" : \"\u003cregex matching project name\u003e\" },\n\t        \"url\" : \"\u003chudson url\u003e\"\n\t      },\n\t      \"nl.topicus.onderwijs.dashboard.modules.plots.PlotService\" : {\n\t        \"timeToLive\" : \"86400\"\n\t      }\n\t    }\n\t  }\n\t}\n\n## Available Modules ##\n\n### Project Status Integration ###\n\nTo show the status of a project we need data. This is in the form of number of\ncurrent users, average request time, deployed version, etc. At Topicus we\ncreated special status pages to retrieve this type of information. Typically a\nstatus page shows the overall health of the application for a server.\n\nWaiting for a proper JSON status resource, we just scrape our status pages\nusing the `FooRetriever` classes. To show your project's health, you should\ncreate such a status page yourself for your own application and write a\nscraper for it. In the `onConfigure` method you can add the `DataSource`\nimplementations your retriever provides. See the `ParnassysStatusRetriever` as\na typical example.\n\nConfiguring a project for the status retrievers is simple. Provide a list of\nURLs to fetch, each with a unique code. This code should be exactly one\ncharacter.\n\n\t\"\u003cclassname of your Retriever implementation\" : {\n\t  \"urls\" : {\n\t\t\t\"\u003ccode-1\u003e\" : \"\u003curl-1\u003e\",\n\t\t\t\"\u003ccode-2\u003e\" : \"\u003curl-2\u003e\",\n      ...\n\t  }\n\t}\n\nIn order to see how our applications perform we show several plots generated by \nwiquery-jqplot. This data is retreived from several datasources. To prevent large\namounts of data to be held in memory and eventually cause an OutOfMemoryError it \nis possible to set a timeToLive value which makes sure that data older than \na certain amount of seconds is removed.\n\nConfiguring this value is easy, just add the PlotService to your project:\n\n\t\"nl.topicus.onderwijs.dashboard.modules.plots.PlotService\" : {\n\t  \"timeToLive\" : \"86400\"\n\t}\n\n\n### Google Calendar Integration ###\n\nTo access Google calendar you need to provide a username, password and the\ncalendar ID you want to retrieve events from. If you add `#major` in the body\nof the event, the event will be shown in the major events section.\n\n### Hudson Integration ###\n\nThe hudson configuration per project consists of two parameters:\n\n\t\"nl.topicus.onderwijs.dashboard.modules.hudson.HudsonService\" : {\n\t  \"matchers\" : { \"\u003ccode\u003e\" : \"\u003cregex matching project name\u003e\" },\n\t  \"url\" : \"\u003chudson url\u003e\"\n\t}\n\nThe project matchers is a list of regular expressions that match Hudson jobs for\nyour project. As it is customary to have a seperate build for production branch,\nacceptance test branch and trunk, the Hudson plugin will aggregate build\ninformation across the matched jobs. To differentiate between these branches,\nprovide different regulare expressions for all branches, each with a different\ncode. The code should be exactly one character.\n\nThe Hudson url points to the root of your Hudson installation. The Hudson\ndashboard plugin will take it from there using the Hudson JSON API.\n\n### MantisBT Integration ###\n\nMantisBT integration requires MantisConnect 1.2.1.0 which is unfortunately not\navailable in a Maven repository. You can rebuild the connector yourself\nagainst a 1.2+ MantisBT installation.\n\nConfiguring the MantisBT integration:\n\n\t\"nl.topicus.onderwijs.dashboard.modules.mantis.MantisService\" : {\n\t  \"url\" : \"\u003cmantisbt connect URL\",\n\t  \"username\" : \"\u003cdashboard username\u003e\",\n\t  \"password\" : \"\u003cdashboard password\",\n\t  \"projects\" : [\u003clist of project ids],\n\t  \"filter\" : \u003cfilter id\u003e\n\t}\n\nThe MantisBT connect URL is something like:\n\n    http://\u003cserverurl\u003e/mantisbt/api/soap/mantisconnect.php\n\nThe user needs developer permission for each project to see the issues.\n\n\n### Subversion Integration ###\n\nThe Subversion module shows the latest commits that were applied to the stream\nof monitored projects. Each project that wants its commits to be displayed in\nthe commit log needs to be configured in the following way:\n\n\t\"nl.topicus.onderwijs.dashboard.modules.svn.SvnService\" : {\n\t  \"url\" : \"\u003curl to svn of your project\",\n\t  \"username\" : \"\u003cdashboard username\u003e\",\n\t  \"password\" : \"\u003cdashboard password\u003e\"\n\t},\n\nThe URL is the point at which place the commits are logged from. If you have a\nstandard layout like:\n\n\t/project\n\t    /trunk\n\t    /branches\n\t    /tags\n\nSetting the path to the root of the project will track all commits done to\ntrunk, tags and branches. If you set the path to the `trunk` folder, only\ncommits to `trunk` will be logged.\n\n### Twitter Integration ###\n\n\t\"nl.topicus.onderwijs.dashboard.modules.twitter.TwitterService\" : {\n\t  \"application\" : {\n\t    \"key\" : \"\u003capplication key\u003e\",\n\t    \"secret\" : \"\u003capplication secret\u003e\"\n\t  },\n\t  \"topicus_dashboard\" : {\n\t    \"key\" : \"\u003ckey for topicus_dashboard\u003e\",\n\t    \"secret\" : \"\u003csecret for topicus_dashboard\"\n\t  },\n\t  ... \u003cmore feeds\u003e\n\t}\n\n### Weather Integration ###\n\nThe weather module takes local weather from www.wetter.com. It needs to know\nthe wetter.com city key to get the weather for. This key can be found on\nwetter.com by searching for the city of choice. The key will show up in the\nURL. For Deventer, the key is 'NL0OI0046'.\n\nTo compute the sunrise and sunset times, it also needs the latitude and\nlongitude of the city. For the longitude, use positive values for eastward\nmovement and negative values for westward movevent. Specify the coordinates\nin decimal notation. For Deventer, the coordinates are: latitude = 52.25 and\nlongitude = 6.2.\n\nYou can use our API key and application name for the wetter.com integration.\nIt is also possible to register your own account at wetter.com.\n\n\t\"nl.topicus.onderwijs.dashboard.modules.wettercom.WetterComService\" : {\n\t  \"apiKey\" : \"a810d551e21496e8123b82752c4171d5\",\n\t  \"applicationName\" : \"topicusdashboard\",\n\t  \"cityKey\" : \"\u003cwetter.com citykey\u003e\",\n\t  \"latitude\" : \u003clatitude\u003e,     \n\t  \"longitude\" : \u003clongitude\u003e \n\t}\n \n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdashorst%2Fdashboard","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdashorst%2Fdashboard","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdashorst%2Fdashboard/lists"}