Update README for single-app architecture
This commit is contained in:
@@ -0,0 +1,46 @@
|
|||||||
|
# What's That Music
|
||||||
|
|
||||||
|
A desktop app that plays YouTube Music and serves a now-playing overlay for OBS.
|
||||||
|
|
||||||
|
The app is a single Electron window that loads `music.youtube.com`. It also runs a small HTTP/WebSocket server on `localhost:9095` that streams the current track to any connected overlay client. Point OBS (or any browser) at `http://localhost:9095/` to see the overlay.
|
||||||
|
|
||||||
|
## Run from source
|
||||||
|
|
||||||
|
```
|
||||||
|
cd desktop-client
|
||||||
|
npm install
|
||||||
|
npm start
|
||||||
|
```
|
||||||
|
|
||||||
|
The app opens. Sign in to YouTube Music. Play a track. Visit `http://localhost:9095/` in another browser to see the overlay.
|
||||||
|
|
||||||
|
## Build a Windows zip
|
||||||
|
|
||||||
|
```
|
||||||
|
cd desktop-client
|
||||||
|
npm run build -- --win zip --x64
|
||||||
|
```
|
||||||
|
|
||||||
|
Output: `desktop-client/dist/WhatsThatMusic-<version>-win.zip`. Unzip on a Windows machine and run `WhatsThatMusic.exe`. The app is unsigned, so SmartScreen will warn on first launch — click "More info → Run anyway."
|
||||||
|
|
||||||
|
## OBS setup
|
||||||
|
|
||||||
|
1. Add a *Browser Source*.
|
||||||
|
2. URL: `http://localhost:9095/`.
|
||||||
|
3. Width / height: match your scene (the overlay positions itself absolutely; 1920x1080 is fine).
|
||||||
|
4. Make sure the app is running before OBS loads the source.
|
||||||
|
|
||||||
|
## Tests
|
||||||
|
|
||||||
|
```
|
||||||
|
cd desktop-client
|
||||||
|
npm test
|
||||||
|
```
|
||||||
|
|
||||||
|
Runs the `node:test` unit suite (`desktop-client/tests/`).
|
||||||
|
|
||||||
|
## Layout
|
||||||
|
|
||||||
|
- `desktop-client/` — the Electron app (main entry, server module, preload scraper, tray).
|
||||||
|
- `overlay/` — static HTML + JS the bundled server serves at `/`.
|
||||||
|
- `docs/superpowers/` — design and plan documents.
|
||||||
|
|||||||
Reference in New Issue
Block a user