{"id":18729757,"url":"https://github.com/beyond-all-reason/bar-lobby","last_synced_at":"2025-10-03T19:03:06.592Z","repository":{"id":37244771,"uuid":"421615562","full_name":"beyond-all-reason/bar-lobby","owner":"beyond-all-reason","description":"BAR Lobby Client","archived":false,"fork":false,"pushed_at":"2025-04-04T16:05:55.000Z","size":129902,"stargazers_count":43,"open_issues_count":57,"forks_count":45,"subscribers_count":7,"default_branch":"master","last_synced_at":"2025-04-05T17:04:48.042Z","etag":null,"topics":["electron","gaming","typescript","vue"],"latest_commit_sha":null,"homepage":"https://beyond-all-reason.github.io/bar-lobby/","language":"Vue","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/beyond-all-reason.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"license.txt","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":"2021-10-26T23:37:02.000Z","updated_at":"2025-04-02T18:26:56.000Z","dependencies_parsed_at":"2023-10-15T11:16:10.775Z","dependency_job_id":"b3503a28-ff64-4ab3-87a3-80c6ca217694","html_url":"https://github.com/beyond-all-reason/bar-lobby","commit_stats":null,"previous_names":[],"tags_count":33,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/beyond-all-reason%2Fbar-lobby","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/beyond-all-reason%2Fbar-lobby/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/beyond-all-reason%2Fbar-lobby/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/beyond-all-reason%2Fbar-lobby/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/beyond-all-reason","download_url":"https://codeload.github.com/beyond-all-reason/bar-lobby/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247478321,"owners_count":20945266,"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","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":["electron","gaming","typescript","vue"],"created_at":"2024-11-07T14:28:36.060Z","updated_at":"2025-10-03T19:03:06.586Z","avatar_url":"https://github.com/beyond-all-reason.png","language":"Vue","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003c!--\nSPDX-FileCopyrightText: 2025 The BAR Lobby Authors\n\nSPDX-License-Identifier: CC0-1.0\n--\u003e\n\n# BAR Lobby\n\nBAR Lobby is a new WIP lobby for the RTS game [Beyond All Reason](https://www.beyondallreason.info/). It hopes to boldly go where no Spring client has gone before, providing a more streamlined experience, with good visuals and UX being high priority. The ultimate goal of BAR Lobby is to replace all other lobbies when it comes to playing BAR. If a significant amount of people don't wish to use it because of reasons such as functionality or speed, then this project is going very wrong.\n\n![image](https://user-images.githubusercontent.com/1434248/223881325-bb8ac4f5-ed14-4ad8-ad33-970781cf3089.png)\n\n## Project Status\n\nBAR Lobby is a work-in-progress and actively developed project. We are currently working towards milestones defined in the [wiki/Roadmap](https://github.com/beyond-all-reason/bar-lobby/wiki/Roadmap).\n\nBAR Lobby is an important part of [BAR's Steam Roadmap](https://www.beyondallreason.info/development/steam-release), and there is a lot of other work in other places that support this development. Please take a look at the [infrastructure documentation](https://beyond-all-reason.github.io/infrastructure/new_client/) for details on how BAR Lobby fits into the rest of the system.\n\n## Functionality and Goals\n\n- Provide functionality for everything related to BAR. Campaigns, Missions, Multiplayer, Replays etc\n- Simple and intutive codebase, lots of documenation for contributing\n- Steam integration, automatic account creation and login\n- Smooth, seemless, fully integrated downloads. Content should be preloaded when sensible\n- Communicate entirely via Teiserver's new protocol, [Tachyon](https://github.com/beyond-all-reason/teiserver/tree/master/documents/tachyon). No support for the legacy SpringLobbyProtocol\n- TLS only, no unencypted comms\n\n## Contributing\n\nPlease take a look at the [contributing guide](CONTRIBUTING.md) to learn how to help the project.\n\n## Development\n\n### Primary Tech Stack\n\n- [Electron](https://www.electronjs.org/)\n- [Vue 3](https://v3.vuejs.org/)\n- [TypeScript](https://www.typescriptlang.org/)\n- [SCSS](https://sass-lang.com/)\n- [PrimeVue Components](https://primevue.org/datatable)\n\n### Recommended Environment\n\nIt is highly recommended to use [VSCode](https://code.visualstudio.com/) for development, as it provides full, built-in TypeScript support, as well as useful extensions such as [ESLint](https://marketplace.visualstudio.com/items?itemName=dbaeumer.vscode-eslint) and [Vue - Official (previously Volar)](https://marketplace.visualstudio.com/items?itemName=vue.volar).\n\n### Requirements\n\n- [Node.js 22.18.0](https://nodejs.org/en/download/)\n\nWe recommend tools management software like [NVM](https://github.com/nvm-sh/nvm) or [mise-en-place](https://mise.jdx.dev/) for installation of the correct node version.\n\n### Local Development\n\n```bash\nnpm install\nnpm start\n```\n\n### Project Structure\n\n```\n.\n├──buildResources   # used by electron-builder\n├──src\n│  ├──main\n│  │  ├──main.ts\n│  │  └──...\n│  ├──preload\n│  │  ├──preload.ts\n│  │  └──...\n│  └──renderer      # with vue\n│     ├──public     # (optional) publicDir for renderer\n│     ├──index.ts\n│     ├──index.html\n│     └──...\n├──electron-builder.config.ts\n├──electron.vite.config.ts\n├──package.json\n└──...\n```\n\n- [**Main process**](https://www.electronjs.org/docs/latest/tutorial/process-model#the-main-process)\n    - Runs in a Node.js environment and has access to Node.js APIs\n    - Anything requiring access to the operating system or Node.js APIs needs to live here\n- [**Preload script**](https://www.electronjs.org/docs/latest/tutorial/process-model#preload-scripts)\n    - Runs in a Node.js environment\n    - Defines global objects that can be used in the renderer\n    - Handles communication between the main and renderer processes\n        - Uses Electron's ipcMain and ipcRenderer modules for inter-process communication (IPC).\n- [**Renderer process**](https://www.electronjs.org/docs/latest/tutorial/process-model#the-renderer-process)\n    - Runs in a web environment and has **no** direct access to Node.js APIs\n\n### Build \u0026 Publish\n\n- [`electron-forge`](https://www.electronforge.io/config/plugins/vite)\n    - Builds the app with a pre-configured Vite setup for Electron apps\n    - This intentionally does not include `electron` or any other `node_modules` dependencies in the build\n        - Dependencies get added to the package by `electron-builder` with ASAR\n        - Note: apps that only have CJS exports need to be included in the build, e.g. `glob-promise`\n- [`electron-builder`](https://www.electron.build/)\n    - Packages Electron app for distribution\n        - Configured for Windows NSIS installer and Linux AppImage\n    - Handles publishing updates\n        - Auto-updates TBD\n\n### Commands\n\n- `npm start`\n    - Runs `electron-forge` in `development` mode\n    - **renderer** runs with Hot Module Replacement (HMR)\n    - **main** and **preload** are directly bundled to `.vite/build`\n- `npm run package`\n    - Runs `electron-forge` in `production` mode\n    - **renderer** is bundled to `.vite/renderer`\n    - **main** and **preload** are bundled to `.vite/build`\n    - This should be run before any of the `npm run build` commands below.\n- `npm run preview`\n    - Runs `electron-forge` in `production` mode, and runs electron\n    - **main**, **preload**, and **renderer** are bundled to `.vite/build`\n    - This is useful for validating the `production` build without packaging the app\n- `npm run build:win`\n    - Runs `npm run build` and `electron-builder`, building for Windows\n    - Outputs NSIS installer in `dist`\n- `npm run buildall:win`\n    - Runs `npm run package` then runs `npm run build:win`.\n- `npm run build:linux`\n    - Runs `npm run build` and `electron-builder`, building for Linux\n    - Outputs AppImage executable in `dist`\n- `npm run buildall:linux`\n    - Runs `npm run package` then runs `npm run build:linux`.\n- `npm run build:unpack`\n    - Runs `npm run build` and `electron-builder`, building an unpackaged directory\n    - Outputs the unpacked contents in `dist`\n    - Useful for testing\n- `npm run dev-cert` (optional and only for Windows development)\n    - Runs `electron-builder` to create a self-signed cert for Windows apps.\n    - After selecting \"None\" in the pop-up, a cert file should be created called `BAR Team.pfx`\n    - Then run `npm run build:win:dev-cert` to build a signed Windows installer\n- `npm run generate-i18n-assets` (run when modifying source translation files)\n    - Generates transformed asset files for translations in `src/renderer/assets/languages`\n\n### Mutliplayer\n\nYou can start multiple separate instances by overriding the assets and/or state location using env variables:\n\n```\nBAR_STATE_PATH=state-2 npm start\nBAR_ASSETS_PATH=assets-3 BAR_STATE_PATH=state-3 npm start\n```\n\nAt time of writing, the [production server (server4)](https://server4.beyondallreason.info/) isn't setup for the new client. You need\nto enable dev mode in the settings, and then, in the dev settings, choose [server5](https://server5.beyondallreason.info/) which is closer to the production\nserver, or the [dev server](https://lobby-server-dev.beyondallreason.dev/) where you can create test accounts.\n\n### License\n\n[![REUSE status](https://api.reuse.software/badge/github.com/beyond-all-reason/bar-lobby)](https://api.reuse.software/info/github.com/beyond-all-reason/bar-lobby)\n\nPlease see the [LICENSE.md](LICENSE.md) file for details on the license of this project.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbeyond-all-reason%2Fbar-lobby","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbeyond-all-reason%2Fbar-lobby","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbeyond-all-reason%2Fbar-lobby/lists"}