A modern, open-source music player built with Electron and React, featuring a beautiful and intuitive interface.
- Node.js 18+ (Install Node.js)
- npm or yarn package manager
- Linux users: ALSA development libraries
- Debian/Ubuntu:
sudo apt-get install libasound2-dev pkg-config - Arch Linux/SteamOS:
sudo pacman -S alsa-lib pkg-config
- Debian/Ubuntu:
- Rust 1.70+ (for backend development): Install Rust
# Clone the repository
git clone https://github.com/fromabyssstudio/Hexendrum.git
cd Hexendrum
# Install dependencies
npm install
# Run both frontend and backend together
npm run dev
# OR using Makefile:
make run-fullThis will start:
- Rust backend (cargo run)
- Webpack dev server (http://localhost:4000)
- Electron frontend (connects to webpack dev server)
# Run Rust backend only
cargo run
# Optional: include the terminal playbar
cargo run -- --cli-playbar
# OR using Makefile:
make run# Run only the Electron frontend (requires webpack server)
npm run dev:frontend# Build everything for production
npm run build
npm start- Multi-format Audio Support: MP3, FLAC, OGG, WAV, M4A, AAC
- Music Library Management: Scan and organize your music collection
- Playlist Support: Create, edit, and manage playlists
- Smart Search: Search through your library by title, artist, or album
- Advanced Playback Controls: Play, pause, skip, volume control, queue management
- Realtime Updates: Playback state, volume, and scan progress via WebSocket
- Modern GUI: Clean, intuitive interface built with React and Electron
- Metadata Aware: Uses embedded tags (via Lofty) for album art, duration, and artist info
- CLI Playbar (optional): Follow playback directly in the terminal with
--cli-playbar - Cross-platform: Works on Windows, macOS, and Linux
- Configurable: Customize audio settings, library paths, and more
- Fast & Efficient: Built with modern web technologies for performance
- User Guide - How to use Hexendrum
- Developer Guide - Contributing and development
- API Reference - Code documentation
- Swagger/OpenAPI Docs - Interactive API documentation (available at
http://127.0.0.1:3030/swagger-ui) - Changelog - Version history
- Project Status - Current development status
npm installnpm run dev # Start development server
npm run build # Build for production
npm run start # Start production build
npm run dist # Create distributable packagesHexendrum/
├── renderer/ # React frontend application
│ ├── components/ # Reusable UI components
│ ├── pages/ # Application pages
│ ├── contexts/ # React contexts
│ └── styles/ # CSS and styling
├── main.js # Electron main process
├── preload.js # Electron preload script
├── webpack.config.js # Webpack configuration
├── package.json # Node.js dependencies and scripts
├── docs/ # Documentation
│ ├── user/ # User documentation
│ ├── developer/ # Developer documentation
│ └── api/ # API reference
├── assets/ # Icons, images, themes
└── scripts/ # Build and maintenance scripts
We welcome contributions! Please see our Contributing Guide for details.
- Fork the repository
- Create a feature branch
- Make your changes
- Add tests if applicable
- Submit a pull request
This project is licensed under the MIT License - see the LICENSE file for details.
- egui: Modern, fast GUI framework
- rodio: Cross-platform audio playback
- symphonia: Audio format decoding
- Rust Community: Excellent ecosystem and tools
- Issues: GitHub Issues
- Discussions: GitHub Discussions
- Wiki: Project Wiki
Made with 🦀 by From Abyss Studio
Hexendrum - Where music meets innovation