Echo is a music app that allows you to connect to multiple sources of music and play them directly through the app. It's album focused, meaning that instead of treating your library as a list of songs, it treats it as a list of albums, allowing you to shuffle albums, browse them based on genres, and more.
Warning
The app is currently in a very alpha-ish state, so expect things to break and features to be missing. Nonetheless, it's already usable for basic music browsing and playing.
- Multiple provider support & sync (currently Spotify and OneDrive, but most of the scaffolding is in place for more)
- Album browser
- Artist browser
- Album details
- Genre fetching and browsing
- Scrobbling support (Available via WebScrobbler from v3.11)
- Search support
- Shuffling
- Queue management
- More providers (YouTube Music, Google Drive, Soundcloud etc.)
- Tag and metadata editing
- Keyboard-driven navigation
Echo is built using TypeScript, Lit and Effect as the backbone of most of the app logic. To get started, clone the repository and install the dependencies:
yarn installOnce you've done this, make sure you have a .env.local file on the web package that
contains the configuration for the backends you want to connect to. A full example
of this file would be:
VITE_ECHO_BASE_URL=http://127.0.0.1:5173
VITE_GRAPH_CLIENT_ID=your client ID
VITE_GRAPH_REDIRECT_URI=http://localhost:5173
VITE_GRAPH_SCOPES=user.read,files.read,files.read.all
VITE_SPOTIFY_CLIENT_ID=your client ID
VITE_SPOTIFY_SECRET=your secret
VITE_SPOTIFY_REDIRECT_URI=http://127.0.0.1:5173
If you are using an OAuth-backed provider, make sure its allowed redirect URI matches your local dev URL.
Finally, once all this is done, you can run the app with:
yarn dev