{"id":51470283,"url":"https://github.com/manucabral/rl-overlay-hub","last_synced_at":"2026-07-06T16:30:47.661Z","repository":{"id":355652658,"uuid":"1228398909","full_name":"manucabral/rl-overlay-hub","owner":"manucabral","description":"Community-driven Rocket League overlay hub for OBS and streaming, powered by HTML/CSS/JS overlays and rlstatsapi.","archived":false,"fork":false,"pushed_at":"2026-05-04T18:03:23.000Z","size":3115,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-05-04T18:04:18.058Z","etag":null,"topics":["broadcast","community","css","esports","html","javascript","obs","rlstatsapi","rocket-league","stream-overlay","streaming"],"latest_commit_sha":null,"homepage":"https://manucabral.github.io/rl-overlay-hub/","language":"Python","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/manucabral.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","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":"2026-05-04T01:13:26.000Z","updated_at":"2026-05-04T18:03:27.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/manucabral/rl-overlay-hub","commit_stats":null,"previous_names":["manucabral/rl-overlay-hub"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/manucabral/rl-overlay-hub","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/manucabral%2Frl-overlay-hub","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/manucabral%2Frl-overlay-hub/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/manucabral%2Frl-overlay-hub/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/manucabral%2Frl-overlay-hub/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/manucabral","download_url":"https://codeload.github.com/manucabral/rl-overlay-hub/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/manucabral%2Frl-overlay-hub/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":35199358,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-07-06T02:00:07.184Z","response_time":106,"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":["broadcast","community","css","esports","html","javascript","obs","rlstatsapi","rocket-league","stream-overlay","streaming"],"created_at":"2026-07-06T16:30:46.782Z","updated_at":"2026-07-06T16:30:47.642Z","avatar_url":"https://github.com/manucabral.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cimg width=\"600\" alt=\"rlstatsapi-logo\" src=\"https://github.com/manucabral/rl-overlay-hub/blob/main/assets/social-preview.png\" /\u003e\n\n# RL Overlay Hub\n[![Code style: black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/psf/black)\n[![Downloads](https://img.shields.io/github/downloads/manucabral/rl-overlay-hub/total)](https://github.com/manucabral/rl-overlay-hub/releases)\n[![Version](https://img.shields.io/badge/version-0.1.0-blue)](https://github.com/manucabral/rl-overlay-hub/releases)\n[![License](https://img.shields.io/github/license/manucabral/rl-overlay-hub)](https://github.com/manucabral/rl-overlay-hub/blob/main/LICENSE)\n\nDesktop app that connects Rocket League to OBS browser-source overlays, no coding required to get started.\n\nRL Overlay Hub reads live game data from Rocket League through `rlstatsapi`, runs a local web server, and pushes match events to your HTML overlays in real time through WebSocket.\n\nIt is designed for streamers, overlay creators, and developers who want Rocket League overlays for OBS without having to build their own game-data bridge.\n\n\u003cimg width=\"783\" alt=\"appdemo\" src=\"https://github.com/user-attachments/assets/3afad7be-5db7-495a-856d-7cb36ddf4db1\" /\u003e\n\n\n## How it works\n\n```text\nRocket League → RL Overlay Hub → WebSocket → HTML Overlay → OBS Browser Source\n```\n\nThe hub reads live match data, serves your overlays locally, and sends events such as goals, replays, stat updates, match lifecycle changes, and session totals.\n\nOverlay URLs look like this:\n\n```text\nhttp://127.0.0.1:49100/overlay/\u003coverlay-id\u003e/\n```\n\n\n\n## Download\n\nThe latest release is available in the [Releases](https://github.com/manucabral/rl-overlay-hub/releases) section.\n\nNo Python setup is required. Just install and run.\n\n\n## What it does\n\n- Runs as a local desktop app on Windows\n- Starts an embedded FastAPI server\n- Serves installed HTML/CSS/JS overlays over HTTP\n- Pushes live Rocket League events through WebSocket\n- Provides a small JavaScript client at `/overlay-api.js`\n- Includes Preview Mode for testing overlays without Rocket League running\n- Supports local overlays and a community overlay registry\n- Works with OBS Browser Sources\n\n\n\n### Requirements\n\n- Windows\n- Rocket League\n- OBS Studio, if you want to use overlays on stream\n\n---\n\n## Documentation\n\nFull guides and API reference are available here:\n\n**[manucabral.github.io/rl-overlay-hub](https://manucabral.github.io/rl-overlay-hub/)**\n\n| Page | What it covers |\n|------|----------------|\n| [Quick Start](https://manucabral.github.io/rl-overlay-hub/quickstart/) | Get your first overlay running |\n| [JavaScript API](https://manucabral.github.io/rl-overlay-hub/api/) | Events and state your overlay can use |\n| [State Reference](https://manucabral.github.io/rl-overlay-hub/state/) | Full game state object structure |\n| [Event Snippets](https://manucabral.github.io/rl-overlay-hub/examples/event-snippets/) | Copy-paste code examples |\n\n---\n\n## Create your first overlay\n\n1. Copy `creator-template/` into your installed overlays folder:\n\n   ```text\n   C:\\Users\\\u003cyou\u003e\\.rl-overlay-hub\\overlays\\installed\\\n   ```\n\n2. Edit `manifest.json`.\n\n   At minimum, set:\n\n   ```json\n   {\n     \"id\": \"my-overlay\",\n     \"name\": \"My Overlay\",\n     \"author\": \"YourName\"\n   }\n   ```\n\n3. Open RL Overlay Hub.\n\n4. Go to the **Overlays** tab.\n\n5. Enable **Preview Mode** to test without Rocket League running.\n\n6. Open your overlay in a browser or add it to OBS as a Browser Source:\n\n   ```text\n   http://127.0.0.1:49100/overlay/\u003coverlay-id\u003e/\n   ```\n\n\n## Development workflow\n\nWhen building an overlay, you can:\n\n- Use the **Preview** tab to simulate Rocket League events\n- Open the overlay in a normal browser while editing\n- Reload manually after changing HTML, CSS, or JavaScript\n- Use the **Live** tab to inspect real match data\n- Use the **Logs** tab to debug connection or event issues\n\nThe shared JavaScript API is served at:\n\n```text\nhttp://127.0.0.1:49100/overlay-api.js\n```\n\n\n## Run from source\n\nFor contributors and advanced users.\n\n### Requirements\n\n- Python `3.12+`\n- Windows\n- Rocket League\n\nCreate a virtual environment and install the project:\n\n```powershell\npy -3.12 -m venv .venv\n.\\.venv\\Scripts\\Activate.ps1\npython -m pip install --upgrade pip\npython -m pip install -e \".[dev]\"\n```\n\nRun the desktop app:\n\n```powershell\npython run.py\n```\n\nThe hub will open its desktop window and start the local server, usually at:\n\n```text\nhttp://127.0.0.1:49100\n```\n\n\n## Run tests\n\n```powershell\npython -m pytest\n```\n\n\n## Run docs locally\n\n```powershell\npython -m pip install -r docs\\requirements.txt\npython -m mkdocs serve\n```\n\nGitHub Pages deploys from the `gh-pages` branch using the workflow in:\n\n```text\n.github/workflows/docs.yml\n```\n\n\n\n## Community overlays\n\nCommunity overlays are submitted through the `community-overlays/` folder.\n\nEach overlay should include a `manifest.json` file with basic metadata:\n\n```json\n{\n  \"id\": \"my-overlay\",\n  \"name\": \"My Overlay\",\n  \"version\": \"1.0.0\",\n  \"author\": \"YourName\",\n  \"description\": \"A brief description of what your overlay does.\",\n  \"entry\": \"index.html\",\n  \"preview\": \"preview.png\"\n}\n```\n\nSubmitted overlays should be reviewed before being added to the community registry.\n\n\n## Contributing\n\nSee [CONTRIBUTING.md](https://github.com/manucabral/rl-overlay-hub/blob/main/CONTRIBUTING.md) for app, documentation, and community overlay contribution guidelines.\n\n## Contributors\nPeople who contribute to the development, maintenance, and improvement of the application.\n\n\u003ca href=\"https://github.com/manucabral/rl-overlay-hub/graphs/contributors\"\u003e\n  \u003cimg src=\"https://contrib.rocks/image?repo=manucabral/rl-overlay-hub\" /\u003e\n\u003c/a\u003e\n\n## License\nThis project is licensed under the MIT License. See the [LICENSE](LICENSE) file for details.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmanucabral%2Frl-overlay-hub","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmanucabral%2Frl-overlay-hub","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmanucabral%2Frl-overlay-hub/lists"}