# danieljogosbr/litetube architecture

> Architecture diagram of the GitHub repository danieljogosbr/litetube, 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/danieljogosbr/litetube
- Repository: https://github.com/danieljogosbr/litetube

## Overview

LiteTube is a Windows desktop YouTube video and music player. The principal workflow starts in the app window, which coordinates browsing and playback through YouTube services and media players; the repository also includes authentication, SponsorBlock, storyboards, image loading, and performance support. The README describes a clean, lightweight viewing experience but does not detail these internal stages. Edges are limited to calls or references visible in excerpts, the source index, or the README; unsampled implementation details are not inferred.

Main entry points: [`src/MainForm.cs`](https://github.com/danieljogosbr/litetube/blob/main/src/MainForm.cs) (Main window), [`src/YouTubeService.cs`](https://github.com/danieljogosbr/litetube/blob/main/src/YouTubeService.cs) (YouTube service), [`src/VideoEnvironmentControl.cs`](https://github.com/danieljogosbr/litetube/blob/main/src/VideoEnvironmentControl.cs) (Video environment), [`src/AudioEngine.cs`](https://github.com/danieljogosbr/litetube/blob/main/src/AudioEngine.cs) (Audio engine)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_app["App and navigation"]
  node_main["Main window<br/>[MainForm.cs]"]
  node_video_ui["Video environment"]
  node_media_list["Media list"]
  node_media_cards["Media cards"]
  node_theme["Theme<br/>[Theme.cs]"]
end

subgraph group_media["Playback and media"]
  node_video_overlay["Video overlay"]
  node_music_bar["Music controls"]
  node_audio["Audio engine<br/>[AudioEngine.cs]"]
  node_progressive["Progressive video"]
end

subgraph group_services["Discovery and integrations"]
  node_youtube["YouTube service<br/>[YouTubeService.cs]"]
  node_ytdlp["yt-dlp resolver<br/>[YtDlpResolver.cs]"]
  node_auth["Google auth"]
  node_sponsor["SponsorBlock"]
  node_storyboard["Storyboards"]
end

subgraph group_support["Runtime support"]
  node_http["HTTP pipeline<br/>[HttpPipeline.cs]"]
  node_images["Image loading"]
  node_thumbnails["Thumbnail cache<br/>[ThumbnailCache.cs]"]
  node_ffmpeg["FFmpeg resolver<br/>[FFmpegResolver.cs]"]
  node_gpu["GPU detection<br/>[GpuDetector.cs]"]
  node_memory["Memory optimizer<br/>[MemoryOptimizer.cs]"]
  node_logger["Logging<br/>[Logger.cs]"]
end

node_viewer(("Viewer"))
node_external_youtube(("YouTube"))

node_viewer -->|"uses"| node_main
node_main -->|"creates"| node_youtube
node_main -->|"creates"| node_audio
node_main -->|"uses"| node_video_ui
node_main -->|"uses"| node_music_bar
node_main -->|"uses"| node_video_overlay
node_main -->|"uses"| node_media_cards
node_main -->|"uses"| node_memory
node_main -->|"uses"| node_gpu
node_main -->|"opens"| node_auth
node_main -->|"uses"| node_sponsor
node_main -->|"uses"| node_thumbnails
node_main -->|"uses"| node_images
node_main -->|"uses"| node_progressive
node_main -->|"logs via"| node_logger
node_video_ui -->|"uses"| node_youtube
node_video_ui -->|"uses"| node_audio
node_video_ui -->|"uses"| node_video_overlay
node_video_ui -->|"uses"| node_progressive
node_video_ui -->|"uses"| node_storyboard
node_video_ui -->|"uses"| node_sponsor
node_youtube -->|"resolves via"| node_ytdlp
node_youtube -->|"uses"| node_ffmpeg
node_youtube -->|"requests via"| node_http
node_audio -->|"uses"| node_youtube
node_audio -->|"uses"| node_sponsor
node_auth -->|"gets binary from"| node_ytdlp
node_storyboard -->|"fetches via"| node_http
node_images -->|"downloads via"| node_http
node_media_list -->|"uses"| node_thumbnails
node_music_bar -->|"uses"| node_youtube
node_media_cards -->|"uses"| node_theme
node_youtube -->|"queries"| node_external_youtube

click node_main "https://github.com/danieljogosbr/litetube/blob/main/src/MainForm.cs"
click node_video_ui "https://github.com/danieljogosbr/litetube/blob/main/src/VideoEnvironmentControl.cs"
click node_media_list "https://github.com/danieljogosbr/litetube/blob/main/src/WpfMediaListControl.cs"
click node_media_cards "https://github.com/danieljogosbr/litetube/blob/main/src/MediaCardListControl.cs"
click node_theme "https://github.com/danieljogosbr/litetube/blob/main/src/Theme.cs"
click node_video_overlay "https://github.com/danieljogosbr/litetube/blob/main/src/WpfVideoPlayerOverlay.cs"
click node_music_bar "https://github.com/danieljogosbr/litetube/blob/main/src/WpfMusicPlayerBar.cs"
click node_audio "https://github.com/danieljogosbr/litetube/blob/main/src/AudioEngine.cs"
click node_progressive "https://github.com/danieljogosbr/litetube/blob/main/src/ProgressiveVideoSession.cs"
click node_youtube "https://github.com/danieljogosbr/litetube/blob/main/src/YouTubeService.cs"
click node_ytdlp "https://github.com/danieljogosbr/litetube/blob/main/src/YtDlpResolver.cs"
click node_auth "https://github.com/danieljogosbr/litetube/blob/main/src/GoogleAuthDialog.cs"
click node_sponsor "https://github.com/danieljogosbr/litetube/blob/main/src/SponsorBlockService.cs"
click node_storyboard "https://github.com/danieljogosbr/litetube/blob/main/src/StoryboardService.cs"
click node_http "https://github.com/danieljogosbr/litetube/blob/main/src/HttpPipeline.cs"
click node_images "https://github.com/danieljogosbr/litetube/blob/main/src/AsyncImageLoader/MemoryCachedWebImageLoader.cs"
click node_thumbnails "https://github.com/danieljogosbr/litetube/blob/main/src/ThumbnailCache.cs"
click node_ffmpeg "https://github.com/danieljogosbr/litetube/blob/main/src/FFmpegResolver.cs"
click node_gpu "https://github.com/danieljogosbr/litetube/blob/main/src/GpuDetector.cs"
click node_memory "https://github.com/danieljogosbr/litetube/blob/main/src/MemoryOptimizer.cs"
click node_logger "https://github.com/danieljogosbr/litetube/blob/main/src/Logger.cs"

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_video_ui,node_media_list,node_media_cards,node_theme,node_viewer toneBlue
class node_video_overlay,node_music_bar,node_audio,node_progressive toneAmber
class node_youtube,node_ytdlp,node_auth,node_sponsor,node_storyboard toneMint
class node_http,node_images,node_thumbnails,node_ffmpeg,node_gpu,node_memory,node_logger toneRose
class node_external_youtube toneIndigo
```

## Components

### App and navigation

- [Main window](https://github.com/danieljogosbr/litetube/blob/main/src/MainForm.cs): `src/MainForm.cs`
- [Video environment](https://github.com/danieljogosbr/litetube/blob/main/src/VideoEnvironmentControl.cs): `src/VideoEnvironmentControl.cs`
- [Media list](https://github.com/danieljogosbr/litetube/blob/main/src/WpfMediaListControl.cs): `src/WpfMediaListControl.cs`
- [Media cards](https://github.com/danieljogosbr/litetube/blob/main/src/MediaCardListControl.cs): `src/MediaCardListControl.cs`
- [Theme](https://github.com/danieljogosbr/litetube/blob/main/src/Theme.cs): `src/Theme.cs`

### Playback and media

- [Video overlay](https://github.com/danieljogosbr/litetube/blob/main/src/WpfVideoPlayerOverlay.cs): `src/WpfVideoPlayerOverlay.cs`
- [Music controls](https://github.com/danieljogosbr/litetube/blob/main/src/WpfMusicPlayerBar.cs): `src/WpfMusicPlayerBar.cs`
- [Audio engine](https://github.com/danieljogosbr/litetube/blob/main/src/AudioEngine.cs): `src/AudioEngine.cs`
- [Progressive video](https://github.com/danieljogosbr/litetube/blob/main/src/ProgressiveVideoSession.cs): `src/ProgressiveVideoSession.cs`

### Discovery and integrations

- [YouTube service](https://github.com/danieljogosbr/litetube/blob/main/src/YouTubeService.cs): `src/YouTubeService.cs`
- [yt-dlp resolver](https://github.com/danieljogosbr/litetube/blob/main/src/YtDlpResolver.cs): `src/YtDlpResolver.cs`
- [Google auth](https://github.com/danieljogosbr/litetube/blob/main/src/GoogleAuthDialog.cs): `src/GoogleAuthDialog.cs`
- [SponsorBlock](https://github.com/danieljogosbr/litetube/blob/main/src/SponsorBlockService.cs): `src/SponsorBlockService.cs`
- [Storyboards](https://github.com/danieljogosbr/litetube/blob/main/src/StoryboardService.cs): `src/StoryboardService.cs`

### Runtime support

- [HTTP pipeline](https://github.com/danieljogosbr/litetube/blob/main/src/HttpPipeline.cs): `src/HttpPipeline.cs`
- [Image loading](https://github.com/danieljogosbr/litetube/blob/main/src/AsyncImageLoader/MemoryCachedWebImageLoader.cs): `src/AsyncImageLoader/MemoryCachedWebImageLoader.cs`
- [Thumbnail cache](https://github.com/danieljogosbr/litetube/blob/main/src/ThumbnailCache.cs): `src/ThumbnailCache.cs`
- [FFmpeg resolver](https://github.com/danieljogosbr/litetube/blob/main/src/FFmpegResolver.cs): `src/FFmpegResolver.cs`
- [GPU detection](https://github.com/danieljogosbr/litetube/blob/main/src/GpuDetector.cs): `src/GpuDetector.cs`
- [Memory optimizer](https://github.com/danieljogosbr/litetube/blob/main/src/MemoryOptimizer.cs): `src/MemoryOptimizer.cs`
- [Logging](https://github.com/danieljogosbr/litetube/blob/main/src/Logger.cs): `src/Logger.cs`

### Other components

- **Viewer**
- **YouTube**

## Connections

- Viewer → Main window: uses (evidence: `README.md`)
- Main window → YouTube service: creates (evidence: `src/MainForm.cs`)
- Main window → Audio engine: creates (evidence: `src/MainForm.cs`)
- Main window → Video environment: uses (evidence: `src/MainForm.cs`)
- Main window → Music controls: uses (evidence: `src/MainForm.cs`)
- Main window → Video overlay: uses (evidence: `src/MainForm.cs`)
- Main window → Media cards: uses (evidence: `src/MainForm.cs`)
- Main window → Memory optimizer: uses (evidence: `src/MainForm.cs`)
- Main window → GPU detection: uses (evidence: `src/MainForm.cs`)
- Main window → Google auth: opens (evidence: `src/MainForm.cs`)
- Main window → SponsorBlock: uses (evidence: `src/MainForm.cs`)
- Main window → Thumbnail cache: uses (evidence: `src/MainForm.cs`)
- Main window → Image loading: uses (evidence: `src/MainForm.cs`)
- Main window → Progressive video: uses (evidence: `src/MainForm.cs`)
- Main window → Logging: logs via (evidence: `src/MainForm.cs`)
- Video environment → YouTube service: uses (evidence: `src/VideoEnvironmentControl.cs`)
- Video environment → Audio engine: uses (evidence: `src/VideoEnvironmentControl.cs`)
- Video environment → Video overlay: uses (evidence: `src/VideoEnvironmentControl.cs`)
- Video environment → Progressive video: uses (evidence: `src/VideoEnvironmentControl.cs`)
- Video environment → Storyboards: uses (evidence: `src/VideoEnvironmentControl.cs`)
- Video environment → SponsorBlock: uses (evidence: `src/VideoEnvironmentControl.cs`)
- YouTube service → yt-dlp resolver: resolves via (evidence: `src/YouTubeService.cs`)
- YouTube service → FFmpeg resolver: uses (evidence: `src/YouTubeService.cs`)
- YouTube service → HTTP pipeline: requests via (evidence: `src/YouTubeService.cs`)
- Audio engine → YouTube service: uses (evidence: `src/AudioEngine.cs`)
- Audio engine → SponsorBlock: uses (evidence: `src/AudioEngine.cs`)
- Google auth → yt-dlp resolver: gets binary from (evidence: `src/GoogleAuthDialog.cs`)
- Storyboards → HTTP pipeline: fetches via (evidence: `src/StoryboardService.cs`)
- Image loading → HTTP pipeline: downloads via (evidence: `src/AsyncImageLoader/MemoryCachedWebImageLoader.cs`)
- Media list → Thumbnail cache: uses (evidence: `src/WpfMediaListControl.cs`)
- Music controls → YouTube service: uses (evidence: `src/WpfMusicPlayerBar.cs`)
- Media cards → Theme: uses (evidence: `src/MediaCardListControl.cs`)
- YouTube service → YouTube: queries (evidence: `src/YouTubeService.cs`)
