{"id":21919788,"url":"https://github.com/kernelci/dashboard","last_synced_at":"2025-08-02T16:32:41.906Z","repository":{"id":248700534,"uuid":"829419667","full_name":"kernelci/dashboard","owner":"kernelci","description":"KernelCI web dashboard","archived":false,"fork":false,"pushed_at":"2025-07-31T14:28:06.000Z","size":4298,"stargazers_count":4,"open_issues_count":104,"forks_count":12,"subscribers_count":15,"default_branch":"main","last_synced_at":"2025-07-31T15:32:27.929Z","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":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/kernelci.png","metadata":{"files":{"readme":"README.md","changelog":null,"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,"zenodo":null}},"created_at":"2024-07-16T11:47:41.000Z","updated_at":"2025-07-31T12:00:00.000Z","dependencies_parsed_at":"2024-08-26T13:56:55.274Z","dependency_job_id":"6acf449e-125d-4b33-b41c-bafb6dea5b81","html_url":"https://github.com/kernelci/dashboard","commit_stats":null,"previous_names":["kernelci/dashboard"],"tags_count":43,"template":false,"template_full_name":null,"purl":"pkg:github/kernelci/dashboard","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kernelci%2Fdashboard","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kernelci%2Fdashboard/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kernelci%2Fdashboard/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kernelci%2Fdashboard/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/kernelci","download_url":"https://codeload.github.com/kernelci/dashboard/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kernelci%2Fdashboard/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":268419318,"owners_count":24247490,"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","status":"online","status_checked_at":"2025-08-02T02:00:12.353Z","response_time":74,"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-28T20:10:50.740Z","updated_at":"2025-08-02T16:32:41.863Z","avatar_url":"https://github.com/kernelci.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# KernelCI Dashboard\n\nOur Web Dashboard to evaluate test results from the common results database([KCIDB](https://docs.kernelci.org/kcidb/)).\nAvailable at [dashboard.kernelci.org](https://dashboard.kernelci.org).\n\nThe new KernelCI Web Dashboard is a web application created to provide access\nto static checks, build logs, boot logs and test results related for the Linux kernel\nCI/test ecosystem. All that data will be provided by [KCIDB](https://docs.kernelci.org/kcidb/)\nsystem from the [KernelCI Foundation](https://kernelci.org/).\n\n# Repository\nWhat we have as a repository is a monorepo containing the *dashboard* (the web application) and a *backend*.\n\n### Dashboard\nA web app built with [React](https://react.dev/) + [Typescript](https://www.typescriptlang.org/), to see more information check the dashboard [README](dashboard/README.md).\n\n### Backend\nA Python http server built with [Django](https://www.djangoproject.com/) + [DRF](https://www.django-rest-framework.org/), to see more information check the backend [README](/backend/README.md).\n\n\n# Build\n\nCreate a .env file in /dashboard (Do not forget to check and set the variables and their values)\n```sh\n cp ./dashboard/.env.example ./dashboard/.env\n```\n\nCreate a secret key for Django:\n```sh\nexport DJANGO_SECRET_KEY=$(openssl rand -base64 22)\n```\nWe are not using sessions or anything like that right now, so changing the secret key won't be a big deal.\n\n\nAdd a `application_default_credentials.json` file with your ADC in the root of the project.\n```sh\ngcloud auth application-default login\ncp ~/.config/gcloud/application_default_credentials.json .\n```\n**Important**: Check the `application_default_credentials.json` file permissions with `ls -l` to see if docker has access to it.\n\nAfter setting up your connection with Google Cloud with the following commands:\n\n```sh\ncloud-sql-proxy kernelci-production:us-central1:postgresql2 \u0026\ngcloud auth application-default login\n```\n\n If it doesn't work, check the [Configure ADC with your Google Account](https://cloud.google.com/docs/authentication/provide-credentials-adc#google-idp) documentation.\n\nCreate a secret file with the database password:\n```sh\nmkdir -p backend/runtime/secrets\necho \u003cpassword\u003e \u003e backend/runtime/secrets/postgres_password_secret\n```\n\nIf you are going to use a database user other than `kernelci`, set it to `DB_DEFAULT_USER`:\n```sh\nexport DB_DEFAULT_USER=\u003cuser\u003e\n```\n\n\u003e For other optional envs, check the [backend README](backend/README.md).\n\nStartup the services:\n ```sh\n docker compose up --build -d\n ```\n Docker exposes port 80 (that you don't need to enter in the URL) instead of 5173 and 8000 that is used when running the dashboard project outside of docker.\n So you can hit the frontend with `http://localhost`  and the backend with `http://localhost/api` when running locally.\n\nMake sure that docker has the right permissions and has access to the environment variables. One way to do that is to set up a docker permission group.\n\nIf you are running the commands for exporting the environment variables and running docker separately, you can run docker with admin privileges and allowing environment variables with:\n```sh\nsudo -E docker compose up --build -d\n```\nOr you can also run the env exports and docker compose within the root user by running `sudo su`.\n\n\u003e Tip: you can create a quick script to set all the necessary envs and start the services. This will also allow docker to see the environment variables correclty.\n\n```sh\nexport DB_DEFAULT_USER=email@email.com\nexport DJANGO_SECRET_KEY=$(openssl rand -base64 22)\nexport DB_DEFAULT_NAME=kcidb\nexport DISCORD_WEBHOOK_URL=\"https://discord.com/api/webhooks/...\"\n\ndocker compose up --build\n```\n\n\u003e [Note] If you are going to run using only a dump of the database, the DB_DEFAULT_NAME should be `dashboard` and the `DB_DEFAULT_USER` and `DB_DEFAULT_PASSWORD` should be `admin` (for now).\n\u003e After you define those values, also set the env var `USE_DASHBOARD_DB` to True, setting the local database as the default one.\n\u003e You can also skip the cloud-proxy on such case.\n\n\n## Deploying to production\n\nTo deploy to prod you need to push a tag in the `release/YYYYMMDD.N` format\nlike: `release/20240910.0`\n\n## Test results email reports\n\nSee details about our new [notifications](docs/notifications.md) system.\n\n## Contributing \n\nThere is an [onboarding guide](docs/Onboarding.md) to help get acquainted with the project.\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkernelci%2Fdashboard","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkernelci%2Fdashboard","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkernelci%2Fdashboard/lists"}