{"id":20879467,"url":"https://github.com/jackw/grafana-bundledui-app","last_synced_at":"2026-07-09T12:31:40.381Z","repository":{"id":196631967,"uuid":"693733463","full_name":"jackw/grafana-bundledui-app","owner":"jackw","description":null,"archived":false,"fork":false,"pushed_at":"2023-10-12T07:27:42.000Z","size":1319,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-08-22T17:44:03.182Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/jackw.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","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":"2023-09-19T15:48:55.000Z","updated_at":"2023-09-19T15:49:26.000Z","dependencies_parsed_at":null,"dependency_job_id":"cdb027eb-d423-47f2-9b3f-0e7d989d108f","html_url":"https://github.com/jackw/grafana-bundledui-app","commit_stats":null,"previous_names":["jackw/grafana-bundledui-app"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/jackw/grafana-bundledui-app","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jackw%2Fgrafana-bundledui-app","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jackw%2Fgrafana-bundledui-app/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jackw%2Fgrafana-bundledui-app/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jackw%2Fgrafana-bundledui-app/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jackw","download_url":"https://codeload.github.com/jackw/grafana-bundledui-app/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jackw%2Fgrafana-bundledui-app/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":35299762,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-07-09T02:00:07.329Z","response_time":57,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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-11-18T07:16:36.039Z","updated_at":"2026-07-09T12:31:40.360Z","avatar_url":"https://github.com/jackw.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Grafana app plugin template\n\nThis template is a starting point for building an app plugin for Grafana.\n\n## What are Grafana app plugins?\n\nApp plugins can let you create a custom out-of-the-box monitoring experience by custom pages, nested datasources and panel plugins.\n\n## Getting started\n\n\n### Frontend\n\n1. Install dependencies\n\n   ```bash\n   yarn install\n   ```\n\n2. Build plugin in development mode and run in watch mode\n\n   ```bash\n   yarn run dev\n   ```\n\n3. Build plugin in production mode\n\n   ```bash\n   yarn run build\n   ```\n\n4. Run the tests (using Jest)\n\n   ```bash\n   # Runs the tests and watches for changes, requires git init first\n   yarn run test\n\n   # Exits after running all the tests\n   yarn run test:ci\n   ```\n\n5. Spin up a Grafana instance and run the plugin inside it (using Docker)\n\n   ```bash\n   yarn run server\n   ```\n\n6. Run the E2E tests (using Cypress)\n\n   ```bash\n   # Spins up a Grafana instance first that we tests against\n   yarn run server\n\n   # Starts the tests\n   yarn run e2e\n   ```\n\n7. Run the linter\n\n   ```bash\n   yarn run lint\n\n   # or\n\n   yarn run lint:fix\n   ```\n\n\n# Distributing your plugin\n\nWhen distributing a Grafana plugin either within the community or privately the plugin must be signed so the Grafana application can verify its authenticity. This can be done with the `@grafana/sign-plugin` package.\n\n_Note: It's not necessary to sign a plugin during development. The docker development environment that is scaffolded with `@grafana/create-plugin` caters for running the plugin without a signature._\n\n## Initial steps\n\nBefore signing a plugin please read the Grafana [plugin publishing and signing criteria](https://grafana.com/docs/grafana/latest/developers/plugins/publishing-and-signing-criteria/) documentation carefully.\n\n`@grafana/create-plugin` has added the necessary commands and workflows to make signing and distributing a plugin via the grafana plugins catalog as straightforward as possible.\n\nBefore signing a plugin for the first time please consult the Grafana [plugin signature levels](https://grafana.com/docs/grafana/latest/developers/plugins/sign-a-plugin/#plugin-signature-levels) documentation to understand the differences between the types of signature level.\n\n1. Create a [Grafana Cloud account](https://grafana.com/signup).\n2. Make sure that the first part of the plugin ID matches the slug of your Grafana Cloud account.\n   - _You can find the plugin ID in the `plugin.json` file inside your plugin directory. For example, if your account slug is `acmecorp`, you need to prefix the plugin ID with `acmecorp-`._\n3. Create a Grafana Cloud API key with the `PluginPublisher` role.\n4. Keep a record of this API key as it will be required for signing a plugin\n\n## Signing a plugin\n\n### Using Github actions release workflow\n\nIf the plugin is using the github actions supplied with `@grafana/create-plugin` signing a plugin is included out of the box. The [release workflow](./.github/workflows/release.yml) can prepare everything to make submitting your plugin to Grafana as easy as possible. Before being able to sign the plugin however a secret needs adding to the Github repository.\n\n1. Please navigate to \"settings \u003e secrets \u003e actions\" within your repo to create secrets.\n2. Click \"New repository secret\"\n3. Name the secret \"GRAFANA_API_KEY\"\n4. Paste your Grafana Cloud API key in the Secret field\n5. Click \"Add secret\"\n\n#### Push a version tag\n\nTo trigger the workflow we need to push a version tag to github. This can be achieved with the following steps:\n\n1. Run `npm version \u003cmajor|minor|patch\u003e`\n2. Run `git push origin main --follow-tags`\n\n\n## Learn more\n\nBelow you can find source code for existing app plugins and other related documentation.\n\n- [Basic app plugin example](https://github.com/grafana/grafana-plugin-examples/tree/master/examples/app-basic#readme)\n- [`plugin.json` documentation](https://grafana.com/developers/plugin-tools/reference-plugin-json)\n- [How to sign a plugin?](https://grafana.com/docs/grafana/latest/developers/plugins/sign-a-plugin/)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjackw%2Fgrafana-bundledui-app","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjackw%2Fgrafana-bundledui-app","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjackw%2Fgrafana-bundledui-app/lists"}