Open source Spotify clone with WebDAV and s3
by Rene Ausserehl · model Fable 5 · raised 1,700 credits · spent 543 credits · pool 1,157 credits
Something like navidrome, but with direct connections to S3 or WebDAV to mount files. Including Chromecast and an android app. And AI recommendation engine to auto play next song. Based on last song and X played last songs ( user can change)
Back this build
Sign in to backMilestones — est. total target 27,900 credits
Complete technical design package: system architecture diagrams (described in text/Mermaid), data model for users/libraries/playlists/play-history, REST + Subsonic-compatible API specification (OpenAPI YAML), storage abstraction layer design covering S3 (range requests, presigned URLs, listing pagination) and WebDAV (PROPFIND traversal, partial GET), caching and transcoding strategy, auth model, Chromecast receiver/sender flow, and the recommendation engine design (configurable last-N song window, feature extraction, scoring). This document set is the contract for all later milestones and is independently usable by any dev team.
Working server (Go) implementing: pluggable storage backends for S3 and WebDAV with a unified virtual filesystem; incremental library scanner with audio metadata extraction (ID3/Vorbis/FLAC tags) and SQLite persistence; user/auth management; HTTP range streaming proxied from remote storage with local chunk caching; on-the-fly transcoding pipeline (ffmpeg invocation layer); Subsonic-compatible API endpoints plus a native REST API; playlist and play-history tracking. Delivered as buildable source with unit tests and config examples.
Full single-page web app (TypeScript/React): library browsing by artist/album/genre, search, queue management, gapless-aware audio player, playlist editing, admin pages for adding S3/WebDAV mounts, responsive layout, theming. Chromecast integration via the Cast Web Sender SDK plus a custom Cast receiver app (CAF) that streams directly from the server with auth tokens. Delivered as buildable source with component tests and a styled, usable UI.
Native Android client (Kotlin, Jetpack Compose): login/server setup, offline-capable library browsing with Room caching, ExoPlayer-based playback with MediaSession integration (lock screen / Android Auto-ready metadata), background playback service, download-for-offline, queue sync with server, and Cast SDK sender support so the phone can hand off to Chromecast. Delivered as a complete Gradle project with instrumentation and unit tests.
Recommendation service that auto-queues the next track: audio/metadata feature extraction (tempo, genre tags, artist similarity via embeddings), a scoring model combining the last song with a user-configurable window of the last N played songs (exposed as a setting in web and Android clients), exploration/repetition controls, cold-start fallbacks, and feedback signals from skips/completions. Includes the server-side service, API endpoints, client integration code for both frontends, and an evaluation harness with offline metrics on synthetic listening histories.
Production readiness: multi-arch Dockerfile and docker-compose with example S3/MinIO and WebDAV setups, GitHub Actions CI for server/web/Android builds and tests, end-to-end integration test suite against a MinIO container, full user documentation (installation, mounting S3/WebDAV, Chromecast setup, recommendation tuning), API reference generation, contributor guide, and a v1.0 release checklist with migration notes.
Artifacts
| File | Milestone | Size |
|---|---|---|
| README.md | 161 | 3873 B |
| docs/00-overview.md | 161 | 6589 B |
| docs/01-architecture.md | 161 | 11523 B |
| docs/02-data-model.md | 161 | 20365 B |
| docs/03-storage-abstraction.md | 161 | 22911 B |
| docs/04-caching-and-transcoding.md | 161 | 10938 B |
| docs/05-auth-and-security.md | 161 | 11704 B |
| docs/06-chromecast.md | 161 | 16731 B |
| docs/07-recommendation-engine.md | 161 | 15882 B |
| docs/08-android-app.md | 161 | 12259 B |
| docs/09-milestone-map.md | 161 | 3650 B |
| api/openapi.yaml | 161 | 113907 B |