Skip to content

🛠️ Development Guide

Welcome to the EchoMusic development documentation. This section is for developers who want to contribute to the project or understand its internal implementation.

Tech Stack

CategoryTechnology
Desktop FrameworkElectron 42.3
Frontend FrameworkVue 3.5 + Composition API
Type SystemTypeScript 5.9
Build ToolVite 8
State ManagementPinia + pinia-plugin-persistedstate
UI Component LibraryReka UI
CSS FrameworkTailwind CSS v4.3
RoutingVue Router
Package Managerpnpm 9+
Backend ServiceNode.js (built-in local server, in-process invocation)
Audio Engineecho-ffmpeg-player (embedded FFmpeg decoding + SoundTouch via Rust NAPI in-process)
Native Extensionsnapi-rs (Rust → Node.js native modules)
Local StorageSQLite (via echo-sqlite-store addon)
LicenseGPL v3.0

Core Architecture

EchoMusic uses Electron's classic dual-process architecture with Rust NAPI native extensions for high-performance audio playback:

┌─────────────────────────────────────────┐
│              Electron Shell              │
│  ┌──────────────┐  ┌─────────────────┐  │
│  │  Main Process │  │ Renderer Process │  │
│  │  (Node.js)    │  │   (Vue 3 + Vite)│  │
│  │               │  │                  │  │
│  │  ┌─────────┐  │  │  ┌────────────┐  │  │
│  │  │ Server  │  │  │  │   Pinia    │  │  │
│  │  │ (API)   │◄─┼──┼─►│  (Store)   │  │  │
│  │  └─────────┘  │  │  └────────────┘  │  │
│  │  ┌─────────┐  │  │  ┌────────────┐  │  │
│  │  │ Native  │  │  │  │  Tailwind  │  │  │
│  │  │ Addons  │  │  │  │  CSS v4    │  │  │
│  │  │ (Rust)  │  │  │  └────────────┘  │  │
│  │  └─────────┘  │  │                  │  │
│  └──────────────┘  └─────────────────┘  │
└─────────────────────────────────────────┘

Three Native Modules

ModuleFunctionTechnology
echo-ffmpeg-playerFFmpeg + SoundTouch playback engine wrapper with fade, EQ, loudness normalization, speed control, device switching, exclusive output, real-time spectrumRust + FFmpeg
echo-media-controlsSystem media control integration (macOS / Windows / Linux native APIs)Rust + OS API
echo-sqlite-storeSQLite local persistence for settings, playback queue, and state snapshotsRust + rusqlite

Document Index