Skip to content

ComfyChloe/VRC-Group-Manager

Repository files navigation

VRC Group Manager

An Electron + Vue desktop app for collecting, storing, and reviewing VRChat group data

Version Electron Vue TypeScript License

Desktop workflow for VRChat account sign-in, local capture queues, and MariaDB-backed storage for groups, users, and worlds.

Caution!

This repository is opened up publicly, but the codebase is still rough, inconsistent, and likely to contain bugs. It was not originally built with general public use in mind. If you plan to use or build on it, expect messy internals and please open an issue if you run into problems.

AboutWhat It DoesCurrent App SurfaceDevelopmentDeveloper NotesLicense Direction


VRC Group Manager is a Windows-oriented Electron desktop app for collecting and reviewing VRChat data with a heavier focus on groups, related users, and long-running local datasets. It combines a Vue 3 renderer, an Electron main process, VRChat API authentication, queue-based background work, and MariaDB-backed persistence so records can be searched, revisited, and expanded over time.

The app is built around a practical workflow:

  • sign in with a VRChat account, including saved sessions and 2FA
  • connect to a MariaDB database for persistent storage
  • capture groups, members, users, and worlds into local records
  • queue additional group and user work for paced background processing
  • import baseline datasets to seed storage before later expansion
  • review stored entities, queue state, and analytics in one app

About

This repository is intended for workflows where a one-off lookup is not enough and the useful part is keeping a growing local dataset that can be revisited later. Instead of treating groups, users, and worlds as temporary API responses, the app keeps them as persistent records that can be reviewed as part of a longer-running monitoring flow.

At a high level, the app is meant to help with:

  • building and maintaining a local archive of VRChat group, user, and world data
  • seeding storage from existing group or user datasets
  • expanding records over time through manual and queued collection
  • reviewing entity detail and aggregate activity from one desktop client

What It Does

The current app surface is focused on concrete capabilities rather than general-purpose social browsing.

  • VRChat account login with session restore and 2FA handling
  • MariaDB-backed persistence for groups, users, worlds, captures, queue items, and settings
  • optional MeiliSearch connectivity for search indexing support
  • manual capture flows for individual groups, worlds, and users
  • group member collection and stored detail views
  • queued background processing for group and user captures with configurable delays and jitter
  • dataset import for baseline exports, group ID lists, and user ID lists
  • analytics summary for stored totals and recent API activity
  • offline mode for local inspection without an active VRChat API session

Current App Surface

The current navigation is organized around the following areas:

Area Purpose
Main View Shows the current session mode, connected account, and top-level state
Groups Stores group records, captures metadata and members, and shows profile history
Worlds Stores world records and capture history
Events Shows recent queue activity and backlog state
Users Searches VRChat users, stores captures, and expands related records
Analytics Summarizes stored totals and rolling VRChat API activity
Capture Queue Configures queue pacing, enable flags, delays, jitter, and snapshots
Settings Manages MariaDB settings, recapture cadence, and dataset import
Account Shows identity, authentication mode, and session state

Development

Technical summary: v0.25.1Electron 33Vue 3TypeScriptWindows desktop

Requirements

  • Node.js
  • Windows desktop environment for running the packaged app comfortably
  • A MariaDB server for persistent storage
  • A VRChat account if you want live API capture
  • MeiliSearch only if you want search indexing support

Scripts

npm run dev
npm run build
npm run typecheck

What The Scripts Do

Command Purpose
npm run dev Runs the Electron app in development mode with electron-vite
npm run build Builds the Electron app output and prepares an unpacked distribution directory
npm run typecheck Runs both main/preload and renderer TypeScript checks
npm run typecheck:node Type-checks src/main and src/preload
npm run typecheck:web Type-checks the Vue renderer code
npm run pack Produces the unpacked Electron builder output
npm run dist Runs the full Electron builder packaging flow

First Run Notes

On a fresh run, the app starts without a database connection until one is configured. The normal setup flow is:

  1. launch the app
  2. open database settings
  3. enter MariaDB host, port, database, username, and password
  4. save and connect
  5. sign in with a VRChat account or use offline mode for local-only review
  6. import a baseline dataset or begin manual captures

Developer Notes

Repo Map

Path Purpose
package.json App metadata, Electron builder settings, and dev/build/typecheck scripts
electron.vite.config.ts Electron Vite build configuration for main, preload, and renderer
src/main/index.ts Electron app entry, window lifecycle, startup services, and shutdown handling
src/main/ipc.ts IPC registration between renderer requests and main-process services
src/main/configManager.ts Persists config.json in Electron user data and stores queue/database settings
src/main/services/db.ts MariaDB connection, schema setup, and storage operations
src/main/services/vrcAuthService.ts VRChat login, session restore, and 2FA handling
src/main/services/vrcDataService.ts Capture and retrieval logic for users and related VRChat data
src/main/services/groupCaptureService.ts Group profile and member capture workflow
src/main/services/worldCaptureService.ts World capture workflow
src/main/services/groupQueueWorker.ts Background queue scheduling and paced group/user capture work
src/main/services/searchService.ts Optional MeiliSearch integration
src/preload/index.ts contextBridge API exposed to the renderer
src/renderer/src/App.vue Main desktop shell, login flow, navigation, and lifecycle state handling
src/renderer/src/pages/ Page-level views for groups, users, worlds, analytics, queue, and settings
src/shared/ Shared TypeScript contracts for auth, analytics, queue, and captured data
Assets/ App assets bundled with Electron builder

Startup Flow

  1. npm run dev starts Electron Vite.
  2. The Electron main process initializes config, credential storage, and the app windows.
  3. IPC handlers are registered so the renderer can call into main-process services.
  4. If database settings already exist, the app attempts the MariaDB connection on startup.
  5. If MeiliSearch is configured, the search service is initialized.
  6. Queue workers are started and wait for runtime readiness.
  7. The Vue renderer loads the login flow or app shell and begins polling for database readiness.

Storage Notes

  • configuration is stored under Electron user data as config.json
  • remembered credentials and restored session material are kept in encrypted local storage paths managed by the main process
  • the primary persistent dataset lives in MariaDB rather than a bundled local SQLite file
  • queue timing is configured in milliseconds and applied to future runs immediately after saving
  • baseline imports can seed large sets of group or user IDs before live recapture fills in details

Notes On Platform Behavior

  • the current application shape is desktop-first and Windows-oriented
  • Electron builder is configured to produce a directory target for Windows
  • the app supports offline mode for reviewing local data without an active VRChat login
  • the queue system is intentionally paced, processing one queued item per scheduled pass rather than attempting to drain everything at once

License Direction

This repository is licensed under the custom ComfyChloe Non-Commercial Copyleft License 1.2.

In practical terms, that means:

  • people may view, share, and modify the code
  • people may publish fixes, forks, and contributions
  • distributed modified versions must remain under the same license
  • distributed versions must include source code
  • selling the code or redistributed builds is not allowed without separate written permission
  • closed-source redistribution is not allowed

This is a custom license for this repository. It is not MIT, GPL, Apache, or MPL.

About

Desktop application for managing VRChat histroical tracking of groups & users

Topics

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors