# harrys-hq/shinku architecture

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

- Interactive diagram: https://gitdiagram.com/harrys-hq/shinku
- Repository: https://github.com/harrys-hq/shinku

## Overview

ShinKu is an Android manga library and reader, extending the Mihon/SY foundation with discovery, AI, translation, tracking, and sync. The principal journey is to discover manga through sources or personalized search, save it to a library, obtain chapters, and read them; related capabilities include backups, external progress tracking, and library organization. The tree and README establish these product areas, while sampled files verify selected internal behavior. Links based only on documented capabilities cite the README; unsampled implementation details are represented at their existing directory paths.

Main entry points: [`data/src/main/java/com/shinku/reader/data/manga/MangaRepositoryImpl.kt`](https://github.com/harrys-hq/shinku/blob/main/data/src/main/java/com/shinku/reader/data/manga/MangaRepositoryImpl.kt) (Manga Library), [`domain/src/main/java/com/shinku/reader/domain/ai/AiEngine.kt`](https://github.com/harrys-hq/shinku/blob/main/domain/src/main/java/com/shinku/reader/domain/ai/AiEngine.kt) (AI Engines), [`app/src/main/java/com/shinku/reader/presentation`](https://github.com/harrys-hq/shinku/tree/main/app/src/main/java/com/shinku/reader/presentation) (Discover Feed), [`app/src/main/java/com/shinku/reader/domain/source/interactor`](https://github.com/harrys-hq/shinku/tree/main/app/src/main/java/com/shinku/reader/domain/source/interactor) (Translation Tools)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_discovery["Discovery and Sources"]
  node_discover["Discover Feed"]
  node_source_manager["Source Manager<br/>[SourceManager.kt]"]
  node_extensions["Extensions"]
  node_vibe_search["Vibe Search"]
  node_ai_engines["AI Engines<br/>[AiEngine.kt]"]
  node_feed_search_store[("Saved Feed Searches")]
  node_eh_search["Advanced Search<br/>[SearchEngine.kt]"]
end

subgraph group_library["Library Management"]
  node_library[("Manga Library")]
  node_smart_categories["Smart Categories"]
  node_library_search["Library Search"]
  node_updates["Library Updates"]
end

subgraph group_reading["Reading and Translation"]
  node_reader["Manga Reader"]
  node_downloads["Chapter Downloads<br/>[DownloadManager.kt]"]
  node_translation["Translation Tools"]
end

subgraph group_integrations["Sync and Integrations"]
  node_backup["Backup and Restore"]
  node_tracker_manager["Tracker Manager<br/>[TrackerManager.kt]"]
  node_tracker_services["Tracker Services"]
  node_sync["Cloud Sync<br/>[SyncManager.kt]"]
  node_sync_service["Sync Service<br/>[SyncService.kt]"]
end

subgraph group_foundation["App Foundation"]
  node_storage["Storage Manager<br/>[StorageManager.kt]"]
  node_network["Network Client<br/>[NetworkHelper.kt]"]
end

node_user(("Reader"))
node_manga_sources["Manga Sources"]
node_ai_providers["AI Providers"]
node_tracker_platforms["Tracker Platforms"]
node_cloud_storage["Cloud Storage"]

node_user -->|"browses"| node_discover
node_discover -.->|"browses sources"| node_source_manager
node_source_manager -.->|"fetches titles"| node_manga_sources
node_user -->|"searches naturally"| node_vibe_search
node_vibe_search -.->|"requests recommendations"| node_ai_engines
node_ai_engines -->|"generates results"| node_ai_providers
node_user -->|"organizes titles"| node_library
node_library -->|"categorizes titles"| node_smart_categories
node_library -.->|"searches library"| node_library_search
node_library -->|"refreshes titles"| node_updates
node_user -.->|"downloads chapters"| node_downloads
node_downloads -.->|"stores chapters"| node_storage
node_user -->|"reads chapters"| node_reader
node_reader -->|"translates pages"| node_translation
node_translation -.->|"uses cloud engines"| node_ai_engines
node_translation -.->|"uses offline services"| node_manga_sources
node_user -->|"backs up data"| node_backup
node_user -->|"links progress"| node_tracker_manager
node_tracker_manager -.->|"dispatches tracking"| node_tracker_services
node_tracker_services -->|"syncs progress"| node_tracker_platforms
node_user -.->|"starts sync"| node_sync
node_sync -.->|"coordinates sync"| node_sync_service
node_sync_service -.->|"syncs remotely"| node_cloud_storage
node_discover -.->|"loads saved searches"| node_feed_search_store
node_eh_search -.->|"supports migration search"| node_library_search
node_ai_engines -->|"sends requests"| node_network

click node_reader "https://github.com/harrys-hq/shinku/tree/main/app/src/main/java/com/shinku/reader"
click node_discover "https://github.com/harrys-hq/shinku/tree/main/app/src/main/java/com/shinku/reader/presentation"
click node_source_manager "https://github.com/harrys-hq/shinku/blob/main/domain/src/main/java/com/shinku/reader/domain/source/service/SourceManager.kt"
click node_extensions "https://github.com/harrys-hq/shinku/blob/main/app/src/main/java/com/shinku/reader/extension/ExtensionManager.kt"
click node_vibe_search "https://github.com/harrys-hq/shinku/blob/main/app/src/main/java/com/shinku/reader/domain/source/interactor/GeminiVibeSearch.kt"
click node_ai_engines "https://github.com/harrys-hq/shinku/blob/main/domain/src/main/java/com/shinku/reader/domain/ai/AiEngine.kt"
click node_library "https://github.com/harrys-hq/shinku/blob/main/data/src/main/java/com/shinku/reader/data/manga/MangaRepositoryImpl.kt"
click node_smart_categories "https://github.com/harrys-hq/shinku/blob/main/app/src/main/java/com/shinku/reader/data/category/SmartCategorizerJob.kt"
click node_library_search "https://github.com/harrys-hq/shinku/blob/main/app/src/main/java/com/shinku/reader/exh/smartsearch/SmartLibrarySearchEngine.kt"
click node_updates "https://github.com/harrys-hq/shinku/blob/main/app/src/main/java/com/shinku/reader/data/library/LibraryUpdateJob.kt"
click node_downloads "https://github.com/harrys-hq/shinku/blob/main/app/src/main/java/com/shinku/reader/data/download/DownloadManager.kt"
click node_translation "https://github.com/harrys-hq/shinku/tree/main/app/src/main/java/com/shinku/reader/domain/source/interactor"
click node_backup "https://github.com/harrys-hq/shinku/tree/main/app/src/main/java/com/shinku/reader/data/backup"
click node_tracker_manager "https://github.com/harrys-hq/shinku/blob/main/app/src/main/java/com/shinku/reader/data/track/TrackerManager.kt"
click node_tracker_services "https://github.com/harrys-hq/shinku/tree/main/app/src/main/java/com/shinku/reader/data/track"
click node_sync "https://github.com/harrys-hq/shinku/blob/main/app/src/main/java/com/shinku/reader/data/sync/SyncManager.kt"
click node_sync_service "https://github.com/harrys-hq/shinku/blob/main/app/src/main/java/com/shinku/reader/data/sync/service/SyncService.kt"
click node_feed_search_store "https://github.com/harrys-hq/shinku/blob/main/data/src/main/java/com/shinku/reader/data/source/FeedSavedSearchRepositoryImpl.kt"
click node_eh_search "https://github.com/harrys-hq/shinku/blob/main/app/src/main/java/com/shinku/reader/exh/search/SearchEngine.kt"
click node_storage "https://github.com/harrys-hq/shinku/blob/main/domain/src/main/java/com/shinku/reader/domain/storage/service/StorageManager.kt"
click node_network "https://github.com/harrys-hq/shinku/blob/main/core/common/src/main/kotlin/eu/kanade/tachiyomi/network/NetworkHelper.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_discover,node_source_manager,node_extensions,node_vibe_search,node_ai_engines,node_feed_search_store,node_eh_search toneBlue
class node_library,node_smart_categories,node_library_search,node_updates,node_cloud_storage toneAmber
class node_reader,node_downloads,node_translation toneMint
class node_backup,node_tracker_manager,node_tracker_services,node_sync,node_sync_service toneRose
class node_storage,node_network,node_user,node_manga_sources,node_ai_providers,node_tracker_platforms toneIndigo
```

## Components

### Discovery and Sources

- [Discover Feed](https://github.com/harrys-hq/shinku/tree/main/app/src/main/java/com/shinku/reader/presentation): `app/src/main/java/com/shinku/reader/presentation`
- [Source Manager](https://github.com/harrys-hq/shinku/blob/main/domain/src/main/java/com/shinku/reader/domain/source/service/SourceManager.kt): `domain/src/main/java/com/shinku/reader/domain/source/service/SourceManager.kt`
- [Extensions](https://github.com/harrys-hq/shinku/blob/main/app/src/main/java/com/shinku/reader/extension/ExtensionManager.kt): `app/src/main/java/com/shinku/reader/extension/ExtensionManager.kt`
- [Vibe Search](https://github.com/harrys-hq/shinku/blob/main/app/src/main/java/com/shinku/reader/domain/source/interactor/GeminiVibeSearch.kt): `app/src/main/java/com/shinku/reader/domain/source/interactor/GeminiVibeSearch.kt`
- [AI Engines](https://github.com/harrys-hq/shinku/blob/main/domain/src/main/java/com/shinku/reader/domain/ai/AiEngine.kt): `domain/src/main/java/com/shinku/reader/domain/ai/AiEngine.kt`
- [Saved Feed Searches](https://github.com/harrys-hq/shinku/blob/main/data/src/main/java/com/shinku/reader/data/source/FeedSavedSearchRepositoryImpl.kt): `data/src/main/java/com/shinku/reader/data/source/FeedSavedSearchRepositoryImpl.kt`
- [Advanced Search](https://github.com/harrys-hq/shinku/blob/main/app/src/main/java/com/shinku/reader/exh/search/SearchEngine.kt): `app/src/main/java/com/shinku/reader/exh/search/SearchEngine.kt`

### Library Management

- [Manga Library](https://github.com/harrys-hq/shinku/blob/main/data/src/main/java/com/shinku/reader/data/manga/MangaRepositoryImpl.kt): `data/src/main/java/com/shinku/reader/data/manga/MangaRepositoryImpl.kt`
- [Smart Categories](https://github.com/harrys-hq/shinku/blob/main/app/src/main/java/com/shinku/reader/data/category/SmartCategorizerJob.kt): `app/src/main/java/com/shinku/reader/data/category/SmartCategorizerJob.kt`
- [Library Search](https://github.com/harrys-hq/shinku/blob/main/app/src/main/java/com/shinku/reader/exh/smartsearch/SmartLibrarySearchEngine.kt): `app/src/main/java/com/shinku/reader/exh/smartsearch/SmartLibrarySearchEngine.kt`
- [Library Updates](https://github.com/harrys-hq/shinku/blob/main/app/src/main/java/com/shinku/reader/data/library/LibraryUpdateJob.kt): `app/src/main/java/com/shinku/reader/data/library/LibraryUpdateJob.kt`

### Reading and Translation

- [Manga Reader](https://github.com/harrys-hq/shinku/tree/main/app/src/main/java/com/shinku/reader): `app/src/main/java/com/shinku/reader`
- [Chapter Downloads](https://github.com/harrys-hq/shinku/blob/main/app/src/main/java/com/shinku/reader/data/download/DownloadManager.kt): `app/src/main/java/com/shinku/reader/data/download/DownloadManager.kt`
- [Translation Tools](https://github.com/harrys-hq/shinku/tree/main/app/src/main/java/com/shinku/reader/domain/source/interactor): `app/src/main/java/com/shinku/reader/domain/source/interactor`

### Sync and Integrations

- [Backup and Restore](https://github.com/harrys-hq/shinku/tree/main/app/src/main/java/com/shinku/reader/data/backup): `app/src/main/java/com/shinku/reader/data/backup`
- [Tracker Manager](https://github.com/harrys-hq/shinku/blob/main/app/src/main/java/com/shinku/reader/data/track/TrackerManager.kt): `app/src/main/java/com/shinku/reader/data/track/TrackerManager.kt`
- [Tracker Services](https://github.com/harrys-hq/shinku/tree/main/app/src/main/java/com/shinku/reader/data/track): `app/src/main/java/com/shinku/reader/data/track`
- [Cloud Sync](https://github.com/harrys-hq/shinku/blob/main/app/src/main/java/com/shinku/reader/data/sync/SyncManager.kt): `app/src/main/java/com/shinku/reader/data/sync/SyncManager.kt`
- [Sync Service](https://github.com/harrys-hq/shinku/blob/main/app/src/main/java/com/shinku/reader/data/sync/service/SyncService.kt): `app/src/main/java/com/shinku/reader/data/sync/service/SyncService.kt`

### App Foundation

- [Storage Manager](https://github.com/harrys-hq/shinku/blob/main/domain/src/main/java/com/shinku/reader/domain/storage/service/StorageManager.kt): `domain/src/main/java/com/shinku/reader/domain/storage/service/StorageManager.kt`
- [Network Client](https://github.com/harrys-hq/shinku/blob/main/core/common/src/main/kotlin/eu/kanade/tachiyomi/network/NetworkHelper.kt): `core/common/src/main/kotlin/eu/kanade/tachiyomi/network/NetworkHelper.kt`

### Other components

- **Reader**
- **Manga Sources**
- **AI Providers**
- **Tracker Platforms**
- **Cloud Storage**

## Connections

- Reader → Discover Feed: browses (evidence: `README.md`)
- Discover Feed → Source Manager: browses sources
- Source Manager → Manga Sources: fetches titles
- Reader → Vibe Search: searches naturally (evidence: `README.md`)
- Vibe Search → AI Engines: requests recommendations
- AI Engines → AI Providers: generates results (evidence: `README.md`)
- Reader → Manga Library: organizes titles (evidence: `README.md`)
- Manga Library → Smart Categories: categorizes titles (evidence: `README.md`)
- Manga Library → Library Search: searches library
- Manga Library → Library Updates: refreshes titles (evidence: `README.md`)
- Reader → Chapter Downloads: downloads chapters
- Chapter Downloads → Storage Manager: stores chapters
- Reader → Manga Reader: reads chapters (evidence: `README.md`)
- Manga Reader → Translation Tools: translates pages (evidence: `README.md`)
- Translation Tools → AI Engines: uses cloud engines
- Translation Tools → Manga Sources: uses offline services
- Reader → Backup and Restore: backs up data (evidence: `README.md`)
- Reader → Tracker Manager: links progress (evidence: `README.md`)
- Tracker Manager → Tracker Services: dispatches tracking
- Tracker Services → Tracker Platforms: syncs progress (evidence: `README.md`)
- Reader → Cloud Sync: starts sync
- Cloud Sync → Sync Service: coordinates sync
- Sync Service → Cloud Storage: syncs remotely
- Discover Feed → Saved Feed Searches: loads saved searches
- Advanced Search → Library Search: supports migration search
- AI Engines → Network Client: sends requests (evidence: `domain/src/main/java/com/shinku/reader/domain/ai/OpenAiCompatibleEngine.kt`)
