A modern, local music player with a Spotify-inspired experience
Features ⢠Installation ⢠Development ⢠Plugins ⢠License
Clean, modern interface for browsing your music library
Real-time synced lyrics with smooth scrolling
Immersive full-screen player with album art and lyrics
Beautiful album pages with track listings
Extensible plugin system for custom functionality
Download the latest release for your platform from the Releases page.
| Platform | Download |
|---|---|
| Windows | Audion_1.0.0_x64-setup.exe |
# Clone the repository
git clone https://github.com/dupitydumb/Audion.git
cd audion
# Install dependencies
npm install
# Run in development mode
npm run tauri dev
# Build for production
npm run tauri build
| Layer | Technology |
|---|---|
| Framework | Tauri 2.0 |
| Frontend | SvelteKit + TypeScript |
| Backend | Rust |
| Database | SQLite (via rusqlite) |
| Styling | CSS Variables + Custom Theme Engine |
audion/
āāā src/ # Frontend (SvelteKit)
ā āāā lib/
ā ā āāā components/ # UI components
ā ā āāā stores/ # Svelte stores (state management)
ā ā āāā plugins/ # Plugin runtime & API
ā ā āāā lyrics/ # Lyrics fetching (LRCLIB, Musixmatch)
ā ā āāā api/ # Tauri API wrappers
ā āāā routes/ # SvelteKit routes
āāā src-tauri/ # Backend (Rust)
ā āāā src/
ā ā āāā commands/ # Tauri commands
ā ā āāā db/ # SQLite database operations
ā ā āāā scanner/ # Music file scanner
ā āāā tauri.conf.json # Tauri configuration
āāā plugin-examples/ # Example plugins
āāā static/ # Static assets
npm run dev # Start SvelteKit dev server
npm run build # Build frontend for production
npm run tauri dev # Run full Tauri app in development
npm run tauri build # Build production binaries
npm run check # TypeScript type checking
Audion supports a flexible plugin system that allows extending functionality.
| Permission | Description |
|---|---|
player:read |
Access current track, playback state |
player:control |
Play, pause, skip, seek |
storage:local |
Persist plugin data locally |
ui:inject |
Add custom UI elements |
system:notify |
Show system notifications |
(function() {
const MyPlugin = {
init(api) {
this.api = api;
// Listen for track changes
api.on('trackChange', (track) => {
console.log('Now playing:', track.title);
});
},
start() {
// Plugin enabled
},
stop() {
// Plugin disabled
}
};
window.MyPlugin = MyPlugin;
window.AudionPlugin = MyPlugin;
})();
See the plugin-examples folder for more examples.
Audion supports all audio formats that your system can play, including:
This project is licensed under the MIT License. See the LICENSE file for details.