Getting Started
SpinDeck is a cross-platform vinyl visualization player. It organizes playlists in the UI, displays them on a 3D album shelf, and controls playback in third-party music apps.
Architecture in one line: SPA frontend (apps/web) + desktop-only Tauri shell (apps/desktop). See Architecture for the diagram and IPC list, Performance & Visuals for the 3D shelf / atmosphere policy, and System Requirements for minimum / recommended specs.
Requirements
Developer toolchain summary (Release end users do not need Node / Rust):
- Node.js ≥ 22.13 (web / docs development and frontend builds)
- pnpm 11.x
- Rust (stable) — required for desktop (Tauri)
Full OS / hardware / WebView matrix: System Requirements.
Install
git clone https://github.com/dongguacute/SpinDeck.git
cd SpinDeck
pnpm installRecommended: Desktop Development
For the full experience (import + playback + native window):
pnpm --filter @spindeck/desktop devTauri starts the web Vite server and loads it in the WebView. Desktop features use invoke.
Web Development (UI only)
Start the SPA from the monorepo root:
pnpm devOr run only the web app:
pnpm --filter @spindeck/web devOpen the local URL printed in your terminal. Playlist import and playback require the desktop app — run desktop dev as above.
Build Web SPA
pnpm --filter @spindeck/web buildStatic output: apps/web/build/client (Tauri frontendDist for the desktop app).
Other Commands
pnpm lint # ESLint + desktop Rust fmt/clippy
pnpm check-types # Type check
pnpm format # Format code
pnpm dev:docs # Documentation siteSee System Requirements for minimum / recommended specs, Desktop App for packaging and install troubleshooting, Architecture for module layout, Performance & Visuals for shelf memory policy, or Supported Platforms for music service compatibility.
Extending the UI
- Extending
@spindeck/ui— Theme families and the Material Contract - Extending
@spindeck/vinyl-ui— Vinyl player visual styles
𝓒𝓱𝓮𝓻𝓻𝔂🍒