Skip to content

pathetic/bloodin

Repository files navigation

logo

Bloodin

A beautiful, modern desktop music player client for Jellyfin servers built with Tauri, React, and Rust.

Bloodin Music Player Tauri React TypeScript Rust

✨ Features

  • 🎶 High-quality audio playback with fullscreen player
  • 📚 Complete library browsing - songs, albums, artists
  • 🔍 Smart search with animated glassmorphism UI (WIP)
  • 🎨 Modern interface with multiple DaisyUI themes
  • Rust performance - fast, efficient, cross-platform

📸 Screenshots

Bloodin Home Page

🚀 Getting Started

Prerequisites

Make sure you have the following installed:

Installation

  1. Clone the repository

    git clone https://github.com/pathetic/bloodin
    cd bloodin
  2. Install dependencies

    npm install
  3. Run in development mode

    npm run tauri dev
  4. Build for production

    npm run tauri build

Connecting to Jellyfin

  1. Launch Bloodin
  2. Enter your Jellyfin server details:
    • Server URL: Your Jellyfin server address (e.g., http://192.168.1.100:8096)
    • Username: Your Jellyfin username
    • Password: Your Jellyfin password
  3. Click "Connect" and start enjoying your music!

🛠️ Technology Stack

Frontend

Backend

  • Rust - Systems programming language for performance
  • Tauri - Desktop app framework
  • Rodio with Symphonia - High-quality audio playback and decoding
  • Jellyfin API - Music library and streaming integration

📁 Project Structure

bloodin/
├── src/                      # Frontend source code
│   ├── components/           # React components
│   │   ├── TitleBar.tsx     # Custom window title bar
│   │   ├── SearchBar.tsx    # Animated search component
│   │   ├── Sidebar.tsx      # Navigation sidebar
│   │   ├── PlayerBar/       # Music player controls
│   │   └── ...
│   ├── pages/               # Application pages
│   │   ├── HomePage.tsx     # Main dashboard
│   │   ├── LoginPage.tsx    # Jellyfin connection
│   │   ├── SongsPage.tsx    # Songs browser
│   │   └── ...
│   ├── hooks/               # Custom React hooks
│   ├── contexts/            # React context providers
│   ├── services/            # API and service layers
│   └── types/               # TypeScript type definitions
├── src-tauri/               # Rust backend
│   ├── src/                 # Rust source code
│   └── tauri.conf.json      # Tauri configuration
├── public/                  # Static assets
└── dist/                    # Built application

🎨 Theming

Bloodin supports all DaisyUI themes, allowing you to customize the interface to your preference.

🔧 Development

Available Scripts

  • npm run dev - Start Vite development server
  • npm run build - Build frontend for production
  • npm run preview - Preview production build
  • npm run tauri dev - Run Tauri in development mode
  • npm run tauri build - Build Tauri application

Contributing

  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/amazing-feature)
  3. Commit your changes (git commit -m 'Add amazing feature')
  4. Push to the branch (git push origin feature/amazing-feature)
  5. Open a Pull Request

📋 Roadmap

  • Core UI and Authentication
  • Music Library Browsing
  • Audio Playback Engine
  • Offline Caching
  • Better Queue Management (WIP)
  • Advanced Search & Filters (WIP)
  • Playlist Management (WIP)

📄 License

This project is licensed under the MIT License - see the LICENSE file for details.

🙏 Acknowledgments

  • Jellyfin - The amazing open-source media server
  • Tauri - Secure, fast, and lightweight desktop apps
  • DaisyUI - Beautiful component library
  • Tabler Icons - Gorgeous icon set

Built with ❤️ for music lovers everywhere

About

[WIP] A modern Rust self-hosted music player. (Jellyfin)

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published