|
||
---|---|---|
.forgejo/workflows | ||
backend | ||
frontend | ||
static/badges | ||
.gitignore | ||
Cargo.lock | ||
Cargo.toml | ||
DEVELOPMENT.md | ||
docker-compose.dev.yml | ||
docker-compose.yml | ||
Dockerfile | ||
LICENSE | ||
README.md |
Navidrome Manager
A web-based music library management tool built with Rust. Features a Yew WebAssembly frontend and Rocket backend API for browsing directories, viewing metadata, and editing audio tags.
Yew Documentation
·
Rocket Documentation
·
Report Bug
·
Request Feature
Table of Contents
About The Project
Navidrome Manager is a web-based music library management tool designed for browsing and editing audio metadata. It provides an intuitive interface for navigating music directories and editing tags with real-time updates using FFmpeg processing.
Screenshots
Login Interface
|
Directory Browser
|
Tag Editor
|
Image Tag Editor
|
Built With
Architecture
Navidrome Manager uses a single-application architecture that combines directory browsing with audio metadata management.
Frontend Interface
Access: http://localhost:8000
or your configured domain
Technology: Rust Yew (compiled to WebAssembly)
- Presents a directory browser and tag editor interface
- Allows browsing music library folders and files
- Features responsive design for desktop and mobile
- Saves tag changes by calling the backend API over HTTP (JSON)
Backend API
Access: http://localhost:8000/api
Technology: Rust Rocket
- Exposes API routes for directory listing and tag updates
- Serves the frontend application at the root path
- Handles authentication with JWT tokens
- Processes audio files using FFmpeg for tag operations
Features
- 🎵 Audio Format Support - MP3, WAV, FLAC, M4A, OGG, AAC file handling
- 📁 Directory Navigation - Browse music library with breadcrumb navigation
- ✏️ Tag Editing - Edit title, artist, album, track number, year, genre, disc number
- 🔄 Real-time Updates - Changes applied immediately using FFmpeg
- 🔐 Authentication - Secure token-based authentication system
- 📱 Responsive Design - Works on desktop and mobile devices
- ⚡ WebAssembly Performance - Fast, native-speed execution in the browser
Deployment
You have multiple options to deploy Navidrome Manager:
Using Docker
Run the pre-built container:
docker run --rm -it \
-p 8000:8000/tcp \
-v /path/to/your/music:/music \
-e ROCKET_ADDRESS=0.0.0.0 \
-e ROCKET_PORT=8000 \
-e ADMIN_PASSWORD=your_password \
-e RUST_LOG=info \
navidrome-manager:latest
Using Docker Compose
Create a docker-compose.yml
file:
services:
navidrome-manager:
container_name: navidrome_manager
image: navidrome-manager:latest
ports:
- 8000:8000
environment:
- ROCKET_ADDRESS=0.0.0.0
- ROCKET_PORT=8000
- ADMIN_PASSWORD=your_password
- TOKEN_TTL_SECONDS=3600
- RUST_LOG=info
volumes:
- /path/to/your/music:/music
restart: unless-stopped
Then run:
docker-compose up -d
Development Mode:
docker-compose -f docker-compose.dev.yml up --build
Access Points:
- Application will be served at
http://localhost:8000/
- API endpoints available at
http://localhost:8000/api/
Contributing
Contributions are welcome! Please fork the repository, make your changes, and open a pull request.
- Fork the Project on Forgejo
- Create your Feature Branch (
git checkout -b feature/AmazingFeature
) - Commit your Changes (
git commit -m 'Add some AmazingFeature'
) - Push to the Branch (
git push origin feature/AmazingFeature
) - Open a Pull Request
License
Distributed under the European Union Public License v1.2. See LICENSE
for more information.
Contact
Aitor Astorga Saez de Vicuña - a.astorga.sdv@protonmail.com
Project Link: https://git.prisma.moe/aichan/navidrome_manager
Acknowledgments
Thanks to these amazing projects and technologies!
- Rust Yew - A modern Rust framework for creating multi-threaded front-end web apps with WebAssembly
- Rocket - A web framework for Rust that makes it simple to write fast, secure web applications
- WebAssembly - A binary instruction format for a stack-based virtual machine
- Lofty - A Rust library for reading and writing audio metadata