UniRhy is a self-hosted music streaming platform organized as a monorepo with separated backend, frontend, and website projects. It aims to provide deployable and extensible music library management, playback, and synchronization capabilities.
English | 简体中文
Note
This project is still in a very early stage. Feedback and contributions of all kinds are welcome, and existing features may still change significantly.
Tip
QQ 群:678087094 | Discord:https://discord.gg/CqTpmpmzWv
All album covers shown are public domain (CC0 / Public Domain Mark) artworks from The Met Open Access and Internet Archive netlabels. Album, artist, and track names are fictional demo data.
- Self-hosted deployment with no external service dependency.
- Music resource management.
- Cross-platform clients for Web, macOS, Android, iOS, and Windows.
- Playback state synchronization.
- Plugin-based extension support.
Tip
The macOS build is unsigned. If macOS reports the app as damaged, run xattr -cr /Applications/UniRhy.app to remove the quarantine attribute.
server/: Backend service based on Spring Boot, Kotlin, Gradle, and Jimmer ORM.web/: Main frontend client based on Vue, TypeScript, Vite, Pinia, and Tailwind CSS, including Tauri 2 desktop configuration.website/: Project website based on Vue, TypeScript, and Vite.docker/: Containerization files.docs/: Project-level supplementary documentation, including release notes underdocs/release_notes/.
- JDK 25
- Node.js 24
- Yarn 4.12+
- Docker
- tmux
# 1. 启动 PostgreSQL
docker run -d --name unirhy-pg \
-e POSTGRES_DB=unirhy -e POSTGRES_USER=pgroot -e POSTGRES_PASSWORD=pgroot \
-p 5432:5432 postgres:17
# 2. 配置 server/.env(参考 server/.env.example)
cp server/.env.example server/.env
# 3. 启动全部服务(server + web + website)
scripts/dev.sh start
# 查看状态
scripts/dev.sh status- Terminology Dictionary
- Backend Testing Guide
- Playback Sync
- Backend Dependencies
- Frontend Dependencies
See LICENSE.