Skip to content

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

bash
git clone https://github.com/dongguacute/SpinDeck.git
cd SpinDeck
pnpm install

For the full experience (import + playback + native window):

bash
pnpm --filter @spindeck/desktop dev

Tauri 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:

bash
pnpm dev

Or run only the web app:

bash
pnpm --filter @spindeck/web dev

Open the local URL printed in your terminal. Playlist import and playback require the desktop app — run desktop dev as above.

Build Web SPA

bash
pnpm --filter @spindeck/web build

Static output: apps/web/build/client (Tauri frontendDist for the desktop app).

Other Commands

bash
pnpm lint          # ESLint + desktop Rust fmt/clippy
pnpm check-types   # Type check
pnpm format        # Format code
pnpm dev:docs      # Documentation site

See 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

Contributors

Changelog

Released under the Apache License 2.0.