{"id":50720136,"url":"https://github.com/legerycheese/vrhub","last_synced_at":"2026-06-09T23:01:53.040Z","repository":{"id":329723691,"uuid":"1118533029","full_name":"LeGeRyChEeSe/VRHub","owner":"LeGeRyChEeSe","description":"Your VR Library, Your Server. Browse, download, install VR games on Meta Quest. No PC required.","archived":false,"fork":false,"pushed_at":"2026-05-11T21:31:39.000Z","size":5560,"stargazers_count":3,"open_issues_count":10,"forks_count":4,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-05-11T23:32:47.439Z","etag":null,"topics":["apk-installer","game-manager","quest-2","quest-3","quest-games","sideloading","virtual-reality","vr-games","vr-store"],"latest_commit_sha":null,"homepage":"","language":"Kotlin","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/LeGeRyChEeSe.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","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-12-17T22:45:14.000Z","updated_at":"2026-05-11T21:31:45.000Z","dependencies_parsed_at":"2026-01-07T05:05:44.342Z","dependency_job_id":null,"html_url":"https://github.com/LeGeRyChEeSe/VRHub","commit_stats":null,"previous_names":["legerycheese/rookie-on-quest","legerycheese/vrhub"],"tags_count":12,"template":false,"template_full_name":null,"purl":"pkg:github/LeGeRyChEeSe/VRHub","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/LeGeRyChEeSe%2FVRHub","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/LeGeRyChEeSe%2FVRHub/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/LeGeRyChEeSe%2FVRHub/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/LeGeRyChEeSe%2FVRHub/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/LeGeRyChEeSe","download_url":"https://codeload.github.com/LeGeRyChEeSe/VRHub/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/LeGeRyChEeSe%2FVRHub/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34129072,"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-06-09T02:00:06.510Z","response_time":63,"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":["apk-installer","game-manager","quest-2","quest-3","quest-games","sideloading","virtual-reality","vr-games","vr-store"],"created_at":"2026-06-09T23:01:48.649Z","updated_at":"2026-06-09T23:01:53.027Z","avatar_url":"https://github.com/LeGeRyChEeSe.png","language":"Kotlin","funding_links":["https://ko-fi.com/W7W71YNILA"],"categories":[],"sub_categories":[],"readme":"# VRHub\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"app/src/main/res/drawable/app_icon.png\" width=\"256\" alt=\"VRHub Icon\"\u003e\n  \u003cbr\u003e\n  \u003cimg src=\"https://img.shields.io/github/stars/LeGeRyChEeSe/VRHub?style=for-the-badge\u0026color=2ea44f\" alt=\"Stars\"\u003e\n  \u003cimg src=\"https://img.shields.io/github/last-commit/LeGeRyChEeSe/VRHub?style=for-the-badge\" alt=\"Last Commit\"\u003e\n  \u003ca href=\"https://ko-fi.com/W7W71YNILA\"\u003e\u003cimg src=\"https://ko-fi.com/img/githubbutton_sm.svg\" height=\"28\" alt=\"Support on Ko-fi\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://discord.gg/Wt8k22guRQ\"\u003e\u003cimg src=\"https://img.shields.io/badge/Discord-Join-5865F2?style=for-the-badge\u0026logo=discord\u0026logoColor=white\" alt=\"Discord\"\u003e\u003c/a\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cstrong\u003eA Solstice Project\u003c/strong\u003e\n\u003c/p\u003e\n\nA standalone Meta Quest application to browse, download, and install VR games natively, built with **Kotlin** and **Jetpack Compose**.\n\n---\n\n### Table of Contents\n- [Overview](#overview)\n- [Key Features](#key-features)\n- [Download \u0026 Installation](#download--installation)\n- [Server Configuration](#server-configuration)\n- [Architecture](#architecture)\n- [Build \u0026 Development Commands](#build--development-commands)\n- [Contributing](#contributing)\n\n---\n\n## Overview\n\nVRHub is a personal VR game manager for Meta Quest headsets. Connect to your **private server** to browse your own game catalog and install titles directly — no manual sideloading required. Your library, organized and at your fingertips.\n\n**This app does not host or provide any games. You must only install games you have legitimately purchased.** VRHub is designed solely for managing your personal collection on your own server. We do not condone piracy in any form.\n\n---\n\n## Key Features\n\n- **Standalone Sideloading**: Install games (APK + OBB) directly on your Meta Quest.\n- **Custom Server Configuration**: Connect to any compatible server via JSON URL or manual key-value pairs.\n- **Background Downloads**: Optimized to continue downloading even when the device sleeps.\n- **Offline Mode**: Browse cached catalog and queued installations when offline.\n- **Optimized Performance**: Smooth navigation through large game catalogs.\n\n---\n\n## Download \u0026 Installation\n\n[![Download VRHub](https://img.shields.io/github/v/release/LeGeRyChEeSe/VRHub?include_prereleases\u0026sort=semver\u0026label=Download%20VRHub\u0026style=for-the-badge)](https://github.com/LeGeRyChEeSe/VRHub/releases/latest)\n\n\u003e [!IMPORTANT]\n\u003e Requires Meta Quest with **Developer Mode** enabled. Enable it at [meta.com/quest/developers](https://meta.com/quest/developers/).\n\n### Method 1: SideQuest (Recommended)\nThe easiest way to install APKs on Quest.\n\n1. Download and install [SideQuest](https://sidequestvr.com/) on your PC/Mac\n2. Connect your Quest headset via USB or Wi-Fi\n3. Download the latest APK: [![Download VRHub](https://img.shields.io/github/v/release/LeGeRyChEeSe/VRHub?include_prereleases\u0026sort=semver\u0026label=VRHub\u0026style=flat)](https://github.com/LeGeRyChEeSe/VRHub/releases/latest)\n4. Drag and drop the APK onto SideQuest — installation is automatic\n\n### Method 2: Direct Browser Install\nInstall directly from your Quest without a PC (Quest Browser required).\n\n1. On your Quest headset, open the **Meta Quest Browser**\n2. Download the APK: [![Download VRHub](https://img.shields.io/github/v/release/LeGeRyChEeSe/VRHub?include_prereleases\u0026sort=semver\u0026label=VRHub\u0026style=flat)](https://github.com/LeGeRyChEeSe/VRHub/releases/latest)\n3. Open the downloaded file — the system APK installer will handle the rest\n\n### Method 3: adb (Developer)\nFor advanced users comfortable with command-line tools.\n\n1. Download the APK: [![Download VRHub](https://img.shields.io/github/v/release/LeGeRyChEeSe/VRHub?include_prereleases\u0026sort=semver\u0026label=VRHub\u0026style=flat)](https://github.com/LeGeRyChEeSe/VRHub/releases/latest)\n2. Connect Quest via USB and enable USB debugging\n3. Run: `adb install -r VRHub-vX.X.X.apk`\n\n---\n\n## Server Configuration\n\nAfter installing VRHub, you need to connect it to your personal game server. You will receive a file or text containing two pieces of information: an address and a password.\n\nIt looks something like this:\n```\n{\n  \"baseUri\": \"https://your-server.com/games/\",\n  \"password\": \"your-password-here\"\n}\n```\n\n### Option 1: You have the address and password as text\n\nSelect **Manual Entry** mode, then:\n\n1. In the **Key** field (left), type exactly: `baseUri`\n2. In the **Value** field (right), type the address you were given (e.g., `https://your-server.com/games/`)\n3. Press **ADD KEY**\n4. Repeat: in **Key** type `password`\n5. In **Value** type the password you were given\n6. Press the **TEST** button (it becomes clickable once both keys are added) and wait for the confirmation\n7. Press **SAVE**\n\n### Option 2: You have a link to a configuration file\n\nIf someone gave you a link (like `https://example.com/config.json`), select **JSON URL** mode and paste that link. VRHub will download and use the configuration automatically.\n\n### Testing Your Configuration\n\nUse the **TEST** button to validate your configuration before saving. VRHub will check the server connection and verify the configuration structure.\n\n\u003e [!IMPORTANT]\n\u003e VRHub is a personal catalog manager. The app does not provide or host any game content. You are solely responsible for the server you configure and must only use it to manage games you have legitimately purchased.\n\n---\n\n## Architecture\n\nVRHub follows a clean, layered architecture:\n\n- **data/** — Room database, DAOs, entities, repositories, server config\n- **logic/** — Catalog parsing and utilities\n- **network/** — Retrofit services, GitHub release checks, update service\n- **ui/** — Jetpack Compose screens, ViewModels, theme\n- **worker/** — WorkManager for background downloads\n\n**Tech Stack:** Kotlin, Jetpack Compose, Room, Retrofit, WorkManager\n\n---\n\n## Build \u0026 Development Commands\n\n### Prerequisites\n- **Android Studio** (Ladybug or newer).\n- **Android SDK 34** (API 34).\n\n### Building the Project\n```bash\n# Clean the project\n./scripts/gradlew clean\n# or\nmake clean\n\n# Build debug APK\n./scripts/gradlew assembleDebug\n# or\nmake build\n\n# Build release APK (requires keystore.properties)\n./scripts/gradlew assembleProdRelease\n# or\nmake release\n```\n\n### CI/CD \u0026 Local Validation\nThis project uses GitHub Actions for PR validation. You can run the validation logic locally to catch issues before pushing:\n\n- **Linux/macOS:** `./scripts/test-ci-config.sh`\n- **Windows:** `powershell -File scripts/test-ci-config.ps1`\n\nFor end-to-end tests including release candidate builds:\n- **Linux/macOS:** `./scripts/test-rc-e2e.sh`\n- **Windows:** `powershell -File scripts/test-ci-logic.ps1` (lint logic validation)\n\n### Version Management\nThis project follows **[Semantic Versioning (SemVer)](https://semver.org/)**.\n\nWhen building from the command line, you can specify the version using Gradle properties:\n- `versionCode`: A positive integer (e.g., `-PversionCode=15`)\n- `versionName`: A SemVer compatible string (e.g., `-PversionName=2.5.0` or `-PversionName=2.5.0-rc.1`)\n\nThe `versionName` must match the format `X.Y.Z` with optional pre-release suffixes or build metadata:\n- Basic: `2.5.0`\n- Pre-release: `2.5.0-rc`, `2.5.0-beta.1`, `2.5.0-alpha`\n- Build metadata: `2.5.0+build.1`\n- Combined: `2.5.0-rc.1+build.1`\n\nThe regex pattern used is: `^[0-9]+\\.[0-9]+\\.[0-9]+(-[a-zA-Z0-9.]+)?(\\+[a-zA-Z0-9.]+)?$`\n\n### Build Flavors\nVRHub has two build flavors:\n- **dev** (`./scripts/gradlew assembleDevDebug`) — development build with `.debug` suffix for testing\n- **prod** (`./scripts/gradlew assembleProdRelease`) — production build for release\n\n### Secure Update Authentication\nTo enable application update checks, a secret key is required for request signing.\n- **Environment Variable:** `VRHUB_UPDATE_SECRET`\n- **Local Development:** You can provide this in your `local.properties` file or as a Gradle property:\n  ```properties\n  VRHUB_UPDATE_SECRET=your_secret_here\n  ```\n- **Release Builds:** For security, release builds will fail if this secret is not provided via the environment variable or `keystore.properties`.\n\n---\n\n## Contributing\n\nWe welcome contributions! To maintain a clean project history, we strictly follow the **[Conventional Commits](https://www.conventionalcommits.org/)** specification.\n\n### Naming Convention\nAll commit messages and pull requests should use the following prefixes:\n- `feat:` for new features.\n- `fix:` for bug fixes.\n- `docs:` for documentation changes.\n- `style:` for formatting or UI adjustments (no logic changes).\n- `refactor:` for code changes that neither fix a bug nor add a feature.\n- `perf:` for performance improvements.\n- `chore:` for maintenance tasks.\n\n### Share Ideas \u0026 Report Bugs\nIf you have an idea for a new feature or have found a bug, please open an issue:\n- [Report a Bug](https://github.com/LeGeRyChEeSe/VRHub/issues/new?template=bug_report.md)\n- [Suggest a Feature](https://github.com/LeGeRyChEeSe/VRHub/issues/new?template=feature_request.md)\n- [Ask a Question or Give Feedback](https://github.com/LeGeRyChEeSe/VRHub/issues/new?template=question.md)\n\n### Submit a Pull Request\n1. Fork the repository.\n2. Create a new branch (`feat/your-feature` or `fix/your-fix`).\n3. Commit your changes following the naming convention.\n4. Submit a pull request with a clear description of your changes.","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flegerycheese%2Fvrhub","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Flegerycheese%2Fvrhub","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flegerycheese%2Fvrhub/lists"}