Go-based audio streaming backend with REST API, multi-source support, and lightweight deployment
  • Go 72.5%
  • JavaScript 27.2%
  • CSS 0.2%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
vndangkhoa 1f3a131e95 redesign: apply kv-music YouTube Music pixel-perfect UI
- Migrate from plain CSS to Tailwind CSS v4 with @tailwindcss/vite
- Split monolithic App.jsx (2167 lines) into 9 component files
- Layout: Header (h-14/16) + Sidebar (260px) + Main Content + Player Bar
- Color scheme: YouTube Music dark theme (#030303 base, #FF0000 accent)
- Typography: Roboto font with proper weight/size hierarchy
- Player bar: 3-column desktop layout with progress scrubber on top
- Search: pill-shaped search bar, provider filter chips, card results grid
- Sidebar: nav items with active state, downloads indicator, version footer
- Download queue: collapsible floating panel with progress bars
- Modals: dark glassmorphic overlays for settings and tag editor
- Responsive: mobile-first with fold (660px) breakpoint for sidebar/desktop
- Removed dead App.css (Vite boilerplate) and old CSS variables
- All existing functionality preserved (search, playback, downloads, extensions, settings)
2026-06-22 20:53:47 +07:00
backend fix: enable streaming playback for all providers 2026-06-22 20:14:01 +07:00
data tidal-web: add retry with backoff to postDownloadAPI for blocked Zarz responses 2026-06-22 20:31:56 +07:00
downloads SpotiFLAC Web Portal - Initial release 2026-06-22 15:35:12 +07:00
frontend redesign: apply kv-music YouTube Music pixel-perfect UI 2026-06-22 20:53:47 +07:00
temp_repo@7b22bbf25f SpotiFLAC Web Portal - Initial release 2026-06-22 15:35:12 +07:00
.gitignore SpotiFLAC Web Portal - Initial release 2026-06-22 15:35:12 +07:00
go.mod SpotiFLAC Web Portal - Initial release 2026-06-22 15:35:12 +07:00
go.sum SpotiFLAC Web Portal - Initial release 2026-06-22 15:35:12 +07:00
main Save code for future use 2026-06-22 16:23:34 +07:00
main.go feat: per-provider search tabs with interleaved results 2026-06-22 19:53:11 +07:00
README.md SpotiFLAC Web Portal - Initial release 2026-06-22 15:35:12 +07:00

SpotiFLAC Web Portal

SpotiFLAC Web is a high-fidelity web port of the original SpotiFLAC-Mobile application. It decouples the Go backend core logic from native mobile platform channels, exposing it via a structured Go REST & SSE API served alongside a premium, responsive React Single-Page Application.

🏗️ Architecture

                                  +-----------------------+
                                  |   React Frontend SPA  |
                                  |   (Vite / ES6 / CSS)  |
                                  +-----------+-----------+
                                              | (HTTP REST / SSE)
                                              v
+------------------+              +-----------------------+
|  FFmpeg Binary   | <--(Exec)----|     Go HTTP Server    |
| (Transcoding/Tags)|             |      (main.go)        |
+------------------+              +-----------+-----------+
                                              |
                                              v
                                  +-----------------------+
                                  |    Go Backend Core    |
                                  | (Extension Engine VMs)|
                                  +-----------------------+
  1. Vite + React Frontend: A gorgeous, glassmorphic dark-themed SPA supporting track/album/artist search, live download tracking (SSE), registry extensions management, ID3/FLAC metadata tag editing, and settings preferences.
  2. Go HTTP Server (main.go): Serves the frontend assets, provides REST endpoints for management and actions, hosts an EventSource stream for download progress, and runs asynchronous queue workers.
  3. Go Core Engine: The native Go module (./backend) which parses and executes JS extensions inside safe goja JavaScript VMs.
  4. FFmpeg Integration: The server spawns background processes using system ffmpeg to execute queued audio transcoding and advanced tag injection for non-native formats (e.g. MP3, Opus).

⚙️ Prerequisites

To run SpotiFLAC Web locally, you need the following tools installed on your host system:

  1. Go (v1.22 or higher)
  2. Node.js & npm (for compiling frontend assets)
  3. FFmpeg (on your system's global PATH)
    • Note: FFmpeg is required for transcoding downloaded audio and writing tags to MP3/Opus files.

🚀 Getting Started

1. Build the Frontend SPA

Compile the React source files into static production assets:

cd frontend
npm install
npm run build
cd ..

The compiled output is saved to ./frontend/dist/.

2. Run the Go Server

Launch the server in development or production mode:

go run main.go

By default, the application runs on http://localhost:8080.

You can customize runtime options by changing settings directly within the UI Settings Panel or modifying ./data/settings.json after the first run.


📂 Project Directory Structure

  • /backend - Legacy Go core business logic and VM runner.
  • /frontend - React source files, CSS, assets, and build configurations.
  • /data - Local storage directory for configurations and extensions cache.
  • /downloads - Default folder where downloaded FLAC/MP3 files are stored.
  • main.go - The entry point web server and async background worker queue runner.

🛰️ API Endpoint Documentation

Endpoint Method Description
/api/settings GET / POST Retrieve or update system configurations (paths, formats, priorities)
/api/extensions GET List all locally installed extensions and their status
/api/extensions/registry GET Fetch all available extensions from the global JSON registry
/api/extensions/install POST Install a registry extension by ID or upload a .spotiflac-ext
/api/extensions/toggle POST Enable or disable a loaded extension VM
/api/extensions/delete POST Remove an extension from local storage
/api/search GET Perform text-based search queries or parse Spotify links
/api/download POST Trigger asynchronous music downloading background tasks
/api/download/progress GET Server-Sent Events (SSE) stream for download percentage
/api/download/cancel POST Terminate active background download operations
/api/library GET List audio files in your local downloads folder
/api/library/metadata GET / POST Read or edit track ID3/FLAC metadata tags

📜 License

Ported with ❤️ from SpotiFLAC-Mobile.