{"id":16909865,"url":"https://github.com/drager/cetti","last_synced_at":"2026-05-19T00:05:19.169Z","repository":{"id":66347634,"uuid":"45417580","full_name":"drager/cetti","owner":"drager","description":"Dashboard for monitoring data reported from applications. For example errors, logs, performance measures etc through widgets.","archived":false,"fork":false,"pushed_at":"2016-03-02T13:46:22.000Z","size":1080,"stargazers_count":1,"open_issues_count":0,"forks_count":3,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-01-25T16:29:30.291Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/drager.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2015-11-02T19:41:16.000Z","updated_at":"2016-01-31T18:57:22.000Z","dependencies_parsed_at":null,"dependency_job_id":"3b3d7d52-9728-48fc-978c-784cdf01c60f","html_url":"https://github.com/drager/cetti","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/drager%2Fcetti","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/drager%2Fcetti/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/drager%2Fcetti/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/drager%2Fcetti/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/drager","download_url":"https://codeload.github.com/drager/cetti/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":244666411,"owners_count":20490283,"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":"2024-10-13T18:58:06.098Z","updated_at":"2026-05-19T00:05:19.127Z","avatar_url":"https://github.com/drager.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Cetti\n[![Stories in Ready](https://badge.waffle.io/drager/cetti.png?label=ready\u0026title=Ready)][waffle]\n[![Build Status](https://travis-ci.org/drager/cetti.svg)][travis]\n\nDashboard for monitoring data reported from applications. For example errors, logs,\nperformance measures etc through widgets.\n\n## Dashboard\nA dashboard simply contains a list of widgets. Each dashboard has it's own configuration,\nsuch as which widgets it should use, number of grids and rows and a name for the dashboard.\n\nEach added dashboard will get it's own route via the object property key, for instance if\n`errors` is the property key then it will be a route called `errors`.\nThe configured name will also be displayed in the navigation.\n\nEach widget in the list of widgets has a placement, type, a name for the widget and which\nbucket it should get its data from. It also has an type configuration where the widget can\nhave it's own configuration such as subtype for the widget if there are any subtypes.\n\n## Widgets\nThere are three different types of widgets present: ListWidget, NumberWidget and ChartWidget.\n\nThe widgets data is called \"buckets\" and is simply a list of data points and data points simply\ncontains a id, timestamp, sessionId, and a value. So in the configuration for the dashboard\nit needs a bucket where the widget should look for its data.\n\n### ListWidget\nThe ListWidget contains two types of lists, a simple generic list and a error list. The generic\nlist just displays a title and a subtitle which can either be a string or a function.\nThe error list needs to display some more data such as occurrences and be able to resolve\nerrors and therefore cannot be as simple as the generic list.\n\n### NumberWidget\nThe NumberWidget is simply for displaying numbers. It has three types of numbers, count, last and\nsum. Count is used for counting the number of data points. Last uses the value of the last data\npoint and sum sums the values of all the data points.\n\n### ChartWidget\nThe ChartWidget contains two types of charts, bar and line. The charts has its own configuration such as\nwhich data should be used for the x and the y axis. For example so could we use the AxisType 'value'\nwhich will simply use the data points value.\n\nA simple dashboard configuration with one widget could look like this:\n```\nmydashboard: {\n  name: 'My Dashboard',\n  grid: {\n    cols: 1,\n    rows: 1,\n  },\n  widgets: [\n    {\n      placement: {\n        x: 0,\n        y: 0,\n        width: 1,\n        height: 1,\n      },\n      type: WidgetType.list,\n      title: 'Successful builds',\n      bucket: 'build',\n      typeConfiguration: {\n        type: ListType.generic,\n        filter: (data) =\u003e data.value.result === 0,\n        title: 'message',\n        subtitle: (data) =\u003e {\n          return `Build succeeded at ${new Date(Date.parse(data.value.finished_at))\n                      .toLocaleString('sv-SE')}\n                  at branch ${data.value.branch}`;\n        },\n      },\n    },\n  ],\n},\n```\n## Contribute\n\nIf you're interested in helping with evolving this project, please do, check out [waffle][waffle] for issues\nthat can be done.\n\nIf there's something you want to fix, just start working and then send a pull request. *Remember*: The pull request can only\nbe merged if it passes the [travis build][travis].\n\nAny feedback you have about using this project would also be greatly appreciated.\n\n### Building\n\n#### Prerequisites\n\nYou'll need to have node v4.0.0+ installed and npm v2.0.0+.\nYou need to be familiar with git.\n\n#### Build\n\nOnce you have cloned the repository, building the project is very easy.\n\n```\nnpm install\nnpm run build\n```\n\n## Running\n\n```\nnpm install\nnpm run start\n```\n\nThat's it, just go to: http://localhost:3000/ to see the project in action.\n\n## Features and bugs\nPlease file feature requests and bugs at the [issue tracker][tracker].\nSee [waffle][waffle] for current work status.\n\n[tracker]: https://github.com/drager/cetti/issues\n[waffle]: https://waffle.io/drager/cetti\n[travis]: https://travis-ci.org/drager/cetti\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdrager%2Fcetti","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdrager%2Fcetti","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdrager%2Fcetti/lists"}