A beautiful, fluid Spotify desktop client built with Svelte, Electron, and Tailwind CSS.
- Fluid Animations - Bouncy, liquid-like transitions inspired by Apple's design language
- Modern UI - Bubbly, rounded design that's easy on the eyes
- Next Track Preview - See what's coming up ~30 seconds before the current song ends
- Smooth Song Transitions - Satisfying "reverb" animation when tracks change
- Native Desktop Experience - Runs natively on Windows, macOS, and Linux
- Node.js (v18 or higher)
- Bun (recommended) or npm
- A Spotify Premium account (required for playback SDK)
- Clone the repository:
git clone https://github.com/yourusername/muffle.git
cd muffle- Install dependencies:
bun install-
Set up Spotify API credentials:
- Go to Spotify Developer Dashboard
- Create a new app
- Add
http://localhost:5173/callbackto Redirect URIs - Copy your Client ID
- Update
src/lib/stores/spotifyStore.jswith your Client ID:
const SPOTIFY_CLIENT_ID = 'your_client_id_here'
-
Start the development server:
bun run electron:devbun run electron:buildThis will create installable packages in the release/ folder.
Muffle was designed to fix what we feel is wrong with the official Spotify client:
- Performance - Built with Svelte for minimal overhead and maximum speed
- Aesthetics - Rounded corners, subtle shadows, and fluid animations
- Delight - Small touches like the bouncy buttons and the reverb animation make using the app enjoyable
- Svelte 5 - Reactive UI framework
- Electron - Desktop app framework
- Tailwind CSS v4 - Utility-first CSS
- Vite - Build tool
- Spotify Web Playback SDK - Music playback
muffle/
├── electron/
│ ├── main.js # Electron main process
│ └── preload.js # Preload script for IPC
├── src/
│ ├── lib/
│ │ ├── components/ # Svelte components
│ │ └── stores/ # Svelte stores (state management)
│ ├── App.svelte # Root component
│ ├── app.css # Global styles & animations
│ └── main.js # App entry point
├── index.html
├── package.json
├── svelte.config.js
└── vite.config.js
Cards lift and scale with a spring-bounce easing for a tactile feel.
When a new song starts, the player "reverbs" with a ripple effect.
About 30 seconds before a song ends, the next track's album art slides in from the left.
A mini equalizer pulses when music is playing.
MIT
- Spotify for the amazing API and SDK
- The Svelte team for an incredible framework
- Electron team for making cross-platform apps possible
