Files
Bose-SoundTouch/docs/analysis/stockholm-app-analysis.md
T
Tobias Gesellchen 1288a619f7 Add Stockholm Mini
This is also a refactoring of our api paths
2026-02-21 00:49:18 +01:00

3.9 KiB

Stockholm App Analysis Report

1. Overview

The Stockholm app is a CEPE MAUI SoundTouch Controller HTML5/JS UI. It is designed to run as a web-based interface for Bose SoundTouch devices, likely served by the device itself or an associated controller.

  • Technology Stack: HTML5, CSS3, JavaScript (Minified).
  • Key Libraries:
    • jQuery: Core DOM manipulation and event handling.
    • iScroll: Used for smooth scrolling in lists and carousels.
    • Forge: Used for cryptographic operations (likely for secure communication or authentication).
    • WebSocket Polyfill: Ensures WebSocket compatibility across environments.

2. Directory Structure

  • js/: Core application logic.
    • app/: Main application entry point (app.js).
    • models/: Data models for UI components (Presets, Favorites, Onboarding, etc.).
    • music_services/: Implementation of various music services (Amazon, Deezer, Spotify, BMX, etc.).
    • views/: UI view templates and logic.
    • utils/: Utility functions for security, data analytics, and general-purpose tasks.
  • json/: Configuration files and static data.
    • config.json: Core application configuration including Base64 encoded Bose API endpoints (e.g., streaming, events, BMX registry).
    • sourceFeatures.json: Capability mapping for different sources.
  • setup/: Onboarding and initial device setup logic.
  • lang/: Localization files for multi-language support.

3. Communication Architecture

The app uses several communication channels to interact with the SoundTouch ecosystem:

  • Socket Communication (socket_comm.js): Real-time updates and low-latency commands via WebSockets.
  • BMX (bmx.js & js/music_services/bmx/): Interactions with the Bose Music eXperience services. Handles account management, navigation, and API response validation.
  • Marge (marge_comm.js): Likely used for interaction with the Marge service (Bose's legacy cloud/proxy service).
  • Worker-based Architecture: Many services use Web Workers (bmx_worker.js, spotify_worker.js) to handle API requests and data processing in the background, keeping the UI responsive.

4. Key Features & Functionality

  • Multi-Device Management: Discovering and controlling multiple speakers on the network.
  • Music Service Integration: Deep integration with Spotify, Amazon Music, Deezer, and Pandora.
  • Preset Management: Browsing and setting presets directly from the UI.
  • Zone Control: Creating and managing multi-room groups (Master/Slave configurations).
  • Onboarding: A dedicated setup flow for new devices.
  • Analytics & Data Collection: Modules like data_analytics.js and dc_server.js suggest tracking of user interactions.

5. Integration Opportunities for Bose-SoundTouch Project

Based on the Stockholm app's capabilities, the following features could be enhanced or added to our Go-based soundtouch-service:

  1. Enhanced BMX Emulation: Use insights from bmx_client.js and bmx_navigate_response_generator.js to improve our local BMX implementation.
  2. Spotify/Amazon Service Proxies: Implement the backend logic required to support the same API calls the Stockholm app makes to these services.
  3. UI parity: The Stockholm app's view templates (views/) can serve as a reference for our Web Management UI.
  4. WebSocket Support: Ensure our service provides a robust WebSocket interface similar to what the Stockholm app expects for real-time state synchronization.
  5. Capability Discovery: Better utilization of the sourceFeatures.json logic to dynamically show/hide features based on the device model and firmware version.

6. Conclusion

The Stockholm app is a mature, full-featured controller that relies heavily on Bose's proprietary BMX and Marge services. By analyzing its client-side logic, we can better understand the expected API responses and interaction patterns needed to provide a seamless local replacement for the Bose Cloud.