Skip to content

JereoZero/JMusic

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

58 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

JlocalMusic Logo

JlocalMusic Music Player

License: MIT Tauri React

A local music player built with Tauri 2 + React 19, focused on a clean and efficient local music management experience.

Local Music Liked Songs Play History
🎵 Local Music ❤️ Liked Songs 📋 Play History
Lyrics View Playing Paused
🎤 Lyrics View ▶️ Playing ⏸️ Paused
Album Cover Background Different Album Colors Settings
🎨 Album Cover Background 🌈 Different Album Colors ⚙️ Settings
Local Playlist Hidden Songs
📁 Local Playlist 🙈 Hidden Songs

✨ Features

  • 🚀 Lightweight & Fast - Built with Tauri 2, small bundle size, quick startup
  • 🎵 Wide Format Support - MP3, FLAC, WAV, DSF, DFF, OGG, AAC, M4A and more
  • 🎤 Lyrics Support - LRC lyrics files and embedded lyrics with auto-scroll
  • 🎨 Theme System - 5 themes (Blue, Orange, Khaki, Gray Blue, Olive Green, Neon Green), dynamic background colors
  • 🔒 Privacy First - All data stored locally
  • 📁 Smart Management - Multi-folder support, auto-cleanup deleted songs
  • ▶️ Independent Play Queues - Each view (Local/Liked/Hidden/History) has its own play queue

🖱️ Interactions

  • 🖱️ Scroll to Seek - Hover over the progress bar and scroll the mouse wheel to fast-forward/rewind
  • 🔊 Scroll to Adjust Volume - Hover near the volume bar and scroll the mouse wheel to adjust volume
  • 🎤 Click Album to Play/Pause - Click the album cover in the lyrics view to toggle play/pause
  • 🔄 Mini Icon for Lyrics - Click the small album icon in the bottom-left to enter or exit the lyrics view
  • 👁️ Hover to Reveal Lyrics - Hover the mouse over the lyrics view to display all lyrics clearly
  • Drag Lyrics to Seek - Drag the lyrics to a specific line to start playing from that position

💡 Currently developed and tested on macOS Apple Silicon. Windows/Linux support coming soon.

🎼 Supported Formats

Format Extensions Status
MP3 .mp3 ✅ Full Support
FLAC .flac ✅ Full Support
WAV .wav ✅ Full Support
DSF/DSD .dsf, .dff, .dsd ✅ Full Support
OGG Vorbis .ogg, .oga ✅ Full Support
AAC/M4A .aac, .m4a ✅ Full Support
NCM .ncm ⚠️ Recognition only, auto-hidden
QMC .qmc, .qmc0, .qmc3 ⚠️ Recognition only, auto-hidden

🛠️ Tech Stack

Backend (Rust)

  • Tauri 2 - Cross-platform desktop framework
  • SQLite + sqlx - Lightweight database
  • rodio + Symphonia - Audio playback and decoding
  • lofty - Audio metadata extraction
  • tokio - Async runtime

Frontend (React)

  • React 19 - UI library
  • TypeScript - Type safety
  • Tailwind CSS - Utility-first CSS
  • Zustand - Lightweight state management
  • Lucide React - Icon library
  • sonner - Toast notifications
  • colorthief - Album cover color extraction
  • react-hotkeys-hook - Keyboard shortcuts
  • es-toolkit - Debounce/throttle utilities

📦 Project Structure

Jlocal/
├── src/                    # Frontend code
│   ├── api/                # API wrappers
│   ├── components/         # Reusable components
│   ├── stores/             # State management (Zustand)
│   ├── views/              # Page views
│   └── hooks/              # Custom hooks
├── src-tauri/              # Backend code (Rust)
│   ├── src/
│   │   ├── commands/       # Tauri commands
│   │   ├── database.rs     # Database operations
│   │   ├── player.rs       # Audio player
│   │   ├── scanner.rs      # Folder scanning
│   │   └── metadata.rs     # Metadata extraction
│   └── icons/              # App icons
├── public/                 # Static assets
└── docs/                   # Documentation

🚀 Development

Prerequisites

  • Node.js 18+
  • Rust 1.70+
  • macOS (Apple Silicon)

Local Setup

# Clone repository
git clone https://github.com/your-username/jlocal.git
cd jlocal

# Install dependencies
npm install

# Development mode
npm run tauri:dev

# Build
npm run tauri:build

Common Commands

npm run dev          # Frontend development
npm run typecheck    # Type checking
npm test             # Run tests
npm run lint         # Linting

🛠️ Built With

This project uses the following open source libraries:

Frontend

Backend

  • Tauri - Desktop Framework (MIT/APACHE-2.0)
  • Rust - Programming Language (MIT/APACHE-2.0)
  • rodio - Audio Playback (MIT)
  • Symphonia - Audio Decoding (MPL 2.0)
  • lofty - Audio Metadata (MIT)
  • sqlx - Database (MIT/APACHE-2.0)
  • tokio - Async Runtime (MIT)
  • chardetng - Encoding Detection (MIT/APACHE-2.0)

🤝 Contributing

Issues and Pull Requests are welcome!

See CONTRIBUTING.md for details.

📄 License

MIT License


Made with ❤️ using Tauri + React

About

🎵 一个基于 Tauri 2 + React 19 的本地音乐播放器,支持多种无损格式,专注简洁高效的本地音乐管理体验。A local music player built with Tauri 2 + React 19, supporting lossless formats.

Topics

Resources

License

Contributing

Stars

Watchers

Forks

Packages

 
 
 

Contributors