# jpdcs/songhub-karaoke-pc architecture

> Architecture diagram of the GitHub repository jpdcs/songhub-karaoke-pc, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-11-11). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/jpdcs/songhub-karaoke-pc
- Repository: https://github.com/jpdcs/songhub-karaoke-pc

## Overview

SongHub is an offline PC karaoke player. The documented workflow is to add local song folders, scan them into a searchable numbered library, choose a song, and sing while controlling playback. The README also describes queueing, display customization, scoring, and SmartLink remote control. Only the README is available, so the graph represents documented capabilities and broad relationships; implementation details and undocumented connections are omitted.

Main entry points: [`README.md`](https://github.com/jpdcs/songhub-karaoke-pc/blob/main/README.md) (Song Playback)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_library["Song Library"]
  node_settings["Library Settings<br/>[README.md]"]
  node_scanner["Content Scanner<br/>[README.md]"]
  node_librarydb[("User Library Database<br/>[README.md]")]
  node_search["Song Search<br/>[README.md]"]
end

subgraph group_playback["Karaoke Playback"]
  node_format["Format Support<br/>[README.md]"]
  node_queue["Reservation Queue<br/>[README.md]"]
  node_player["Song Playback<br/>[README.md]"]
  node_controls["Playback Controls<br/>[README.md]"]
end

subgraph group_experience["Display and Settings"]
  node_lyrics["Lyric Display<br/>[README.md]"]
  node_intro["Song Intro<br/>[README.md]"]
  node_bgv["Background Video<br/>[README.md]"]
  node_scoring["Scoring Styles<br/>[README.md]"]
  node_customize["Display Settings<br/>[README.md]"]
  node_localization["Interface Languages<br/>[README.md]"]
end

subgraph group_remote["Remote Control"]
  node_smartlink["SmartLink<br/>[README.md]"]
end

node_user(("PC User"))
node_songfiles["Song Files"]
node_devices(("Network Devices"))

node_user -->|"configures"| node_settings
node_user -->|"selects folders"| node_songfiles
node_settings -->|"starts scan"| node_scanner
node_songfiles -->|"scanned from"| node_scanner
node_scanner -->|"builds"| node_librarydb
node_librarydb -->|"provides songs"| node_search
node_user -->|"finds songs"| node_search
node_search -->|"selects song"| node_player
node_user -->|"reserves songs"| node_queue
node_queue -->|"queues playback"| node_player
node_format -->|"supports formats"| node_player
node_user -->|"controls playback"| node_controls
node_controls -->|"controls"| node_player
node_player -->|"displays lyrics"| node_lyrics
node_player -->|"shows song info"| node_intro
node_player -->|"plays background video"| node_bgv
node_player -->|"scores singing"| node_scoring
node_user -->|"customizes display"| node_customize
node_user -->|"chooses language"| node_localization
node_user -->|"controls remotely"| node_smartlink
node_devices -->|"connects over network"| node_smartlink

click node_settings "https://github.com/jpdcs/songhub-karaoke-pc/blob/main/README.md"
click node_scanner "https://github.com/jpdcs/songhub-karaoke-pc/blob/main/README.md"
click node_librarydb "https://github.com/jpdcs/songhub-karaoke-pc/blob/main/README.md"
click node_search "https://github.com/jpdcs/songhub-karaoke-pc/blob/main/README.md"
click node_format "https://github.com/jpdcs/songhub-karaoke-pc/blob/main/README.md"
click node_queue "https://github.com/jpdcs/songhub-karaoke-pc/blob/main/README.md"
click node_player "https://github.com/jpdcs/songhub-karaoke-pc/blob/main/README.md"
click node_controls "https://github.com/jpdcs/songhub-karaoke-pc/blob/main/README.md"
click node_lyrics "https://github.com/jpdcs/songhub-karaoke-pc/blob/main/README.md"
click node_intro "https://github.com/jpdcs/songhub-karaoke-pc/blob/main/README.md"
click node_bgv "https://github.com/jpdcs/songhub-karaoke-pc/blob/main/README.md"
click node_scoring "https://github.com/jpdcs/songhub-karaoke-pc/blob/main/README.md"
click node_customize "https://github.com/jpdcs/songhub-karaoke-pc/blob/main/README.md"
click node_localization "https://github.com/jpdcs/songhub-karaoke-pc/blob/main/README.md"
click node_smartlink "https://github.com/jpdcs/songhub-karaoke-pc/blob/main/README.md"

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_settings,node_scanner,node_librarydb,node_search,node_user toneBlue
class node_format,node_queue,node_player,node_controls toneAmber
class node_lyrics,node_intro,node_bgv,node_scoring,node_customize,node_localization toneMint
class node_smartlink toneRose
class node_songfiles,node_devices toneIndigo
```

## Components

### Song Library

- [Library Settings](https://github.com/jpdcs/songhub-karaoke-pc/blob/main/README.md): `README.md`
- [Content Scanner](https://github.com/jpdcs/songhub-karaoke-pc/blob/main/README.md): `README.md`
- [User Library Database](https://github.com/jpdcs/songhub-karaoke-pc/blob/main/README.md): `README.md`
- [Song Search](https://github.com/jpdcs/songhub-karaoke-pc/blob/main/README.md): `README.md`

### Karaoke Playback

- [Format Support](https://github.com/jpdcs/songhub-karaoke-pc/blob/main/README.md): `README.md`
- [Reservation Queue](https://github.com/jpdcs/songhub-karaoke-pc/blob/main/README.md): `README.md`
- [Song Playback](https://github.com/jpdcs/songhub-karaoke-pc/blob/main/README.md): `README.md`
- [Playback Controls](https://github.com/jpdcs/songhub-karaoke-pc/blob/main/README.md): `README.md`

### Display and Settings

- [Lyric Display](https://github.com/jpdcs/songhub-karaoke-pc/blob/main/README.md): `README.md`
- [Song Intro](https://github.com/jpdcs/songhub-karaoke-pc/blob/main/README.md): `README.md`
- [Background Video](https://github.com/jpdcs/songhub-karaoke-pc/blob/main/README.md): `README.md`
- [Scoring Styles](https://github.com/jpdcs/songhub-karaoke-pc/blob/main/README.md): `README.md`
- [Display Settings](https://github.com/jpdcs/songhub-karaoke-pc/blob/main/README.md): `README.md`
- [Interface Languages](https://github.com/jpdcs/songhub-karaoke-pc/blob/main/README.md): `README.md`

### Remote Control

- [SmartLink](https://github.com/jpdcs/songhub-karaoke-pc/blob/main/README.md): `README.md`

### Other components

- **PC User**
- **Song Files**
- **Network Devices**

## Connections

- PC User → Library Settings: configures (evidence: `README.md`)
- PC User → Song Files: selects folders (evidence: `README.md`)
- Library Settings → Content Scanner: starts scan (evidence: `README.md`)
- Song Files → Content Scanner: scanned from (evidence: `README.md`)
- Content Scanner → User Library Database: builds (evidence: `README.md`)
- User Library Database → Song Search: provides songs (evidence: `README.md`)
- PC User → Song Search: finds songs (evidence: `README.md`)
- Song Search → Song Playback: selects song (evidence: `README.md`)
- PC User → Reservation Queue: reserves songs (evidence: `README.md`)
- Reservation Queue → Song Playback: queues playback (evidence: `README.md`)
- Format Support → Song Playback: supports formats (evidence: `README.md`)
- PC User → Playback Controls: controls playback (evidence: `README.md`)
- Playback Controls → Song Playback: controls (evidence: `README.md`)
- Song Playback → Lyric Display: displays lyrics (evidence: `README.md`)
- Song Playback → Song Intro: shows song info (evidence: `README.md`)
- Song Playback → Background Video: plays background video (evidence: `README.md`)
- Song Playback → Scoring Styles: scores singing (evidence: `README.md`)
- PC User → Display Settings: customizes display (evidence: `README.md`)
- PC User → Interface Languages: chooses language (evidence: `README.md`)
- PC User → SmartLink: controls remotely (evidence: `README.md`)
- Network Devices → SmartLink: connects over network (evidence: `README.md`)
