# olivin99/bose-soundtouch-web-appli architecture

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

- Interactive diagram: https://gitdiagram.com/olivin99/bose-soundtouch-web-appli
- Repository: https://github.com/olivin99/bose-soundtouch-web-appli

## Overview

This is a small PHP web app for controlling Bose SoundTouch speakers locally. A user selects a speaker and radio, then launches playback; volume and sleep are separate controls. The two PHP files provide desktop and mobile interfaces, with the mobile version also supporting stereo groups. Both use Bose’s UPnP/SOAP API on port 8091 for playback and the REST XML API on port 8090 for volume and sleep. Selection preferences persist in cookies. The map follows the README and excerpts; unsampled handlers and UI wiring are not expanded beyond documented behavior.

Main entry points: [`index.php`](https://github.com/olivin99/bose-soundtouch-web-appli/blob/master/index.php) (Desktop controller), [`radio_bose_mobile.php`](https://github.com/olivin99/bose-soundtouch-web-appli/blob/master/radio_bose_mobile.php) (Mobile controller)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_interfaces["Web interfaces"]
  node_desktop["Desktop controller<br/>[index.php]"]
  node_mobile["Mobile controller"]
end

subgraph group_control["Speaker control"]
  node_speaker["Bose speakers"]
  node_upnp["UPnP SOAP"]
  node_rest["SoundTouch REST"]
end

subgraph group_state["Preferences"]
  node_cookies[("Selection cookies")]
end

node_user(("User"))

node_user -->|"controls"| node_desktop
node_user -->|"controls"| node_mobile
node_desktop -->|"persists selection"| node_cookies
node_mobile -->|"persists selection"| node_cookies
node_desktop -->|"launches playback"| node_upnp
node_desktop -->|"sets volume, sleeps"| node_rest
node_mobile -->|"launches playback"| node_upnp
node_mobile -->|"sets volume, sleeps"| node_rest
node_upnp -->|"SOAP commands"| node_speaker
node_rest -->|"REST XML commands"| node_speaker

click node_desktop "https://github.com/olivin99/bose-soundtouch-web-appli/blob/master/index.php"
click node_mobile "https://github.com/olivin99/bose-soundtouch-web-appli/blob/master/radio_bose_mobile.php"

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_desktop,node_mobile,node_user toneBlue
class node_speaker,node_upnp,node_rest toneAmber
class node_cookies toneMint
```

## Components

### Web interfaces

- [Desktop controller](https://github.com/olivin99/bose-soundtouch-web-appli/blob/master/index.php): `index.php`
- [Mobile controller](https://github.com/olivin99/bose-soundtouch-web-appli/blob/master/radio_bose_mobile.php): `radio_bose_mobile.php`

### Speaker control

- **Bose speakers**
- **UPnP SOAP**
- **SoundTouch REST**

### Preferences

- **Selection cookies**

### Other components

- **User**

## Connections

- User → Desktop controller: controls (evidence: `index.php`)
- User → Mobile controller: controls (evidence: `radio_bose_mobile.php`)
- Desktop controller → Selection cookies: persists selection (evidence: `index.php`)
- Mobile controller → Selection cookies: persists selection (evidence: `radio_bose_mobile.php`)
- Desktop controller → UPnP SOAP: launches playback (evidence: `index.php`)
- Desktop controller → SoundTouch REST: sets volume, sleeps (evidence: `index.php`)
- Mobile controller → UPnP SOAP: launches playback (evidence: `radio_bose_mobile.php`)
- Mobile controller → SoundTouch REST: sets volume, sleeps (evidence: `radio_bose_mobile.php`)
- UPnP SOAP → Bose speakers: SOAP commands (evidence: `README.md`)
- SoundTouch REST → Bose speakers: REST XML commands (evidence: `README.md`)
