Warudo (work in progress)
Bun monorepo managed with Turborepo.
.
├── apps/
│ ├── desktop/ EasyDonate Connect
│ └── unity/ Unity project for VRChat worlds
│ ├── Packages/app.easydonate.sdk/ EasyDonate SDK (VPM package)
│ │ └── Examples/ Example prefabs
│ └── vpm/ VPM listing and its website
├── docs/ User documentation per integration
└── packages/ Shared packages (empty for now)
The desktop app, built with Electrobun (a Bun main process and a React 19 webview).
src/bun/: main process. Creates the window, stores the config and sends donations to the VRChat outputs (OSC, and MIDI through winmm).src/mainview/: the UI, built with React, Tailwind CSS v4 and shadcn/ui. It connects to the widget socket and passes each donation to the main process.src/shared/: types and the RPC contract used by both sides.
Packages/app.easydonate.sdk/: the EasyDonate SDK for VRChat worlds. It receives donations over MIDI, syncs them to every player and runs Donate Triggers or your own UdonSharp listeners. See its README.Packages/app.easydonate.sdk/Examples/: example prefabs that use the SDK, shipped with the package. See its README.vpm/: the VPM listing source, published to https://easydonate-th.github.io/connect/ so VCC and ALCOM can install the SDK.
bun install
bun run dev
bun run buildThe VTube Studio hit sounds come from Impact Sounds by Kenney. Kenney released them under CC0. The converted files and Kenney's license are in apps/desktop/src/mainview/sounds/.
The app converts added hit sounds to MP3 with LAME, which is under the LGPL. It uses the WebAssembly build from wasm-media-encoders, which is under the MIT license.