{"id":19184043,"url":"https://github.com/cryostatio/cryostat-web","last_synced_at":"2025-09-07T01:34:01.454Z","repository":{"id":37072645,"uuid":"184660132","full_name":"cryostatio/cryostat-web","owner":"cryostatio","description":"Web front-end for Cryostat: Secure JDK Flight Recorder management for containerized JVMs","archived":false,"fork":false,"pushed_at":"2025-08-28T13:29:58.000Z","size":14343,"stargazers_count":11,"open_issues_count":92,"forks_count":19,"subscribers_count":5,"default_branch":"main","last_synced_at":"2025-08-28T20:42:25.599Z","etag":null,"topics":["cryostat","hacktoberfest","hacktoberfest2021","kubernetes","openshift","patternfly","react"],"latest_commit_sha":null,"homepage":"https://cryostat.io/","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/cryostatio.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":".github/CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2019-05-02T22:21:05.000Z","updated_at":"2025-08-28T13:26:22.000Z","dependencies_parsed_at":"2023-09-27T19:14:25.478Z","dependency_job_id":"80fd13b0-354d-4bba-855e-e3d2d26ae634","html_url":"https://github.com/cryostatio/cryostat-web","commit_stats":null,"previous_names":[],"tags_count":47,"template":false,"template_full_name":null,"purl":"pkg:github/cryostatio/cryostat-web","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cryostatio%2Fcryostat-web","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cryostatio%2Fcryostat-web/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cryostatio%2Fcryostat-web/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cryostatio%2Fcryostat-web/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/cryostatio","download_url":"https://codeload.github.com/cryostatio/cryostat-web/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cryostatio%2Fcryostat-web/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":273986614,"owners_count":25202704,"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-09-06T02:00:13.247Z","response_time":2576,"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":["cryostat","hacktoberfest","hacktoberfest2021","kubernetes","openshift","patternfly","react"],"created_at":"2024-11-09T11:05:59.438Z","updated_at":"2025-09-07T01:34:01.406Z","avatar_url":"https://github.com/cryostatio.png","language":"TypeScript","readme":"# cryostat-web\n\n[![CI](https://github.com/cryostatio/cryostat-web/actions/workflows/ci.yaml/badge.svg)](https://github.com/cryostatio/cryostat-web/actions/workflows/ci.yaml)\n[![Google Group : Cryostat Development](https://img.shields.io/badge/Google%20Group-Cryostat%20Development-blue.svg)](https://groups.google.com/g/cryostat-development)\n\nWeb front-end for [Cryostat](https://github.com/cryostatio/cryostat), providing a graphical user interface for managing JFR on remote JVMs.\n\nBased on [Patternfly React Seed](https://github.com/patternfly/patternfly-react-seed).\n\n## SEE ALSO\n\n* [cryostat-core](https://github.com/cryostatio/cryostat-core) for\nthe core library providing a convenience wrapper and headless stubs for use of\nJFR using JDK Mission Control internals.\n\n* [cryostat-operator](https://github.com/cryostatio/cryostat-operator)\nfor an OpenShift Operator facilitating easy setup of Cryostat in your OpenShift\ncluster as well as exposing the Cryostat API as Kubernetes Custom Resources.\n\n* [cryostat](https://github.com/cryostatio/cryostat) for the JFR management service.\n\n## REQUIREMENTS\n\n- Node v20+\n- Yarn v3.3.0+\n\n## BUILD\n\n### Setup dependencies\n\n```bash\n$ yarn install --immutable\n```\n\n### Run a production build\n\n```bash\n$ yarn build\n# or without tests\n$ yarn build:notests\n```\n\n## DEVELOPMENT SERVER\n\nDevelopment environment supports hot reload with Webpack's [Hot Module Replacement](https://webpack.js.org/guides/hot-module-replacement).\n\n### With Cryostat\n\nFirst, launch a [`Cryostat`](https://github.com/cryostatio/cryostat) instance:\n```bash\n$ cd /path/to/cryostat\n$ bash smoketest.bash\n```\n\nThen, run:\n\n```bash\n# To configure the URL pointing to Cryostat, set CRYOSTAT_PROXY_URL\n# By default, CRYOSTAT_PROXY_URL is set to https://localhost:8443\n$ yarn start:dev\n# or without TLS\n$ CRYOSTAT_PROXY_URL=http://localhost:8080 yarn start:dev\n```\n\nThe dev server will proxy API requests to Cryostat and Grafana.\n\n### Without Cryostat\n\nTo quickly preview changes without launching a `Cryostat` instance, run:\n\n```bash\n$ yarn start:dev:preview\n```\n\nIn this case, API requests are intercepted and handled by [Mirage JS](https://miragejs.com/).\n\n## TEST\n\n### Run the unit tests\n```bash\n$ yarn test\n```\n\n### Run the integration tests\n```bash\n$ yarn itest:preview\n```\n\nRefer to [TESTING.md](TESTING.md) for more details about tests.\n\n### Run the linter\n[ESLint](https://eslint.org/) is a linter that checks for code quality and style. Configuration can be found in `.eslintrc`.\n\nThe `ESLint` job runs on every pull request, and will fail if there are any ESLint errors. Warnings will not fail the job.\n\nTo fix this, run:\n```bash\n$ yarn eslint:apply\n```\nYou can also run `yarn eslint:check` to see if there are any ESLint issues without applying the fixes.\n\nTo run a development server with ESLint enabled in hot-reload mode, run:\n```bash\n$ yarn start:dev:lint\n```\n\nWith this command, ESLint will run on every file change, and will show ESLint errors/warnings in the terminal.\n\n### Run the code formatter\n\nPrettier is a code formatter that makes sure that all code is formatted the same way. Configuration can be found in `.prettierrc`. There is a `prettierignore` file that tells Prettier to ignore certain files. \n\nThe license header checking job makes sure that all files have the correct license header. The npm package can be found [here](https://www.npmjs.com/package/license-check-and-add). The license header can be found in `LICENSE`. The `license-check-and-add` configuration can be found in `license-config.json`.\n\nThe `Format` job runs on every pull request, and will fail if the code is not formatted correctly, or if some licenses have not been added to some files. \n\nTo fix this, format the code:\n```bash\n$ yarn format:apply\n``` \nYou can also run `yarn format:check` to see if there are any formatting issues without applying the formatting.\n\n### Inspect the bundle size\n\n```bash\n$ yarn bundle-profile:analyze\n```\n\n## LOCALIZATION\n\nTo generate translation entries for texts in the app, run:\n\n```bash\n$ yarn localize\n```\n\nThe extraction tool is [`i18next-parser`](https://www.npmjs.com/package/i18next-parser), which statically finds and exports translation entries, meaning `i18next-parser` does not run code and requires explicit values. See more [details](https://github.com/i18next/i18next-parser#caveats\n).\n\nTo workaround this, specify static values in `i18n.ts` file under any top-level directory below `src/app`. For example, `src/app/Settings/i18n.ts`.\n\nRefer to [LOCALIZATION.md](LOCALIZATION.md) for more details about our localization framework.\n\n## CONTRIBUTING\n\n### Code consistency\n\n- `[*].types.ts(x)`: Define type definitions, including types and enums.\n- `[*].utils.ts(x)`: Define utility functions. These might contain constants (usually tightly coupled with the utility functions).\n- `[*].const.ts`: Define constants. These constants are purely for UI rendering.\n- `[*].context.tsx`: Define React contexts. These can be defined in util files.\n\n### Code contribution\n\nSee [CONTRIBUTING.md](https://github.com/cryostatio/cryostat/blob/main/CONTRIBUTING.md).\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcryostatio%2Fcryostat-web","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcryostatio%2Fcryostat-web","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcryostatio%2Fcryostat-web/lists"}