# ads-mirrors/mxu-slides architecture

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

- Interactive diagram: https://gitdiagram.com/ads-mirrors/mxu-slides
- Repository: https://github.com/ads-mirrors/mxu-slides

## Overview

MxU Slides is a native, local-first macOS presentation and live-production app for churches. The principal workflow is preparing presentation and service content, then running lyrics, slides, media, and timers to audience and stage displays; the product also supports multitrack audio, timecode, streaming, and hardware/network video output. The graph preserves those documented branches and the sampled library, rendering, audio, media, and output layers. Some subsystem wiring is documented only as capability, so those links cite the README rather than implying inspected call paths.

Main entry points: [`apps/mac/Packages/PresenterCore/Sources/PresenterCore/Library/LibraryEngine.swift`](https://github.com/ads-mirrors/mxu-slides/blob/main/apps/mac/Packages/PresenterCore/Sources/PresenterCore/Library/LibraryEngine.swift) (Content library), [`apps/mac/Packages/OutputEngine/Sources/OutputEngine/OutputManager.swift`](https://github.com/ads-mirrors/mxu-slides/blob/main/apps/mac/Packages/OutputEngine/Sources/OutputEngine/OutputManager.swift) (Display output manager), [`apps/mac/Packages/AudioEngine/Sources/AudioEngine/AudioEngine.swift`](https://github.com/ads-mirrors/mxu-slides/blob/main/apps/mac/Packages/AudioEngine/Sources/AudioEngine/AudioEngine.swift) (Audio engine), [`apps/mac/Packages/PPTXImport/Sources/PPTXImport/PPTXImporter.swift`](https://github.com/ads-mirrors/mxu-slides/blob/main/apps/mac/Packages/PPTXImport/Sources/PPTXImport/PPTXImporter.swift) (PowerPoint import)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_content["Content and library"]
  node_library[("Content library")]
  node_documents["Presentation documents"]
  node_pptx["PowerPoint import<br/>[PPTXImporter.swift]"]
  node_proimport["ProPresenter import"]
end

subgraph group_production["Live production"]
  node_timeline["Timeline and timecode"]
  node_multitrack["Multitrack playback"]
  node_streaming["Live streaming"]
end

subgraph group_media["Media and audio"]
  node_media["Media playback and capture<br/>[MediaEngine.swift]"]
  node_audio["Audio engine<br/>[AudioEngine.swift]"]
  node_mixer["Audio mixer controls"]
end

subgraph group_outputs["Presentation outputs"]
  node_renderer["Scene compositor<br/>[Compositor.swift]"]
  node_output["Display output manager"]
  node_decklink["DeckLink I/O"]
  node_ndi["NDI I/O<br/>[NDISender.swift]"]
end

subgraph group_interfaces["Control and integrations"]
  node_localapi["Local REST and WebSocket API"]
end

node_operator(("Operator"))
node_apiuser(("API client"))
node_displays["Audience and stage displays"]

node_operator -.->|"manages content"| node_library
node_pptx -.->|"imports content"| node_library
node_proimport -.->|"imports content"| node_library
node_library -->|"stores documents"| node_documents
node_operator -.->|"runs timecode"| node_timeline
node_operator -.->|"runs stems"| node_multitrack
node_operator -.->|"starts streaming"| node_streaming
node_operator -.->|"plays media"| node_media
node_operator -.->|"plays audio"| node_audio
node_mixer -->|"controls audio"| node_audio
node_operator -.->|"configures displays"| node_output
node_output -->|"builds scenes"| node_renderer
node_output -.->|"drives displays"| node_displays
node_operator -.->|"uses video I/O"| node_decklink
node_operator -.->|"uses network video"| node_ndi
node_apiuser -->|"controls app"| node_localapi

click node_library "https://github.com/ads-mirrors/mxu-slides/blob/main/apps/mac/Packages/PresenterCore/Sources/PresenterCore/Library/LibraryEngine.swift"
click node_documents "https://github.com/ads-mirrors/mxu-slides/blob/main/apps/mac/Packages/PresenterCore/Sources/PresenterCore/Documents/DocumentEntity.swift"
click node_pptx "https://github.com/ads-mirrors/mxu-slides/blob/main/apps/mac/Packages/PPTXImport/Sources/PPTXImport/PPTXImporter.swift"
click node_proimport "https://github.com/ads-mirrors/mxu-slides/blob/main/apps/mac/Packages/ProImport/Sources/ProImport/ProPresenterImporter.swift"
click node_timeline "https://github.com/ads-mirrors/mxu-slides/blob/main/apps/mac/Packages/PresenterCore/Sources/PresenterCore/Timeline/PresentationTimelines.swift"
click node_multitrack "https://github.com/ads-mirrors/mxu-slides/blob/main/apps/mac/Packages/AudioEngine/Sources/AudioEngine/Multitrack/MultitrackEngine.swift"
click node_streaming "https://github.com/ads-mirrors/mxu-slides/blob/main/apps/mac/Sources/StreamingController.swift"
click node_media "https://github.com/ads-mirrors/mxu-slides/blob/main/apps/mac/Packages/MediaEngine/Sources/MediaEngine/MediaEngine.swift"
click node_audio "https://github.com/ads-mirrors/mxu-slides/blob/main/apps/mac/Packages/AudioEngine/Sources/AudioEngine/AudioEngine.swift"
click node_mixer "https://github.com/ads-mirrors/mxu-slides/blob/main/apps/mac/Sources/AudioMixerController.swift"
click node_renderer "https://github.com/ads-mirrors/mxu-slides/blob/main/apps/mac/Packages/RenderEngine/Sources/RenderEngine/Compositor.swift"
click node_output "https://github.com/ads-mirrors/mxu-slides/blob/main/apps/mac/Packages/OutputEngine/Sources/OutputEngine/OutputManager.swift"
click node_decklink "https://github.com/ads-mirrors/mxu-slides/blob/main/apps/mac/Packages/DeckLinkKit/Sources/DeckLinkKit/DeckLinkOutput.swift"
click node_ndi "https://github.com/ads-mirrors/mxu-slides/blob/main/apps/mac/Packages/NDIKit/Sources/NDIKit/NDISender.swift"
click node_localapi "https://github.com/ads-mirrors/mxu-slides/blob/main/apps/mac/Packages/LocalAPI/Sources/LocalAPI/LocalAPIServer.swift"

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_library,node_documents,node_pptx,node_proimport,node_apiuser toneBlue
class node_timeline,node_multitrack,node_streaming toneAmber
class node_media,node_audio,node_mixer toneMint
class node_renderer,node_output,node_decklink,node_ndi toneRose
class node_localapi,node_operator,node_displays toneIndigo
```

## Components

### Content and library

- [Content library](https://github.com/ads-mirrors/mxu-slides/blob/main/apps/mac/Packages/PresenterCore/Sources/PresenterCore/Library/LibraryEngine.swift): `apps/mac/Packages/PresenterCore/Sources/PresenterCore/Library/LibraryEngine.swift`
- [Presentation documents](https://github.com/ads-mirrors/mxu-slides/blob/main/apps/mac/Packages/PresenterCore/Sources/PresenterCore/Documents/DocumentEntity.swift): `apps/mac/Packages/PresenterCore/Sources/PresenterCore/Documents/DocumentEntity.swift`
- [PowerPoint import](https://github.com/ads-mirrors/mxu-slides/blob/main/apps/mac/Packages/PPTXImport/Sources/PPTXImport/PPTXImporter.swift): `apps/mac/Packages/PPTXImport/Sources/PPTXImport/PPTXImporter.swift`
- [ProPresenter import](https://github.com/ads-mirrors/mxu-slides/blob/main/apps/mac/Packages/ProImport/Sources/ProImport/ProPresenterImporter.swift): `apps/mac/Packages/ProImport/Sources/ProImport/ProPresenterImporter.swift`

### Live production

- [Timeline and timecode](https://github.com/ads-mirrors/mxu-slides/blob/main/apps/mac/Packages/PresenterCore/Sources/PresenterCore/Timeline/PresentationTimelines.swift): `apps/mac/Packages/PresenterCore/Sources/PresenterCore/Timeline/PresentationTimelines.swift`
- [Multitrack playback](https://github.com/ads-mirrors/mxu-slides/blob/main/apps/mac/Packages/AudioEngine/Sources/AudioEngine/Multitrack/MultitrackEngine.swift): `apps/mac/Packages/AudioEngine/Sources/AudioEngine/Multitrack/MultitrackEngine.swift`
- [Live streaming](https://github.com/ads-mirrors/mxu-slides/blob/main/apps/mac/Sources/StreamingController.swift): `apps/mac/Sources/StreamingController.swift`

### Media and audio

- [Media playback and capture](https://github.com/ads-mirrors/mxu-slides/blob/main/apps/mac/Packages/MediaEngine/Sources/MediaEngine/MediaEngine.swift): `apps/mac/Packages/MediaEngine/Sources/MediaEngine/MediaEngine.swift`
- [Audio engine](https://github.com/ads-mirrors/mxu-slides/blob/main/apps/mac/Packages/AudioEngine/Sources/AudioEngine/AudioEngine.swift): `apps/mac/Packages/AudioEngine/Sources/AudioEngine/AudioEngine.swift`
- [Audio mixer controls](https://github.com/ads-mirrors/mxu-slides/blob/main/apps/mac/Sources/AudioMixerController.swift): `apps/mac/Sources/AudioMixerController.swift`

### Presentation outputs

- [Scene compositor](https://github.com/ads-mirrors/mxu-slides/blob/main/apps/mac/Packages/RenderEngine/Sources/RenderEngine/Compositor.swift): `apps/mac/Packages/RenderEngine/Sources/RenderEngine/Compositor.swift`
- [Display output manager](https://github.com/ads-mirrors/mxu-slides/blob/main/apps/mac/Packages/OutputEngine/Sources/OutputEngine/OutputManager.swift): `apps/mac/Packages/OutputEngine/Sources/OutputEngine/OutputManager.swift`
- [DeckLink I/O](https://github.com/ads-mirrors/mxu-slides/blob/main/apps/mac/Packages/DeckLinkKit/Sources/DeckLinkKit/DeckLinkOutput.swift): `apps/mac/Packages/DeckLinkKit/Sources/DeckLinkKit/DeckLinkOutput.swift`
- [NDI I/O](https://github.com/ads-mirrors/mxu-slides/blob/main/apps/mac/Packages/NDIKit/Sources/NDIKit/NDISender.swift): `apps/mac/Packages/NDIKit/Sources/NDIKit/NDISender.swift`

### Control and integrations

- [Local REST and WebSocket API](https://github.com/ads-mirrors/mxu-slides/blob/main/apps/mac/Packages/LocalAPI/Sources/LocalAPI/LocalAPIServer.swift): `apps/mac/Packages/LocalAPI/Sources/LocalAPI/LocalAPIServer.swift`

### Other components

- **Operator**
- **API client**
- **Audience and stage displays**

## Connections

- Operator → Content library: manages content
- PowerPoint import → Content library: imports content
- ProPresenter import → Content library: imports content
- Content library → Presentation documents: stores documents (evidence: `apps/mac/Packages/PresenterCore/Sources/PresenterCore/Library/LibraryEngine.swift`)
- Operator → Timeline and timecode: runs timecode
- Operator → Multitrack playback: runs stems
- Operator → Live streaming: starts streaming
- Operator → Media playback and capture: plays media
- Operator → Audio engine: plays audio
- Audio mixer controls → Audio engine: controls audio (evidence: `apps/mac/Sources/AudioMixerController.swift`)
- Operator → Display output manager: configures displays
- Display output manager → Scene compositor: builds scenes (evidence: `apps/mac/Packages/OutputEngine/Sources/OutputEngine/OutputManager.swift`)
- Display output manager → Audience and stage displays: drives displays
- Operator → DeckLink I/O: uses video I/O
- Operator → NDI I/O: uses network video
- API client → Local REST and WebSocket API: controls app
