A modern, minimalist music player for managing your local media library with streaming capabilities through Tidal and Qobuz APIs.
Based on: Monochrome by @monochrome-music
- Features
- Screenshots
- Quick Start
- Installation
- Configuration
- Usage
- Technology Stack
- Project Structure
- Contributing
- License
- Acknowledgments
- Multiple Formats: MP3, FLAC, WAV, OGG, M4A
- Hi-Res Audio: Support for Hi-Res Lossless quality
- DASH Streaming: Adaptive bitrate streaming
- Crossfade: Smooth transitions between tracks
- Replay Gain: Volume normalization
- Equalizer: 10-band parametric equalizer
- Visualizers: Multiple visualization modes (Butterchurn, Kawarp, Particles)
- Local Files: Scan and organize your local music collection
- Playlists: Create, import, and export playlists
- Import Formats: CSV, JSPF, XSPF, M3U, VK Music
- Folders: Organize playlists into folders
- Smart Search: Fast library search with filters
- Tidal API: Access Tidal's music catalog
- Qobuz API: Stream from Qobuz
- Multiple Instances: Support for multiple API endpoints
- Endless Mix: AI-powered infinite music recommendations
- Minimalist Design: Clean, modern interface
- Responsive: Works on desktop, tablet, and mobile
- Themes: 10+ built-in color themes
- Customization: Extensive UI customization options
- Keyboard Shortcuts: Full keyboard control
- Last.fm: Track your listening history
- ListenBrainz: Open-source scrobbling
- Libre.fm: Independent scrobbling service
- Maloja: Self-hosted scrobbling
- Cross-Platform: Windows, macOS, Linux
- Neutralino.js: Lightweight desktop framework
- Discord RPC: Rich Presence integration
- System Tray: Background operation
- Native Notifications: Desktop notifications
- Offline Support: Works without internet
- Installable: Add to home screen
- Push Notifications: Browser notifications
- Fast Loading: Optimized performance
Add your screenshots here
π screenshots/
βββ home.png # Main page
βββ player.png # Player view
βββ library.png # Library view
βββ settings.png # Settings page
βββ desktop.png # Desktop app
- Node.js >= 18.0.0
- npm >= 9.0.0 (or Bun)
# Clone the repository
git clone https://github.com/Bebrowskiy/barashka.git
cd barashka
# Install dependencies
npm install# Start development server
npm run dev
# Open browser at http://localhost:5173# Build for web
npm run build:web
# Build desktop app
npm run build
# Preview production build
npm run preview- Enable GitHub Pages in repository settings
- Set source:
Deploy from branchβmainβ/dist - Push changes:
npm run build:web git add dist/ git commit -m "Build for GitHub Pages" git push - Access at:
https://username.github.io/repo-name/
# Build and run
docker compose up -d
# Access at http://localhost:3000npm run build
# Output: dist/Barashka/Barashka-win.exenpm run build
# Output: dist/Barashka/Barashka.dmgnpm run build
# Output: dist/Barashka/Barashka-linux_x64.AppImageCopy .env.example to .env and configure:
# Application
BARASHKA_PORT=3000
BARASHKA_DEV_PORT=5173
# Authentication (optional)
AUTH_ENABLED=false
AUTH_SECRET=your-secret-key-minimum-32-characters
FIREBASE_PROJECT_ID=your-firebase-project
# PocketBase (optional)
POCKETBASE_URL=https://db.yourdomain.comSee .env.example for all available options.
- Create a project at Firebase Console
- Enable Authentication β Sign-in methods
- Copy
firebaseConfigto.env:FIREBASE_CONFIG={"apiKey":"...","authDomain":"...","projectId":"..."}
- Download PocketBase
- Create collections (see
AUTH_GATE.md) - Set
POCKETBASE_URLin.env
| Action | Shortcut |
|---|---|
| Play/Pause | Space |
| Next Track | Shift + β |
| Previous Track | Shift + β |
| Volume Up | β |
| Volume Down | β |
| Search | / |
| Toggle Lyrics | L |
| Toggle Queue | Q |
See full list in Settings β Keyboard Shortcuts.
- Copy parser script from Settings β Import β VK Music
- Open VK playlist
- Paste script in browser console (F12)
- Click "Export to Barashka" button
- Import downloaded file in Barashka
- Go to Settings β Audio β Crossfade
- Enable Crossfade
- Adjust duration (1-30 seconds)
- Select fade curve (Logarithmic recommended)
| Technology | Purpose |
|---|---|
| JavaScript ES6+ | Core logic |
| HTML5 | Structure |
| CSS3 | Styling with custom properties |
| IndexedDB | Local storage |
| Web Audio API | Audio processing |
| Tool | Purpose |
|---|---|
| Vite | Fast bundler |
| vite-plugin-pwa | PWA support |
| vite-plugin-neutralino | Desktop integration |
| ESLint | Code linting |
| Prettier | Code formatting |
| Stylelint | CSS linting |
| Library | Purpose |
|---|---|
| dashjs | DASH streaming |
| @ffmpeg/ffmpeg | Audio conversion |
| butterchurn | Winamp visualizer |
| @kawarp/core | Caustic visualizer |
| firebase | Authentication |
| pocketbase | Database sync |
| appwrite | Alternative backend |
barashka/
βββ π Configuration Files
β βββ package.json # Dependencies & scripts
β βββ vite.config.js # Vite configuration
β βββ neutralino.config.json # Desktop config
β βββ .env.example # Environment template
β βββ .gitignore # Git ignore rules
β βββ eslint.config.js # ESLint rules
β
βββ π Documentation
β βββ README.md # This file
β βββ CONTRIBUTING.md # Contribution guide
β βββ LICENSE # Apache 2.0 license
β βββ AUTH_GATE.md # Authentication setup
β βββ DESIGN.md # Design system
β βββ INSTANCES.md # API instances list
β βββ THEME_GUIDE.md # Theme creation
β
βββ π Source Code
β βββ index.html # Main HTML (entry point)
β βββ styles.css # Global styles
β βββ js/ # JavaScript modules
β β βββ app.js # Application entry
β β βββ player.js # Audio player
β β βββ ui.js # UI rendering
β β βββ api.js # Tidal API client
β β βββ crossfade.js # Crossfade manager
β β βββ vk-importer.js # VK import
β β βββ ... # Other modules
β β
βββ π Public Assets
β βββ public/ # Static files
β β βββ assets/ # Images, icons
β β βββ fonts/ # Custom fonts
β β βββ manifest.json # PWA manifest
β β
βββ π Extensions
β βββ extensions/ # Neutralino extensions
β βββ js.neutralino.discordrpc/
β
βββ β‘ Cloudflare Workers
β βββ functions/ # Serverless functions
β
βββ π¦ Build Output
βββ dist/ # Production build
We welcome contributions! See CONTRIBUTING.md for guidelines.
# Fork and clone
git clone https://github.com/YOUR_USERNAME/barashka.git
cd barashka
# Create branch
git checkout -b feature/your-feature
# Make changes, then:
npm run lint
npm run format
npm run build:check
# Commit and push
git commit -m "feat: add your feature"
git push origin feature/your-feature- Monochrome - Original project and inspiration
- Neutralino.js - Desktop framework
- Tidal - Music streaming service
- Qobuz - Hi-Res music streaming
- All open-source contributors π
πΆ Music is the language of the soul. Let your player sound perfect.