mirror of
https://github.com/markuryy/shark.git
synced 2025-12-12 11:41:02 +00:00
36c0bc7dc70466aee4b40f6505c85408b473f6e1
Introduce metadata handling for online downloads: - Embed cover art and lyrics (synced/unsynced) into MP3 files - Save cover art to album folders and .lrc lyric files as sidecars - Fetch and parse album/track metadata and lyrics from Deezer API - Add user settings for artwork and lyrics embedding, LRC export, and cover quality - Refactor queue manager to run continuously in background
Shark!
Desktop music management application written in Typescript.
Inspiration
Inspired by this post on X, and the functionality of Deemix, written from the ground up for Tauri's webwiew without the Node.js dependency. Instead it has much more specific dependencies :)
Tech Stack
- Tauri 2 (desktop runtime)
- SvelteKit 2 with Svelte 5 (frontend)
- TypeScript
- Bun (package manager)
- Not-very-faithful Windows 98-style UI theme (98-dark.css)
Setup
Prerequisites
- Bun installed
- Rust toolchain (for Tauri)
Installation
bun install
Configuration
- Run the app:
bun run tauri dev - Go to Settings and configure:
- Music folder (where downloads will be saved)
- Playlists folder (for .m3u8 files)
- Download settings (format, concurrency, overwrite behavior)
Development
# Run dev server (hot reload)
bun run tauri dev
# Build for production
bun run tauri build
# Type checking
bun run check
Architecture
src/
├── routes/ # SvelteKit pages
│ ├── library/ # Local library view
│ ├── services/ # Downloads and metadata services UI
│ ├── downloads/ # Download queue UI
│ └── settings/ # App settings
├── lib/
│ ├── services/ # Downloads and metadata services
│ ├── library/ # Library scanner, album/playlist loaders
│ ├── stores/ # Svelte stores (settings, auth, queue)
│ └── types/ # TypeScript type definitions
src-tauri/
├── capabilities/ # Tauri security permissions
└── tauri.conf.json # Tauri configuration
License
This repo has been made source available. It is not licensed under a single open source license. Check upstream libraries for license details.
Description
Languages
TypeScript
46.9%
Svelte
44%
Rust
8.6%
JavaScript
0.3%