diff --git a/README.md b/README.md index 1f36117..f186e4c 100644 --- a/README.md +++ b/README.md @@ -7,16 +7,45 @@ Built with Vite + vanilla ES modules, served via nginx in Docker. ## Features +### Music Library - Stream music from your Navidrome / Subsonic library -- Browse artists, albums, playlists, starred tracks and random picks -- Queue management with shuffle, repeat (all / once) and radio mode (endless random) -- Now Playing overlay with swipe-to-dismiss and lock screen media controls (Android/iOS) -- iTunes / Last.fm integration — charts, global search, 30s previews, recommendations -- Download tracks from YouTube/SoundCloud via yt-dlp directly into your music library -- Duplicate detection — skips tracks that already exist on the server -- Edit playlists (name, description, cover art, public toggle) -- PWA — installable, offline-capable via service worker +- Browse artists, albums, playlists, starred tracks, and random picks +- Sort and filter views (albums, favorites) with chip filters +- Search/filter bar inside playlist detail and favorites (instant, client-side) +- Synced and plain lyrics via LRCLIB (auto-fetched per track) + +### Playback +- Queue management with shuffle, repeat (all / once), and radio mode (endless random) +- Now Playing overlay with swipe-to-dismiss +- Lock screen media controls (Android / iOS via Media Session API) +- Gapless-style queue with prev/next, skip forward/back + +### Discovery +- iTunes / Last.fm integration — charts, global search, 30-second previews, similar artists, recommendations +- Spotify playlist importer — paste a Spotify playlist URL to preview and download all tracks, enriched with iTunes metadata and cover art + +### Downloads (yt-dlp backend) +- Download individual tracks, full albums, or entire artists from YouTube / SoundCloud +- Spotify playlist importer downloads with iTunes-enriched metadata (album, year, track number, genre, cover art) +- Duplicate detection — skips tracks already present on the server +- Lyrics embedded into downloaded files (LRCLIB) + +### Playlists +- Create, edit, and delete playlists +- Edit playlist name, description, cover art, and public/private toggle +- Add / remove tracks; reorder via drag and drop + +### Audiobookshelf Integration +- Connect to your Audiobookshelf server (URL + API key) +- Browse and stream audiobooks from your ABS library +- Full player: chapters list, playback speed, sleep timer (preset or custom minutes), progress sync + +### App +- PWA — installable on Android / iOS / desktop, offline-capable via service worker +- Android APK (WebView wrapper with native feel) +- Multiple color themes - Dark theme, mobile-first responsive layout +- German UI --- @@ -31,15 +60,23 @@ Music_App/ │ ├── player.js # Playback, transport, queue, media session, preview │ ├── views.js # Navigation, page loaders, card makers, search │ ├── ui.js # Modals, overlays, sidebar, settings, context menu +│ ├── nowplaying.js # Now Playing overlay +│ ├── abs.js # Audiobookshelf integration +│ ├── spotify.js # Spotify playlist importer +│ ├── components.js # Shared UI components +│ ├── themes.js # Theme switching │ ├── pwa.js # Service worker registration + update banner │ └── main.js # App init, audio wiring, window globals +├── backend/ +│ ├── novasonic-server.js # Node.js download backend (yt-dlp + ffmpeg) +│ └── lib/ +│ └── metadata.js # iTunes lookup, lyrics fetch, artwork download ├── public/ # Static assets (copied as-is to dist/) │ ├── sw.js # Service worker │ ├── manifest.json # PWA manifest │ ├── icon.svg # App icon │ └── config.js # Runtime config placeholder (generated by Docker) -├── backend/ -│ └── novasonic-server.js # Node.js download backend (yt-dlp + ffmpeg) +├── android/ # Android WebView APK wrapper ├── index.html # App shell + Vite entry point ├── styles.css # All styles ├── vite.config.js @@ -104,3 +141,4 @@ npm run preview # Preview the production build locally 2. Enter your Navidrome server URL, username and password 3. Optionally add a Last.fm API key (Settings) for recommendations and similar artists 4. Optionally add the backend URL (Settings) to enable yt-dlp downloads +5. Optionally connect Audiobookshelf (Settings) to stream audiobooks diff --git a/index.html b/index.html index 974afc1..e161a25 100644 --- a/index.html +++ b/index.html @@ -719,10 +719,9 @@ -