No description
Find a file
2026-03-15 07:03:01 +07:00
.github/workflows Deploy: Use GitHub Actions to push to Forgejo Registry 2026-02-07 22:46:19 +07:00
.tools Deploy: Add Dockerfile and static file serving 2026-02-07 22:27:15 +07:00
backend-rust fix: Update Rust edition and fix frontend TypeScript error 2026-03-15 07:03:01 +07:00
frontend-vite fix: Update Rust edition and fix frontend TypeScript error 2026-03-15 07:03:01 +07:00
scripts Deploy: Add Dockerfile and static file serving 2026-02-07 22:27:15 +07:00
.dockerignore Deploy: Add Dockerfile and static file serving 2026-02-07 22:27:15 +07:00
.gitignore refactor: Migrate backend from Go to Rust (Axum) and update Docker config 2026-03-15 06:54:44 +07:00
deploy.bat Initial commit: Spotify Clone with Audiophile specs and Synology support 2025-12-17 11:18:36 +07:00
deploy_commands.sh Update: Mobile UX, Show All, Infinite Scroll & New Categories 2026-01-01 11:12:21 +07:00
docker-compose.yml chore: Bump image tag to v4 2026-03-15 06:58:03 +07:00
DOCKER_README.md Initial commit: Spotify Clone with Audiophile specs and Synology support 2025-12-17 11:18:36 +07:00
Dockerfile fix: Update Rust edition and fix frontend TypeScript error 2026-03-15 07:03:01 +07:00
README.md refactor: Migrate backend from Go to Rust (Axum) and update Docker config 2026-03-15 06:54:44 +07:00
README_MIGRATION.md Deploy: Add Dockerfile and static file serving 2026-02-07 22:27:15 +07:00
restart_app.bat Deploy: Add Dockerfile and static file serving 2026-02-07 22:27:15 +07:00
yt-dlp.exe Deploy: Add Dockerfile and static file serving 2026-02-07 22:27:15 +07:00

Spotify Clone 🎵

A fully functional clone of the Spotify web player, built with React, Rust (Axum), and TailwindCSS. This application replicates the premium authentic feel of the original web player with added features like synchronized lyrics, custom playlist management, and "Audiophile" technical specs.

Preview


🚀 Quick Start (Docker)

Option 1: Pull from Registry

docker pull git.khoavo.myds.me/vndangkhoa/spotify-clone:v3
docker run -d -p 3000:8080 --name spotify-clone \
  -v ./data:/app/data \
  -v ./cache:/tmp/spotify-clone-cache \
  --restart unless-stopped \
  git.khoavo.myds.me/vndangkhoa/spotify-clone:v3

Option 2: Build Locally

docker build -t spotify-clone:v3 .
docker run -d -p 3000:8080 --name spotify-clone \
  -v ./data:/app/data \
  -v ./cache:/tmp/spotify-clone-cache \
  --restart unless-stopped \
  spotify-clone:v3

Open http://localhost:3000.


🐳 Docker Deployment

Building the Image

# Build for linux/amd64 (Synology NAS)
docker build -t git.khoavo.myds.me/vndangkhoa/spotify-clone:v3 .

# Push to registry
docker push git.khoavo.myds.me/vndangkhoa/spotify-clone:v3
services:
  spotify-clone:
    image: git.khoavo.myds.me/vndangkhoa/spotify-clone:v3
    container_name: spotify-clone
    restart: unless-stopped
    ports:
      - "3000:8080"
    environment:
      - PORT=8080
      - RUST_ENV=production
    volumes:
      - ./data:/app/data
      - ./cache:/tmp/spotify-clone-cache
    logging:
      driver: "json-file"
      options:
        max-size: "10m"
        max-file: "3"

📦 Synology NAS Deployment

Method A: Container Manager UI (GUI)

  1. Open Container Manager on your Synology NAS.
  2. Go to Registry and click Add:
    • Registry URL: https://git.khoavo.myds.me
    • Enter credentials if prompted.
  3. Search for vndangkhoa/spotify-clone and download the v3 tag.
  4. Go to Image, select the downloaded image, and click Run.
  5. Configure:
    • Container Name: spotify-clone
    • Port Settings:
      • Local Port: 3000 (or any available port)
      • Container Port: 8080
    • Volume Settings:
      • Add folder: docker/spotify-clone/data/app/data
      • Add folder: docker/spotify-clone/cache/tmp/spotify-clone-cache
    • Restart Policy: unless-stopped
  6. Click Done and access at http://YOUR_NAS_IP:3000.

Method B: Docker Compose (CLI)

  1. SSH into your Synology NAS or use the built-in terminal.
  2. Create a folder:
    mkdir -p /volume1/docker/spotify-clone
    cd /volume1/docker/spotify-clone
    
  3. Create docker-compose.yml:
    services:
      spotify-clone:
        image: git.khoavo.myds.me/vndangkhoa/spotify-clone:v3
        container_name: spotify-clone
        restart: unless-stopped
        ports:
          - "3000:8080"
        environment:
          - PORT=8080
          - RUST_ENV=production
        volumes:
          - ./data:/app/data
          - ./cache:/tmp/spotify-clone-cache
    
  4. Run:
    docker compose up -d
    

Synology-Specific Notes

  • Architecture: This image is built for linux/amd64 (compatible with most Intel-based Synology NAS).
  • DSM 7+: Use Container Manager (Docker GUI replacement).
  • Data Persistence: The ./data volume stores playlists and application data. Backup this folder to preserve your data.
  • Updating: Pull the latest image and recreate the container, or use Watchtower for auto-updates.

🛠️ Local Development

Prerequisites

  • Node.js 20+
  • Rust 1.75+
  • Python 3.11+
  • ffmpeg

1. Backend Setup (Rust)

cd backend-rust
cargo run

Backend runs on http://localhost:8080.

2. Frontend Setup

cd frontend-vite
npm install
npm run dev

Frontend runs on http://localhost:5173.


Features

  • Real-Time Lyrics: Fetch and sync lyrics from multiple sources.
  • Audiophile Engine: "Tech Specs" view showing live bitrate, LUFS, and Dynamic Range.
  • Local-First: Works offline (PWA) and syncs local playlists.
  • Smart Search: Unified search across YouTube Music.
  • Responsive: Full mobile support with dedicated full-screen player.
  • Smooth Loading: Skeleton animations for seamless data fetching.

📝 License

MIT License