# lms-community/slimserver architecture

> Architecture diagram of the GitHub repository lms-community/slimserver, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-28). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/lms-community/slimserver
- Repository: https://github.com/lms-community/slimserver

## Overview

Lyrion Music Server streams local and plugin-provided audio to networked players. This tree is a browser-interface slice, not the server runtime: it shows the player-control shell, browsing and search entry points, playlist interactions, and plugin features. The principal user flow is to choose a player, find or add music, and control playback. Shared controller wiring is visible in Main.js; backend behavior and most request paths are not sampled, so those connections are omitted. The README documents broader streaming capabilities that these files alone cannot trace.

Main entry points: [`HTML/Default/html/Main.js`](https://github.com/lms-community/slimserver/blob/public/9.2/HTML/Default/html/Main.js) (Main shell), [`HTML/Classic/html/dragdrop.js`](https://github.com/lms-community/slimserver/blob/public/9.2/HTML/Classic/html/dragdrop.js) (Playlist reorder), [`HTML/EN/html/SqueezeJS/UI.js`](https://github.com/lms-community/slimserver/blob/public/9.2/HTML/EN/html/SqueezeJS/UI.js) (Player controls), [`Slim/Plugin/DnDPlay/HTML/Default/js-main-dd.js`](https://github.com/lms-community/slimserver/blob/public/9.2/Slim/Plugin/DnDPlay/HTML/Default/js-main-dd.js) (Audio file drop)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_interface["Web interface"]
  node_main["Main shell<br/>[Main.js]"]
  node_browse["Library browse<br/>[Browse.js]"]
  node_search["Live search<br/>[LiveSearch.js]"]
  node_settings["Settings<br/>[Settings.js]"]
  node_wizard["Setup wizard<br/>[Wizard.js]"]
  node_home["Home view<br/>[Home.js]"]
  node_help["Help view<br/>[Help.js]"]
  node_classicdrag["Playlist reorder<br/>[dragdrop.js]"]
end

subgraph group_shared["Shared client"]
  node_controller["Player controller<br/>[Base.js]"]
  node_controls["Player controls<br/>[UI.js]"]
end

subgraph group_extensions["Plugin features"]
  node_favorites["Favorites client<br/>[Favorites.js]"]
  node_filedrop["Audio file drop<br/>[js-main-dd.js]"]
end

node_listener(("Listener"))
node_server["LMS JSON-RPC"]
node_upload["Plugin upload endpoint"]
node_player(("Audio player"))

node_listener -->|"uses"| node_main
node_main -->|"initializes"| node_controller
node_main -->|"creates controls"| node_controls
node_listener -->|"browses library"| node_browse
node_listener -->|"searches music"| node_search
node_listener -->|"configures"| node_settings
node_listener -->|"sets up"| node_wizard
node_listener -->|"opens"| node_home
node_listener -->|"opens"| node_help
node_listener -->|"reorders playlist"| node_classicdrag
node_classicdrag -->|"sends move request"| node_server
node_listener -->|"uses favorites"| node_favorites
node_listener -->|"drops audio"| node_filedrop
node_filedrop -->|"uploads file"| node_upload
node_controls -.->|"controls playback"| node_player

click node_main "https://github.com/lms-community/slimserver/blob/public/9.2/HTML/Default/html/Main.js"
click node_browse "https://github.com/lms-community/slimserver/blob/public/9.2/HTML/Default/html/Browse.js"
click node_search "https://github.com/lms-community/slimserver/blob/public/9.2/HTML/Default/html/LiveSearch.js"
click node_settings "https://github.com/lms-community/slimserver/blob/public/9.2/HTML/Default/html/Settings.js"
click node_wizard "https://github.com/lms-community/slimserver/blob/public/9.2/HTML/Default/html/Wizard.js"
click node_home "https://github.com/lms-community/slimserver/blob/public/9.2/HTML/Default/html/Home.js"
click node_help "https://github.com/lms-community/slimserver/blob/public/9.2/HTML/Default/html/Help.js"
click node_controller "https://github.com/lms-community/slimserver/blob/public/9.2/HTML/EN/html/SqueezeJS/Base.js"
click node_controls "https://github.com/lms-community/slimserver/blob/public/9.2/HTML/EN/html/SqueezeJS/UI.js"
click node_classicdrag "https://github.com/lms-community/slimserver/blob/public/9.2/HTML/Classic/html/dragdrop.js"
click node_favorites "https://github.com/lms-community/slimserver/blob/public/9.2/Slim/Plugin/Favorites/HTML/Default/plugins/Favorites/html/Favorites.js"
click node_filedrop "https://github.com/lms-community/slimserver/blob/public/9.2/Slim/Plugin/DnDPlay/HTML/Default/js-main-dd.js"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_main,node_browse,node_search,node_settings,node_wizard,node_home,node_help,node_classicdrag toneBlue
class node_controller,node_controls toneAmber
class node_favorites,node_filedrop toneMint
class node_listener,node_server,node_upload,node_player toneIndigo
```

## Components

### Web interface

- [Main shell](https://github.com/lms-community/slimserver/blob/public/9.2/HTML/Default/html/Main.js): `HTML/Default/html/Main.js`
- [Library browse](https://github.com/lms-community/slimserver/blob/public/9.2/HTML/Default/html/Browse.js): `HTML/Default/html/Browse.js`
- [Live search](https://github.com/lms-community/slimserver/blob/public/9.2/HTML/Default/html/LiveSearch.js): `HTML/Default/html/LiveSearch.js`
- [Settings](https://github.com/lms-community/slimserver/blob/public/9.2/HTML/Default/html/Settings.js): `HTML/Default/html/Settings.js`
- [Setup wizard](https://github.com/lms-community/slimserver/blob/public/9.2/HTML/Default/html/Wizard.js): `HTML/Default/html/Wizard.js`
- [Home view](https://github.com/lms-community/slimserver/blob/public/9.2/HTML/Default/html/Home.js): `HTML/Default/html/Home.js`
- [Help view](https://github.com/lms-community/slimserver/blob/public/9.2/HTML/Default/html/Help.js): `HTML/Default/html/Help.js`
- [Playlist reorder](https://github.com/lms-community/slimserver/blob/public/9.2/HTML/Classic/html/dragdrop.js): `HTML/Classic/html/dragdrop.js`

### Shared client

- [Player controller](https://github.com/lms-community/slimserver/blob/public/9.2/HTML/EN/html/SqueezeJS/Base.js): `HTML/EN/html/SqueezeJS/Base.js`
- [Player controls](https://github.com/lms-community/slimserver/blob/public/9.2/HTML/EN/html/SqueezeJS/UI.js): `HTML/EN/html/SqueezeJS/UI.js`

### Plugin features

- [Favorites client](https://github.com/lms-community/slimserver/blob/public/9.2/Slim/Plugin/Favorites/HTML/Default/plugins/Favorites/html/Favorites.js): `Slim/Plugin/Favorites/HTML/Default/plugins/Favorites/html/Favorites.js`
- [Audio file drop](https://github.com/lms-community/slimserver/blob/public/9.2/Slim/Plugin/DnDPlay/HTML/Default/js-main-dd.js): `Slim/Plugin/DnDPlay/HTML/Default/js-main-dd.js`

### Other components

- **Listener**
- **LMS JSON-RPC**
- **Plugin upload endpoint**
- **Audio player**

## Connections

- Listener → Main shell: uses
- Main shell → Player controller: initializes
- Main shell → Player controls: creates controls
- Listener → Library browse: browses library
- Listener → Live search: searches music
- Listener → Settings: configures
- Listener → Setup wizard: sets up
- Listener → Home view: opens
- Listener → Help view: opens
- Listener → Playlist reorder: reorders playlist
- Playlist reorder → LMS JSON-RPC: sends move request
- Listener → Favorites client: uses favorites
- Listener → Audio file drop: drops audio
- Audio file drop → Plugin upload endpoint: uploads file
- Player controls → Audio player: controls playback
