No description
Find a file
2025-09-13 12:15:49 +02:00
.forgejo/workflows Fix workflow 2025-09-11 23:40:44 +02:00
backend Delete artwork button and workflow 2025-09-13 12:13:39 +02:00
frontend Delete artwork button and workflow 2025-09-13 12:13:39 +02:00
static/badges Initial commit (lol) 2025-09-11 23:38:39 +02:00
.gitignore Initial commit (lol) 2025-09-11 23:38:39 +02:00
Cargo.lock Initial commit (lol) 2025-09-11 23:38:39 +02:00
Cargo.toml Initial commit (lol) 2025-09-11 23:38:39 +02:00
DEVELOPMENT.md Initial commit (lol) 2025-09-11 23:38:39 +02:00
docker-compose.dev.yml Initial commit (lol) 2025-09-11 23:38:39 +02:00
docker-compose.yml Initial commit (lol) 2025-09-11 23:38:39 +02:00
Dockerfile Remove unused functions and fix Dockerfile 2025-09-12 00:02:29 +02:00
LICENSE Initial commit (lol) 2025-09-11 23:38:39 +02:00
README.md Initial commit (lol) 2025-09-11 23:38:39 +02:00


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
  1. About The Project
  2. Architecture
  3. Features
  4. Deployment
  5. Contributing
  6. License
  7. Contact

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 Login Interface

Directory Browser Directory Browser

Tag Editor Tag Editor

Image Tag Editor Image Tag Editor

(back to top)

Built With

Rust WebAssembly Yew Rocket Docker

(back to top)

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

(back to top)

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

(back to top)

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/

(back to top)

Contributing

Contributions are welcome! Please fork the repository, make your changes, and open a pull request.

  1. Fork the Project on Forgejo
  2. Create your Feature Branch (git checkout -b feature/AmazingFeature)
  3. Commit your Changes (git commit -m 'Add some AmazingFeature')
  4. Push to the Branch (git push origin feature/AmazingFeature)
  5. Open a Pull Request

(back to top)

License

Distributed under the European Union Public License v1.2. See LICENSE for more information.

(back to top)

Contact

Aitor Astorga Saez de Vicuña - a.astorga.sdv@protonmail.com

Project Link: https://git.prisma.moe/aichan/navidrome_manager

(back to top)

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

(back to top)