# Shark! Desktop music management application written in Typescript. ## Inspiration Inspired by [this post on X](https://x.com/tehmondspartan/status/1972011472265118148), 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](https://v2.tauri.app/start/) (desktop runtime) - [SvelteKit 2](https://svelte.dev/docs/kit/introduction) with [Svelte 5](https://svelte.dev/docs/svelte/overview) (frontend) - TypeScript - [Bun](https://bun.sh/) (package manager) - Not-very-faithful Windows 98-style UI theme ([98-dark.css](https://github.com/markuryy/98-dark.css)) ## Setup ### Prerequisites - Bun installed - Rust toolchain (for Tauri) ### Installation ```bash bun install ``` ### Configuration 1. Run the app: `bun run tauri dev` 2. Go to Settings and configure: - Music folder (where downloads will be saved) - Playlists folder (for .m3u8 files) - Download settings (format, concurrency, overwrite behavior) ## Development ```bash # 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.