{"id":39154037,"url":"https://github.com/egorantonov/kyber","last_synced_at":"2026-01-17T21:44:49.268Z","repository":{"id":42377605,"uuid":"510694729","full_name":"egorantonov/kyber","owner":"egorantonov","description":"The custom implementation of Star Wars Battlefront 2 private Kyber servers API","archived":false,"fork":false,"pushed_at":"2024-05-01T11:22:18.000Z","size":11062,"stargazers_count":5,"open_issues_count":8,"forks_count":0,"subscribers_count":2,"default_branch":"develop","last_synced_at":"2024-05-02T07:19:00.809Z","etag":null,"topics":["api","battlefront2","javascript","kyber","react","reactjs","starwars","typescript","web"],"latest_commit_sha":null,"homepage":"https://kyber.pages.dev","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/egorantonov.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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":"2022-07-05T10:48:34.000Z","updated_at":"2023-12-21T12:58:17.000Z","dependencies_parsed_at":"2024-03-24T20:48:41.627Z","dependency_job_id":null,"html_url":"https://github.com/egorantonov/kyber","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/egorantonov/kyber","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/egorantonov%2Fkyber","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/egorantonov%2Fkyber/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/egorantonov%2Fkyber/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/egorantonov%2Fkyber/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/egorantonov","download_url":"https://codeload.github.com/egorantonov/kyber/tar.gz/refs/heads/develop","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/egorantonov%2Fkyber/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28518678,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-17T18:55:29.170Z","status":"ssl_error","status_checked_at":"2026-01-17T18:55:03.375Z","response_time":85,"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":["api","battlefront2","javascript","kyber","react","reactjs","starwars","typescript","web"],"created_at":"2026-01-17T21:44:49.143Z","updated_at":"2026-01-17T21:44:49.254Z","avatar_url":"https://github.com/egorantonov.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003ca href=\"https://github.com/egorantonov/sbg-enhanced/actions\"\u003e\u003cimg src=\"https://img.shields.io/github/actions/workflow/status/egorantonov/kyber/node.js.yml?style=for-the-badge\" /\u003e\u003c/a\u003e\n\u003ca href=\"https://kyber.pages.dev\"\u003e\u003cimg src=\"https://img.shields.io/website?label=kyber.pages.dev\u0026style=for-the-badge\u0026url=https%3A%2F%2Fkyber.pages.dev\" /\u003e\u003c/a\u003e\n\u003cimg src=\"https://img.shields.io/github/package-json/v/egorantonov/kyber?style=for-the-badge\" /\u003e\n\u003cimg src=\"https://img.shields.io/github/languages/top/egorantonov/kyber?color=%23200bb20\u0026style=for-the-badge\" /\u003e\n\n- [Overview](#overview)\n- [Features](#features)\n  - [Live updates](#live-updates)\n  - [Configuration section](#configuration-section)\n  - [Internationalization](#internationalization)\n  - [Visual Themes](#visual-themes)\n  - [Mobile View](#mobile-view)\n- [What's Next](#whats-next)\n- [Known Issues](#known-issues)\n- [Documentation](#documentation)\n- [How To Use](#how-to-use)\n  - [Servers](#servers)\n  - [Download](#download)\n  - [Host](#host)\n  - [About](#about)\n  - [Settings](#settings)\n- [Credits](#credits)\n  - [Development](#development)\n  - [Translations](#translations)\n\n# Overview\nThis is an unofficial open-source implementation of the [Kyber API](https://kyber.gg/) with the additional functionality such as live updates, configuration section, internationalization and support for dark/light themes.\nThe project is based on [React](https://reactjs.org/) + [Redux](https://redux.js.org/) + [TypeScript](https://www.typescriptlang.org/) stack.\n\n# Features\nCurrently the original site is missing some crucial features I'd like to see and use for a regular basis.\n\n## Live updates\nWhy do you need to refresh a page to get some new information when the service is based on calling REST API? Let's delegate it to the application itself, but won't forget to leave a manual switch. Remember, we're not an Apple. The application asks Kyber API each 5 seconds to get the most fresh state of available servers to play. I wish [WebSockets](http://tools.ietf.org/html/rfc6455) were here.\n\n\u003cimg src=\"https://user-images.githubusercontent.com/16327320/215355160-fd73f68e-186f-49d9-8fcf-39b7551389ba.jpg\" width=\"500\" /\u003e\n\n## Configuration section\nJust created your own server? What was the password? Is team balancing enabled? Don't you worry. Open [Settings](https://kyber.pages.dev/settings) page and look again. There is a lot of useful information here.\n\n\u003cimg src=\"https://user-images.githubusercontent.com/16327320/215355517-d0f3866f-f18b-4a8c-adf0-a2f13e37f410.jpg\" width=\"500\" /\u003e\n\n## Internationalization\nThe site supports internationalization and already translated in some languages:\n- 🇬🇧 English\n- 🇷🇺 Russian\n- 🇮🇹 Italian\n- 🇫🇷 French\n\n\u003cimg src=\"https://user-images.githubusercontent.com/16327320/215355673-3c378b44-57ea-4ce3-81f6-2a4c5f513fe3.jpg\" width=\"500\" /\u003e\n\nDon't see your language? Please, [create a new issue](https://github.com/egorantonov/kyber/issues/new) and help this project with translations.\n\n## Visual Themes\nLet's bring the balance back. Introducing dark and light theme support. Choose your \u003cstrike\u003eside of the force\u003c/strike\u003e theme on [Settings](https://kyber.pages.dev/settings) page. Moreover, there's an option to use a system (your browser) theme.\n\n\u003cimg src=\"https://user-images.githubusercontent.com/16327320/215355828-8286dcb2-80b3-4be7-9e98-db0c92f1b228.png\" width=\"800\" /\u003e\n\n## Mobile View\nFor some (not obvious for me) reason original site doesn't support mobile view. So you have to `Alt`+`Enter` your active Kyber session to make it framed window, open the browser and share your server's data somewhere in chats. Let's fix this. Usually your phone is on the same local network with your gaming PC, so Kyber only can see your **public IP**. That's why there is no reason not to use your smartphone (tablet/other PC) for Kyber. \n\n\u003cimg src=\"https://user-images.githubusercontent.com/16327320/215356206-3d07aa73-0054-4515-85a4-789651c083de.png\" width=\"800\" /\u003e\n\n# What's Next\nTo be honest current project's state is far from perfect. A lot of work should be done, for instance, I need to:\n1. Implement default functionality such as proxy ping or server sharing. Now the list of available proxies just sorted in alphabetical order, so users have to decide by themselves which proxy is the best for them.\n2. Implement server search and filtering. Nothing special, but really useful.\n3. Rewrite `Configuration` component to match others.\n4. Replace native alerts with application's modal windows.\n5. Split state management logic.\n6. Tune visuals.\n\nSo, don't hesitate to make your own contributions 🙂\n   \n# Known Issues\n1. The modal window on Apple devices (tested on iPhone and iPad) doesn't prevent page scrolling even if `document.body.style.overflowY` set to `hidden`.\n2. For some reason default font have several broken ligature-like  combinations of symbols like `fi` or `fl`. You may have already noticed that problem on the original site. Current workaround is to use capital letters where possible or ligatures (`ﬁ` and `ﬂ`) for lowercase.\n3. Some visual bugs may occur on untested devices and with new translations. For example, when Kyber API is down `Status` message may be shown with a long text, which breaks its markup.\n4. Horizontal mobile view (small height, but wide enough) for `Modal` window is pretty messed up.\n\n# Documentation\nVisit [Wiki](https://github.com/egorantonov/kyber/wiki/Kyber-API-Documentation) page to learn more about Kyber API - endpoints, payload, models, errors, etc.\n\n# How To Use\n\n## Servers\nMain page with a servers list.\n\n## Download\nDownload Kyber client.\n\n## Host\nCreate your own Kyber server.\n\n## About\nSome information about this project.\n\n## Settings\nSettings page with theme switch and your Kyber configuration\n\n# Credits\n\n## Development\nKyber API: [@BattleDash](https://github.com/battledash)\n\n## Translations\n- 🇮🇹 Italian: Wall, [@SaraGiamb](https://github.com/SaraGiamb)\n- 🇫🇷 French: KidRatMole\n- 🇷🇺 Russian: [EYEMVX](https://github.com/egorantonov)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fegorantonov%2Fkyber","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fegorantonov%2Fkyber","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fegorantonov%2Fkyber/lists"}