{"id":49537797,"url":"https://github.com/splo/bevy-remote-playground","last_synced_at":"2026-05-02T12:31:11.817Z","repository":{"id":353827525,"uuid":"1193709787","full_name":"splo/bevy-remote-playground","owner":"splo","description":"Web application for interacting with Bevy Remote Protocol through WASM.","archived":false,"fork":false,"pushed_at":"2026-04-25T18:41:47.000Z","size":28501,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-04-25T20:14:49.373Z","etag":null,"topics":["bevy","wasm"],"latest_commit_sha":null,"homepage":"https://splo.github.io/bevy-remote-playground/","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/splo.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE-APACHE","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":"2026-03-27T13:56:57.000Z","updated_at":"2026-04-25T18:41:52.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/splo/bevy-remote-playground","commit_stats":null,"previous_names":["splo/bevy-remote-playground"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/splo/bevy-remote-playground","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/splo%2Fbevy-remote-playground","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/splo%2Fbevy-remote-playground/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/splo%2Fbevy-remote-playground/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/splo%2Fbevy-remote-playground/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/splo","download_url":"https://codeload.github.com/splo/bevy-remote-playground/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/splo%2Fbevy-remote-playground/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32534964,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-02T12:25:33.646Z","status":"ssl_error","status_checked_at":"2026-05-02T12:24:51.733Z","response_time":132,"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":["bevy","wasm"],"created_at":"2026-05-02T12:31:11.196Z","updated_at":"2026-05-02T12:31:11.799Z","avatar_url":"https://github.com/splo.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# \u003cimg alt=\"Bevy Remote Playground Logo\" src=\"./public/icon.svg\" width=\"32\"\u003e Bevy Remote Playground\n\nA small web UI for running [Bevy](https://bevy.org/) WebAssembly applications in the browser and interacting with them through the [Bevy Remote Protocol](https://docs.rs/bevy/latest/bevy/remote/) (BRP). Applications require the [Bevy Remote WASM](https://github.com/splo/bevy_remote_wasm) plugin.\n\n## Usage\n\nOpen the published site: \u003chttps://splo.github.io/bevy-remote-playground\u003e.\n\nYou’ll land on a launcher with two options:\n\n- Demo: this loads the [demo](./demo/) Bevy WASM app.\n- Custom: this allows to load your own app.\n\n### Custom App Requirements\n\nTo load your own app:\n\n1. Ensure your Bevy application is correctly built:\n    1. In your `Cargo.toml` dependencies, include `bevy_remote_wasm` and `bevy_remote`\n    with default features disabled to avoid the `bevy_remote/http` feature (which doesn't build on WASM).\n    2. Add the `RemotePlugin` and `RemoteWasmPlugin` plugins to your Bevy app.\n    3. Ensure the `rpc.discover` remote method is enabled, which is the case with `RemotePlugin::default()`.\n    4. Build your app for the `wasm32-unknown-unknown` target.\n    5. Generate the JS bindings using `wasm-bindgen --target web` (directly or via tools like `wasm-pack` or `trunk`). See the [docs](https://wasm-bindgen.github.io/wasm-bindgen/). You'll obtain files including a `.js` and a `_bg.wasm`.\n2. In the launcher page, select **Custom** and provide the `.js` and `.wasm` files.\n3. If your Bevy application specifies a canvas (`WindowPlugin { primary_window: Some(Window { canvas: Some(\"#my-bevy-canvas\".to_string()) }) }`), enter it in the dedicated field.\n4. Click **Load**.\n\n## Development\n\nThis is a [Vite](https://vite.dev/) + [React](https://react.dev/) + [TypeScript](https://www.typescriptlang.org/) + [shadcn/ui](https://ui.shadcn.com/) + [Tailwind](https://tailwindcss.com/) web application.\n\nThe code is split between the `demo` Bevy application and the `web` UI.\n\n### Setup\n\nRequirements:\n\n- [Node.js](https://nodejs.org/).\n- [Rust](https://rustup.rs/).\n- [wasm-bindgen](https://github.com/wasm-bindgen/wasm-bindgen).\n\nInstall dependencies:\n\n```bash\nnpm install\n```\n\n### Run Development Server\n\n```bash\nnpm run watch\n```\n\n- Starts a Vite server serving the web UI.\n- Builds the demo for `wasm32-unknown-unknown`, runs `wasm-bindgen` into `public/wasm`, and watches the Rust sources so updates to the demo source automatically rebuild the demo WASM.\n\n### Check and Lint\n\n```bash\nnpm run check\n```\n\nThis runs TypeScript type-checking and ESLint in check-only mode.\n\nApply ESLint fixes:\n\n```bash\nnpm run lint\n```\n\n### Preview the Production Build Locally\n\n```bash\nnpm run preview\n```\n\n### Build for Production\n\n```bash\nnpm run build\n```\n\nThis builds the demo WASM files then the web UI files into a `dist/` directory ready for production deployment.\n\nVite copies files from `public/` into `dist/`, including the demo WASM files.\n\n### Clean Generated Files\n\n```bash\nnpm run clean\n```\n\n### shadcn/ui\n\nUse the shadcn/ui CLI to interact with the UI component library:\n\n```bash\nnpx shadcn@latest info\n```\n\n### Project layout\n\n- `demo/`: Bevy WASM demo application.\n- `src/`: React application entrypoint and styles.\n- `src/lib/`: Canvas and BRP integration utilities. [`useBrp.ts`](./src/lib/useBrp.ts) defines a somewhat reusable React function that allows to easily load the typed BRP bridge object.\n- `src/components/`: Playground and launcher UI components.\n- `src/components/ui/`: Reusable shadcn/ui primitives, managed by the `shadcn/ui` CLI.\n\n### GitHub Actions\n\n- On pushes and pull requests, run CI check and build tasks.\n- On Git tags matching `v*`, build `dist/`, uploads it as a Pages artifact, and deploys it with GitHub Pages.\n\nThe GitHub Pages deployment workflow sets `VITE_BASE_PATH` from the `base_path` output of `actions/configure-pages`, and Vite reads that environment variable in its config so project-site deployments generate asset URLs under the correct repository path automatically.\n\n### License\n\nDual-licensed under Apache-2.0 and MIT. See `LICENSE-APACHE` and `LICENSE-MIT`.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsplo%2Fbevy-remote-playground","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsplo%2Fbevy-remote-playground","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsplo%2Fbevy-remote-playground/lists"}