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
- Tauri: Lightweight Rust-based framework
- Discord RPC: Rich Presence integration
- Native Features: System tray, notifications, file system access
- Cross-Platform: Android, iOS
- Capacitor: Native mobile framework
- Touch Optimized: Mobile-friendly interface
- Native Features: Background playback, media controls
- Offline Support: Works without internet
- Installable: Add to home screen
- Push Notifications: Browser notifications
- Fast Loading: Optimized performance
- Guess The Track — Guess the song by 5-second preview (coming soon)
- TikTok Mode: Speed + reverb audio effects (planned)
- Year in Music: Annual listening reports (planned)
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 (Tauri)
npm run tauri build
# Sync mobile apps (Capacitor)
npm run cap:sync
# Build Android
npm run cap:android
# Build iOS
npm run cap:ios
# 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 tauri build
# Output: src-tauri/target/release/bundle/nsis/Barashka_*.exenpm run tauri build
# Output: src-tauri/target/release/bundle/dmg/Barashka_*.dmgnpm run tauri build
# Output: src-tauri/target/release/bundle/
# - .deb package
# - .AppImage# Sync project
npm run cap:sync
# Open in Android Studio
npm run cap:android
# Build APK in Android Studio# Sync project
npm run cap:sync
# Open in Xcode
npm run cap:ios
# Build in XcodeCopy .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 |
| Tauri CLI | Desktop app builder |
| Capacitor CLI | Mobile app sync |
| ESLint | Code linting |
| Prettier | Code formatting |
| Stylelint | CSS linting |
| Library | Purpose |
|---|---|
| @tauri-apps/api | JavaScript API for Tauri |
| @tauri-apps/cli | Tauri build tools (2.10.1) |
| discord-rich-presence | Discord Rich Presence (Rust) |
| tauri-plugin-log | Logging system |
| Library | Purpose |
|---|---|
| @capacitor/core | Capacitor core |
| @capacitor/android | Android platform |
| @capacitor/ios | iOS platform |
| 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
│ ├── capacitor.config.json # Mobile config
│ ├── .env.example # Environment template
│ ├── .gitignore # Git ignore rules
│ └── eslint.config.js # ESLint rules
│
├── 🦀 Tauri Desktop App
│ ├── src-tauri/
│ │ ├── src/
│ │ │ └── lib.rs # Rust backend (Discord RPC)
│ │ ├── icons/ # App icons
│ │ ├── capabilities/ # Tauri permissions
│ │ ├── tauri.conf.json # Tauri configuration
│ │ ├── Cargo.toml # Rust dependencies
│ │ └── Cargo.lock # Rust lock file
│
├── 📱 Capacitor Mobile App
│ ├── android/ # Android project
│ │ ├── app/
│ │ ├── build.gradle
│ │ └── gradlew
│ └── ios/ # iOS project
│ ├── App/
│ └── CapApp-SPM/
│
├── 📚 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
│ ├── TAURI_GUIDE.md # Tauri desktop guide
│ └── DEPLOYMENT.md # Deployment guide
│
├── 📂 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
│ │ ├── discord-rpc.js # Discord Rich Presence (Tauri)
│ │ ├── guess-the-track.js # Guess the track game
│ │ ├── tiktok-mode.js # TikTok audio effects
│ │ ├── 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
│ │
├── ⚡ 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
- Tauri - Desktop framework (Rust-based)
- Capacitor - Mobile 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.