{"id":20802369,"url":"https://github.com/astarte-platform/astarte-dashboard","last_synced_at":"2026-04-09T12:24:16.937Z","repository":{"id":36741062,"uuid":"136495754","full_name":"astarte-platform/astarte-dashboard","owner":"astarte-platform","description":"Astarte dashboard","archived":false,"fork":false,"pushed_at":"2025-08-22T09:21:50.000Z","size":9136,"stargazers_count":18,"open_issues_count":26,"forks_count":18,"subscribers_count":7,"default_branch":"master","last_synced_at":"2025-08-22T11:36:10.801Z","etag":null,"topics":["astarte","dashboard","hacktoberfest","iot","iot-dashboard","iot-data-visualization","iot-platform"],"latest_commit_sha":null,"homepage":"http://astarte-platform.org","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/astarte-platform.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":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":"AUTHORS.md","dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2018-06-07T15:18:59.000Z","updated_at":"2025-08-04T05:34:14.000Z","dependencies_parsed_at":"2024-01-29T13:26:34.053Z","dependency_job_id":"5fca64f2-b619-48ce-a36e-21750a9d9ae6","html_url":"https://github.com/astarte-platform/astarte-dashboard","commit_stats":null,"previous_names":[],"tags_count":35,"template":false,"template_full_name":null,"purl":"pkg:github/astarte-platform/astarte-dashboard","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/astarte-platform%2Fastarte-dashboard","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/astarte-platform%2Fastarte-dashboard/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/astarte-platform%2Fastarte-dashboard/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/astarte-platform%2Fastarte-dashboard/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/astarte-platform","download_url":"https://codeload.github.com/astarte-platform/astarte-dashboard/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/astarte-platform%2Fastarte-dashboard/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30637632,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-18T00:09:27.587Z","status":"ssl_error","status_checked_at":"2026-03-18T00:09:26.123Z","response_time":56,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":["astarte","dashboard","hacktoberfest","iot","iot-dashboard","iot-data-visualization","iot-platform"],"created_at":"2024-11-17T18:30:54.448Z","updated_at":"2026-03-18T00:46:04.286Z","avatar_url":"https://github.com/astarte-platform.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Astarte Dashboard\n\nAstarte Dashboard is a web UI that allows visualizing the status of your realm\nand to perform administrative tasks such as installing interfaces and triggers,\nmanaging devices, pipelines and flows.\n\n[![Dashboard Home Screen Shot][dashboard-home-screenshot]](https://github.com/davidebriani/astarte/blob/docs/add-astarte-dashboard-documentation/doc/images/astarte-dashboard-realm-overview.png)\n\n## Table of Contents\n\n- [Try it!](#try-it)\n- [Run it locally](#run-it-locally)\n  - [Prerequisites](#prerequisites)\n  - [Configuration](#configuration)\n  - [Run it](#run-it)\n- [Contributing](#contributing)\n  - [Dependencies](#dependencies)\n  - [Starting up a local server](#starting-up-a-local-server)\n  - [Testing](#testing)\n- [License](#license)\n\n\n## Try it!\n\nAstarte Dashboard is deployed by default on all Astarte instances.\n\nWhen deploying locally using __docker-compose__, visit http://localhost:4040.\n\nOn a __kubernetes__ cluster, the URL is specified in the [Astarte Voyager Ingress configuration](https://docs.astarte-platform.org/snapshot/065-setup_ingress.html#creating-an-astartevoyageringress).\n\nOr try out __Astarte as a service__ on [Astarte Cloud](https://console.astarte.cloud/).\n\n## Run it locally\n\n### Prerequisites\n\nBefore starting you must have:\n\n- [Docker](https://docs.docker.com/get-docker/) version 19.0 or greater.\n- An Astarte instance up and running, either locally or on a remote cluster.\n  You can have a look at [Astarte in 5 minutes](https://docs.astarte-platform.org/1.2/010-astarte_in_5_minutes.html#content)\n  if you haven't already.\n\n### Configuration\n\nAstarte Dashboard relies on a configuration file for parameters like the Astarte API URL.\nAs soon as you open Astarte Dashboard, it will search for a file `config.json`\ncontaining the following keys:\n\n* __astarte_api_url__ (required):\n  the base URL of your Astarte API endpoints.\n  This will be used to deduct the endpoints of all Astarte components:\n\n  + AppEngine: api_url + /appengine\n  + Realm Management: api_url + /realmmanagement\n  + Pairing: api_url + /pairing\n  + Flow: api_url + /flow\n\n  The special string `localhost` sets the enpoints the one ones used in the Astarte in 5 minutes guide\n\n  + AppEngine: `http://localhost:4002`\n  + Realm Management: `http://localhost:4000`\n  + Pairing: `http://localhost:4003`\n  + Flow: `http://localhost:4009`\n\n  In custom deployments those URLs may change, so you can overwrite any of those\n  with the following optional keys:\n  + __realm_management_api_url__\n  + __appengine_api_url__\n  + __pairing_api_url__\n  + __flow_api_url__\n\n* __default_realm__ (optional):\n  the default realm to login into.\n\n* __enable_flow_preview__ (optional):\n  this requires your Astarte cluster to have Flow configured and running.\n  When enabled (set it to `true`) the Dashboard will display Flow API status\n  and the related pages such as flows, pipelines and blocks.\n\n* __auth__ (required):\n  the list of auth options available for login.\n\n  Supported authentication methods are direct token or OAuth2 Implicit Grant\n\n  + __oauth__:\n    following the OAuth standard, Astarte Dashboard will redirect you to your OAuth provider\n    for login. On successful login you'll be redirected back to Astarte Dashboard.\n\n  + __token__:\n    A token is needed to authenticate against the Astarte API.\n    You can generate one from the realm private key using [astartectl](https://github.com/astarte-platform/astartectl).\n\n  If multiple auth options are enabled, the user may use either one.\n\n* __default_auth__ (required):\n  the default auth option to display when attempting login.\n\n\nAn example config would look like this:\n```json\n{\n  \"astarte_api_url\": \"https://api.example.com\",\n  \"enable_flow_preview\": true,\n  \"default_realm\": \"myrealm\",\n  \"default_auth\": \"token\",\n  \"auth\": [\n    {\n      \"type\": \"token\"\n    },\n    {\n      \"type\": \"oauth\",\n      \"oauth_api_url\": \"https://auth.example.com\"\n    }\n  ]\n}\n```\n\n### Run it\n\nYou can easily run the Astarte Dashboard using the official Docker images from the public\nDockerhub registry.\n\nFor example, to run it locally on port 4040, you can use the following command:\n\n```sh\ndocker run \\\n  -p 4040:80 \\\n  -v /absolute/path/to/config.json:/usr/share/nginx/html/user-config/config.json \\\n  astarte/astarte-dashboard:snapshot\n```\n\n\n## Contributing\n\n### Dependencies\n\nAstarte Dashboard is written in TypeScript using the React framework and npm to manage dependencies.\n\n* node (10 or greater)\n* npm (6 or greater)\n\n### Starting up a local server\n\n1. Clone this repo locally\n   ```sh\n   git clone git@github.com:astarte-platform/astarte-dashboard.git \u0026\u0026 cd astarte-dashboard\n   ```\n2. Install the project dependencies\n   ```sh\n   npm install\n   ```\n3. Place your configuration file in `public/user-config/config.json`\n4. Start the dev server\n   ```sh\n   npm run start\n   ```\n5. Open the browser at the displayed URL, usually `http://localhost:8080`\n\n\n### Testing\n\nTests are carried out using Cypress, which in turn uses a headless browser to simulate user interactions.\nSo before testing, a server from which the browser can access Astarte Dashboard is needed.\nThe command `start-ci` serves the purpose.\n```sh\nnpm run start-ci\n```\n\nOnce the server is up, you can run tests in the CLI by running the command `test`\n```sh\nnpm run test\n```\n\nBut if you want to test specific pages or components, you can open the Cypress GUI with\n```sh\nnpm run cypress:open\n```\n\nOther routine tests are formatting and typescript checks\n```sh\n npm run check-format\n npm run check-types\n```\n\n## License\n\nDistributed under the Apache2.0 License. See [LICENSE](LICENSE) for more information.\n\n\n\u003c!-- https://www.markdownguide.org/basic-syntax/#reference-style-links --\u003e\n[dashboard-home-screenshot]: https://github.com/astarte-platform/astarte/blob/release-1.2/doc/images/astarte-dashboard-realm-overview.png\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fastarte-platform%2Fastarte-dashboard","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fastarte-platform%2Fastarte-dashboard","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fastarte-platform%2Fastarte-dashboard/lists"}