{"id":49576531,"url":"https://github.com/solzarr/onyx-interface","last_synced_at":"2026-05-03T17:31:21.727Z","repository":{"id":323754309,"uuid":"1070196169","full_name":"solzarr/onyx-interface","owner":"solzarr","description":"onyx-interface","archived":false,"fork":false,"pushed_at":"2025-10-17T22:15:59.000Z","size":14667,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"master","last_synced_at":"2025-11-12T00:11:55.718Z","etag":null,"topics":["css","dockerfile","html","javascript","scss","typescript"],"latest_commit_sha":null,"homepage":"","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/solzarr.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,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-10-05T13:16:15.000Z","updated_at":"2025-10-25T18:43:04.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/solzarr/onyx-interface","commit_stats":null,"previous_names":["solzarr/onyx-interface"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/solzarr/onyx-interface","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/solzarr%2Fonyx-interface","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/solzarr%2Fonyx-interface/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/solzarr%2Fonyx-interface/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/solzarr%2Fonyx-interface/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/solzarr","download_url":"https://codeload.github.com/solzarr/onyx-interface/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/solzarr%2Fonyx-interface/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32578577,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-03T06:36:36.687Z","status":"ssl_error","status_checked_at":"2026-05-03T06:36:09.306Z","response_time":103,"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":["css","dockerfile","html","javascript","scss","typescript"],"created_at":"2026-05-03T17:31:20.973Z","updated_at":"2026-05-03T17:31:21.722Z","avatar_url":"https://github.com/solzarr.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Onyx Protocol\n\n## WARNING FOR CONTRIBUTORS\n\nThe Onyx protocol interface is currently being redesigned. At the moment our priorities are\nrefactoring and completing the new site design. We can't guarantee a timely response to unsolicited\npull requests that are not on our roadmap.\n\n## Quick Installation \u0026 Start\n\nInstall [make](https://www.npmjs.com/package/make) and [husky](https://www.npmjs.com/package/husky)\nglobally:\n\n```sh\nnpm i make -g \u0026\u0026 npm i husky -g \u0026\u0026 husky install\n```\n\nInstall dependencies\n\n```sh\nyarn\n```\n\nPrepare local environment:\n\n```\ncp .env.template .env\n```\n\n## Requirements and Configuration\n\nYou’ll need to have Node \u003e16 or later version on your local development machine\n\n## Deployment\n\nTo deploy, raise a PR to update image and config at: https://github.com/OnyxProtocol/onyx-k8s-app\n\n## Local Development\n\nTo run local development:\n\n```\nyarn start\n```\n\nTo run local storybook:\n\n```\nyarn storybook\n```\n\nTo run dev environment:\n\n```\ndocker compose up onyx-ui-dev\n```\n\nTo run prod environment:\n\n```\ndocker compose build \u0026\u0026 docker compose up onyx-ui-prod\n```\n\n## Testing\n\nTests run in CI on push using Github actions. They are all required to pass.\n\n### Typescript\n\nTypes are checked by running `tsc`.\n\n### Code Style\n\nWe are enforcing code styles using eslint, prettier and stylelint.\n\n### Visual Regression Tests\n\nVisual regressions tests are run by snapshoting storybooks and running diffs against the previous\nbaseline and the new snapshots. A unique story is required to test visual regressions on different\nprop variations.\n\nIf regressions are detected or a new story is added on a PR a review is required after the last\ncommit is pushed. If a new commit is pushed after the PR is approved, it will reset the approval for\nthe new baseline and a new review will be required in order for it to be accepted.\n\n### Internationalization\n\nWe use [i18next](https://react.i18next.com/) to translate the app. All the translations are stored\ninside [src/assets/translation](src/assets/translations). This means all texts within the app need\nto be rendered using the `t` function, returned by `useTranslation`:\n\n```tsx\nimport { useTranslation } from 'translation';\n\nconst Component: React.FC = () =\u003e {\n  const { t } = useTranslation();\n\n  return \u003c\u003e{t('componentName.textKey')}\u003c/\u003e;\n};\n```\n\nIf a text contains HTML or JSX elements, then the `Trans` component can be used instead:\n\n```tsx\nimport { useTranslation } from 'translation';\n\nconst Component: React.FC = () =\u003e {\n  const { Trans } = useTranslation();\n\n  return (\n    \u003cTrans i18nKey=\"componentName.textKey\" components={{ Anchor: \u003ca href=\"https://acme.com\" /\u003e }} /\u003e\n  );\n};\n```\n\nIf a text needs to be accessed from outside of a component, then the `t` function exported by the\ntranslation client can be used:\n\n```tsx\nimport { t } from 'translation';\n\nconst myFunction () =\u003e t('functionName.textKey');\n```\n\nNote that this should only be used in cases where we can't use `useTranslation`. The hook does extra\nprocessing, hence why it is preferred in all other cases.\n\nAfter adding internationalized texts within the app using the methods described, you'll need to\nextract the translation keys from the code using the next command:\n\n```sh\nyarn extract-translation-keys\n```\n\nThe new translations will be added to the relevant translation file (e.g.:\n[src/assets/translation/en.json](src/assets/translations/en.json)) with a default text, which you'll\nneed to update with the content you want.\n\n### Automatic contract types\n\nWe use [TypeChain](https://github.com/dethcrypto/TypeChain) to automatically generate types for our\ncontracts, using their ABIs located at `src/constants/contracts/abis`.\n\nNote that the types aren't committed to the repo, since they are rebuilt every time TypeChain\ngenerates them. Instead, they are automatically generated upon installing dependencies. You will\nfind them at `src/types/contracts`.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsolzarr%2Fonyx-interface","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsolzarr%2Fonyx-interface","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsolzarr%2Fonyx-interface/lists"}