A svelte frontend for gonic
This commit introduces comprehensive playlist functionality, containerization support, and project infrastructure: **Playlist Features:** - Enhanced ContextMenu with playlist selection submenu - Create new playlists directly from context menu - Add songs to existing playlists via right-click - Fix Subsonic API array parameter handling for playlist operations **Docker & Deployment:** - Add Dockerfile with multi-stage build - Add docker-compose.yml for easy deployment - Add .dockerignore for optimized builds - Add comprehensive DOCKER.md documentation **Project Infrastructure:** - Add CI/CD workflows for GitHub and Forgejo - Add CHANGELOG.md and RELEASE.md for version tracking - Add CONTRIBUTING.md with development guidelines - Add SECURITY_AUDIT.md documenting security review - Add GitHub issue templates for bugs and features - Update todo list with completed tasks 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com> |
||
|---|---|---|
| .forgejo/workflows | ||
| .github | ||
| src | ||
| static | ||
| .dockerignore | ||
| .gitignore | ||
| .npmrc | ||
| CHANGELOG.md | ||
| COMPLETION_SUMMARY.md | ||
| CONTRIBUTING.md | ||
| docker-compose.yml | ||
| DOCKER.md | ||
| Dockerfile | ||
| LICENSE | ||
| package-lock.json | ||
| package.json | ||
| README.md | ||
| RELEASE.md | ||
| SECURITY_AUDIT.md | ||
| svelte.config.js | ||
| tmp_todo.md | ||
| tsconfig.json | ||
| vite.config.ts | ||
Gonic Svelte Frontend
A modern SvelteKit frontend for the Gonic Subsonic music server.
Features
- 🎵 Music Library Browsing: Browse artists, albums, and songs
- 🔍 Search: Search across your entire music collection
- 🎧 Music Player: Built-in audio player with progress control
- 📱 Responsive Design: Works on desktop and mobile devices
- 🔐 Authentication: Secure login with your Gonic server credentials
- 🎨 Modern UI: Clean, intuitive interface built with SvelteKit
Prerequisites
- A running Gonic server
- Node.js 18+ and npm
Quick Start
-
Clone and install dependencies:
git clone <repository-url> cd gonic-svelte npm install -
Start the development server:
npm run dev -
Open your browser and navigate to
http://localhost:5173 -
Connect to your Gonic server:
- Enter your Gonic server URL (e.g.,
http://localhost:4747) - Enter your username and password
- Click "Connect"
- Enter your Gonic server URL (e.g.,
Configuration
The app will remember your server connection details in browser storage. Default Gonic credentials are:
- Username:
admin - Password:
admin
Building for Production
To create a production build:
npm run build
Preview the production build:
npm run preview
API Compatibility
This frontend implements the Subsonic API v1.16.0 and is compatible with:
- Gonic
- Other Subsonic-compatible servers
Development
The project structure:
src/
├── lib/
│ ├── components/ # Svelte components
│ │ ├── Login.svelte # Authentication form
│ │ ├── MusicLibrary.svelte # Main library interface
│ │ └── MusicPlayer.svelte # Audio player
│ ├── stores.ts # Svelte stores for state management
│ └── subsonic.ts # Subsonic API client
├── routes/
│ ├── +layout.svelte # App layout
│ └── +page.svelte # Main page
└── app.css # Global styles
Contributing
- Fork the repository
- Create a feature branch
- Make your changes
- Test thoroughly
- Submit a pull request
License
MIT License - see the LICENSE file for details.
Acknowledgments
- Gonic - The music server this frontend is built for
- SvelteKit - The application framework
- Subsonic API - The API specification