# karolek13245/zonk-core architecture

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

- Interactive diagram: https://gitdiagram.com/karolek13245/zonk-core
- Repository: https://github.com/karolek13245/zonk-core

## Overview

Zonk-Core is an Android app for private on-device AI chat, with optional OpenAI-compatible cloud chat and a model catalog. The main user flow is choosing or downloading a model, chatting, and optionally saving chat history; a separate picture flow supports on-device vision. Settings, appearance, updates, and host-device readings are additional product branches. The README documents these capabilities, but most Kotlin implementation was not sampled, so several internal connections are omitted or shown as unverified; the JNI bridge is the only sampled runtime implementation.

Main entry points: [`app/src/main/java/com/example/aiapp/ChatScreen.kt`](https://github.com/karolek13245/zonk-core/blob/main/app/src/main/java/com/example/aiapp/ChatScreen.kt) (Chat Screen), [`app/src/main/java/com/example/aiapp/Backend.kt`](https://github.com/karolek13245/zonk-core/blob/main/app/src/main/java/com/example/aiapp/Backend.kt) (Cloud Backend), [`app/src/main/java/com/example/aiapp/SettingsExtras.kt`](https://github.com/karolek13245/zonk-core/blob/main/app/src/main/java/com/example/aiapp/SettingsExtras.kt) (Appearance and Updates), [`app/src/main/java/com/example/aiapp/Theme.kt`](https://github.com/karolek13245/zonk-core/blob/main/app/src/main/java/com/example/aiapp/Theme.kt) (Theme Rendering)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_chat["Chat and History"]
  node_chat_ui["Chat Screen<br/>[ChatScreen.kt]"]
  node_app_flow["App Flow<br/>[MainActivity.kt]"]
  node_history_ui["Chat History"]
  node_chat_store[("Chat Store<br/>[ChatStore.kt]")]
  node_code_blocks["Code Blocks<br/>[CodeBlocks.kt]"]
  node_image_utils["Picture Handling<br/>[ImageUtils.kt]"]
end

subgraph group_models["Models and Inference"]
  node_catalog["Model Catalog<br/>[Models.kt]"]
  node_local_backend["On-device Backend<br/>[LlamaBackend.kt]"]
  node_cloud_backend["Cloud Backend<br/>[Backend.kt]"]
end

subgraph group_settings["Settings and Appearance"]
  node_settings_ui["Settings<br/>[SettingsScreen.kt]"]
  node_settings_extras["Appearance and Updates<br/>[SettingsExtras.kt]"]
  node_secure_store[("Encrypted API Key<br/>[SecureStore.kt]")]
  node_themes["Theme Rendering<br/>[Theme.kt]"]
  node_theme_options["Theme Options<br/>[AppThemes.kt]"]
  node_season_math["Season Timing<br/>[SeasonMath.kt]"]
  node_season_overlay["Season Effects<br/>[SeasonOverlay.kt]"]
end

subgraph group_device["Device and Updates"]
  node_host["Host Readings<br/>[HostScreen.kt]"]
  node_update_check["Update Check<br/>[UpdateCheck.kt]"]
  node_update_dialog["Update Dialog<br/>[UpdateDialog.kt]"]
end

subgraph group_platform["Native Runtime"]
  node_llama_bridge["llama.cpp Bridge<br/>[llama-jni.cpp]"]
end

node_user(("Phone User"))
node_cloud_server{{"OpenAI-compatible Server"}}
node_github{{"GitHub Releases"}}

node_user -->|"uses"| node_chat_ui
node_user -->|"downloads models"| node_catalog
node_user -->|"configures"| node_settings_ui
node_user -->|"views readings"| node_host
node_app_flow -->|"hosts chat"| node_chat_ui
node_chat_ui -->|"renders code"| node_code_blocks
node_chat_ui -->|"prepares pictures"| node_image_utils
node_app_flow -.->|"saves chats"| node_chat_store
node_history_ui -.->|"reads history"| node_chat_store
node_chat_ui -.->|"requests replies"| node_local_backend
node_chat_ui -.->|"cloud mode"| node_cloud_backend
node_cloud_backend -.->|"sends requests"| node_cloud_server
node_cloud_backend -.->|"uses API key"| node_secure_store
node_catalog -.->|"provides models"| node_local_backend
node_local_backend -->|"calls JNI"| node_llama_bridge
node_settings_ui -->|"offers options"| node_settings_extras
node_settings_extras -.->|"selects appearance"| node_themes
node_themes -.->|"uses palettes"| node_theme_options
node_themes -.->|"draws effects"| node_season_overlay
node_season_overlay -.->|"uses timing"| node_season_math
node_settings_extras -.->|"configures checks"| node_update_check
node_update_check -->|"checks releases"| node_github
node_update_check -->|"shows update"| node_update_dialog

click node_chat_ui "https://github.com/karolek13245/zonk-core/blob/main/app/src/main/java/com/example/aiapp/ChatScreen.kt"
click node_app_flow "https://github.com/karolek13245/zonk-core/blob/main/app/src/main/java/com/example/aiapp/MainActivity.kt"
click node_history_ui "https://github.com/karolek13245/zonk-core/blob/main/app/src/main/java/com/example/aiapp/ChatHistoryScreen.kt"
click node_chat_store "https://github.com/karolek13245/zonk-core/blob/main/app/src/main/java/com/example/aiapp/ChatStore.kt"
click node_code_blocks "https://github.com/karolek13245/zonk-core/blob/main/app/src/main/java/com/example/aiapp/CodeBlocks.kt"
click node_image_utils "https://github.com/karolek13245/zonk-core/blob/main/app/src/main/java/com/example/aiapp/ImageUtils.kt"
click node_catalog "https://github.com/karolek13245/zonk-core/blob/main/app/src/main/java/com/example/aiapp/Models.kt"
click node_local_backend "https://github.com/karolek13245/zonk-core/blob/main/app/src/main/java/com/example/aiapp/LlamaBackend.kt"
click node_cloud_backend "https://github.com/karolek13245/zonk-core/blob/main/app/src/main/java/com/example/aiapp/Backend.kt"
click node_llama_bridge "https://github.com/karolek13245/zonk-core/blob/main/app/src/main/cpp/llama-jni.cpp"
click node_settings_ui "https://github.com/karolek13245/zonk-core/blob/main/app/src/main/java/com/example/aiapp/SettingsScreen.kt"
click node_settings_extras "https://github.com/karolek13245/zonk-core/blob/main/app/src/main/java/com/example/aiapp/SettingsExtras.kt"
click node_secure_store "https://github.com/karolek13245/zonk-core/blob/main/app/src/main/java/com/example/aiapp/SecureStore.kt"
click node_themes "https://github.com/karolek13245/zonk-core/blob/main/app/src/main/java/com/example/aiapp/Theme.kt"
click node_theme_options "https://github.com/karolek13245/zonk-core/blob/main/app/src/main/java/com/example/aiapp/AppThemes.kt"
click node_season_math "https://github.com/karolek13245/zonk-core/blob/main/app/src/main/java/com/example/aiapp/SeasonMath.kt"
click node_season_overlay "https://github.com/karolek13245/zonk-core/blob/main/app/src/main/java/com/example/aiapp/SeasonOverlay.kt"
click node_host "https://github.com/karolek13245/zonk-core/blob/main/app/src/main/java/com/example/aiapp/HostScreen.kt"
click node_update_check "https://github.com/karolek13245/zonk-core/blob/main/app/src/main/java/com/example/aiapp/UpdateCheck.kt"
click node_update_dialog "https://github.com/karolek13245/zonk-core/blob/main/app/src/main/java/com/example/aiapp/UpdateDialog.kt"

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_chat_ui,node_app_flow,node_history_ui,node_chat_store,node_code_blocks,node_image_utils,node_user toneBlue
class node_catalog,node_local_backend,node_cloud_backend toneAmber
class node_settings_ui,node_settings_extras,node_secure_store,node_themes,node_theme_options,node_season_math,node_season_overlay,node_cloud_server toneMint
class node_host,node_update_check,node_update_dialog toneRose
class node_llama_bridge,node_github toneIndigo
```

## Components

### Chat and History

- [Chat Screen](https://github.com/karolek13245/zonk-core/blob/main/app/src/main/java/com/example/aiapp/ChatScreen.kt): `app/src/main/java/com/example/aiapp/ChatScreen.kt`
- [App Flow](https://github.com/karolek13245/zonk-core/blob/main/app/src/main/java/com/example/aiapp/MainActivity.kt): `app/src/main/java/com/example/aiapp/MainActivity.kt`
- [Chat History](https://github.com/karolek13245/zonk-core/blob/main/app/src/main/java/com/example/aiapp/ChatHistoryScreen.kt): `app/src/main/java/com/example/aiapp/ChatHistoryScreen.kt`
- [Chat Store](https://github.com/karolek13245/zonk-core/blob/main/app/src/main/java/com/example/aiapp/ChatStore.kt): `app/src/main/java/com/example/aiapp/ChatStore.kt`
- [Code Blocks](https://github.com/karolek13245/zonk-core/blob/main/app/src/main/java/com/example/aiapp/CodeBlocks.kt): `app/src/main/java/com/example/aiapp/CodeBlocks.kt`
- [Picture Handling](https://github.com/karolek13245/zonk-core/blob/main/app/src/main/java/com/example/aiapp/ImageUtils.kt): `app/src/main/java/com/example/aiapp/ImageUtils.kt`

### Models and Inference

- [Model Catalog](https://github.com/karolek13245/zonk-core/blob/main/app/src/main/java/com/example/aiapp/Models.kt): `app/src/main/java/com/example/aiapp/Models.kt`
- [On-device Backend](https://github.com/karolek13245/zonk-core/blob/main/app/src/main/java/com/example/aiapp/LlamaBackend.kt): `app/src/main/java/com/example/aiapp/LlamaBackend.kt`
- [Cloud Backend](https://github.com/karolek13245/zonk-core/blob/main/app/src/main/java/com/example/aiapp/Backend.kt): `app/src/main/java/com/example/aiapp/Backend.kt`

### Settings and Appearance

- [Settings](https://github.com/karolek13245/zonk-core/blob/main/app/src/main/java/com/example/aiapp/SettingsScreen.kt): `app/src/main/java/com/example/aiapp/SettingsScreen.kt`
- [Appearance and Updates](https://github.com/karolek13245/zonk-core/blob/main/app/src/main/java/com/example/aiapp/SettingsExtras.kt): `app/src/main/java/com/example/aiapp/SettingsExtras.kt`
- [Encrypted API Key](https://github.com/karolek13245/zonk-core/blob/main/app/src/main/java/com/example/aiapp/SecureStore.kt): `app/src/main/java/com/example/aiapp/SecureStore.kt`
- [Theme Rendering](https://github.com/karolek13245/zonk-core/blob/main/app/src/main/java/com/example/aiapp/Theme.kt): `app/src/main/java/com/example/aiapp/Theme.kt`
- [Theme Options](https://github.com/karolek13245/zonk-core/blob/main/app/src/main/java/com/example/aiapp/AppThemes.kt): `app/src/main/java/com/example/aiapp/AppThemes.kt`
- [Season Timing](https://github.com/karolek13245/zonk-core/blob/main/app/src/main/java/com/example/aiapp/SeasonMath.kt): `app/src/main/java/com/example/aiapp/SeasonMath.kt`
- [Season Effects](https://github.com/karolek13245/zonk-core/blob/main/app/src/main/java/com/example/aiapp/SeasonOverlay.kt): `app/src/main/java/com/example/aiapp/SeasonOverlay.kt`

### Device and Updates

- [Host Readings](https://github.com/karolek13245/zonk-core/blob/main/app/src/main/java/com/example/aiapp/HostScreen.kt): `app/src/main/java/com/example/aiapp/HostScreen.kt`
- [Update Check](https://github.com/karolek13245/zonk-core/blob/main/app/src/main/java/com/example/aiapp/UpdateCheck.kt): `app/src/main/java/com/example/aiapp/UpdateCheck.kt`
- [Update Dialog](https://github.com/karolek13245/zonk-core/blob/main/app/src/main/java/com/example/aiapp/UpdateDialog.kt): `app/src/main/java/com/example/aiapp/UpdateDialog.kt`

### Native Runtime

- [llama.cpp Bridge](https://github.com/karolek13245/zonk-core/blob/main/app/src/main/cpp/llama-jni.cpp): `app/src/main/cpp/llama-jni.cpp`

### Other components

- **Phone User**
- **OpenAI-compatible Server**
- **GitHub Releases**

## Connections

- Phone User → Chat Screen: uses (evidence: `README.md`)
- Phone User → Model Catalog: downloads models (evidence: `README.md`)
- Phone User → Settings: configures (evidence: `README.md`)
- Phone User → Host Readings: views readings (evidence: `README.md`)
- App Flow → Chat Screen: hosts chat (evidence: `README.md`)
- Chat Screen → Code Blocks: renders code (evidence: `README.md`)
- Chat Screen → Picture Handling: prepares pictures (evidence: `README.md`)
- App Flow → Chat Store: saves chats
- Chat History → Chat Store: reads history
- Chat Screen → On-device Backend: requests replies
- Chat Screen → Cloud Backend: cloud mode
- Cloud Backend → OpenAI-compatible Server: sends requests
- Cloud Backend → Encrypted API Key: uses API key
- Model Catalog → On-device Backend: provides models
- On-device Backend → llama.cpp Bridge: calls JNI (evidence: `app/src/main/cpp/llama-jni.cpp`)
- Settings → Appearance and Updates: offers options (evidence: `README.md`)
- Appearance and Updates → Theme Rendering: selects appearance
- Theme Rendering → Theme Options: uses palettes
- Theme Rendering → Season Effects: draws effects
- Season Effects → Season Timing: uses timing
- Appearance and Updates → Update Check: configures checks
- Update Check → GitHub Releases: checks releases (evidence: `README.md`)
- Update Check → Update Dialog: shows update (evidence: `README.md`)
