Please note that this project is still work in progress and may not be fully functional.
A simple web frontend for Meilisearch that displays available karaoke songs downloaded with usdb_syncer.
- Search and browse available karaoke songs
- Queue songs directly to Melody Mania or Ultrastar Play
- Multi-language support with i18n
- Dark mode support
- Responsive design with a clean and modern UI
- Basic knowledge of deploying web apps with Docker
- Docker and Docker Compose
- Node.js 24+ and pnpm
- usdb_syncer (latest release)
- Optional (for Queue feature): Melody Mania or Ultrastar Play configured with your song library (must be run at least once to generate
Settings.json)
git clone <repository-url>
cd KaraokeQuery
cp .env.example .env- Run
usdb_syncerto download songs from USDB - Go to
Tools → Create Report → Locally available songs → JSON Report → OK - Save the JSON report to the repository root as
songlist.json- Or customize the path via
SONGLIST_PATHin.env
- Or customize the path via
Only needed if you want to queue songs to Melody Mania or Ultrastar Play.
-
Stop Melody Mania/Ultrastar Play if running
-
Open
Settings.jsonof Melody Mania/Ultrastar Play (e.g. location in Windows for Melody Mania:C:\Users\<user>\AppData\LocalLow\melodymania\Melody Mania) -
Add the followint to
HttpApiPermissions:{ "HttpApiPermissions": { "your-client-id": ["WriteSongQueue", "WriteConfig", "WriteInputSimulation"] } }Replace
your-client-idwith any string you choose (e.g.,karaoke-query) -
Set
ULTRASTAR_CLIENT_IDin.envto match the client ID above -
Configure
SING_SCENE_PLAYER_DATA_DTOin.envwith the player and microphone profiles. Use the format provided in.env.example. This JSON structure defines:PlayerProfileNames: List of players to use in the game.PlayerProfileToMicProfileMap: Mapping of player names to their microphone settings (name, channel, color, etc.).PlayerProfileToVoiceIdMap: Mapping of player names to voice IDs (e.g., "P1", "P2").
-
Start the game and navigate to:
Settings → Develop → Companion Client Connections → HTTP endpoint example -
Copy the base URL (e.g.,
http://localhost:34567) toULTRASTAR_API_BASEin.env- Do not include the
/api/rest/...path
- Do not include the
Generate a Meilisearch master key:
openssl rand -hex 32Add it to .env as MEILI_MASTER_KEY. Review and edit other variables as needed.
docker compose up -d
pnpm install
pnpm import-songsAccess the app at http://localhost:3000