# lucrazy-fn/komicove architecture

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

- Interactive diagram: https://gitdiagram.com/lucrazy-fn/komicove
- Repository: https://github.com/lucrazy-fn/komicove

## Overview

Komicove is a cross-platform comic reader, with desktop and Android interfaces for managing local collections and reading files; the repository also includes account, publication, and moderation services. The main user journey is selecting a library item, opening its pages, and retaining reading progress. The README documents collections, watched folders, guided reading, and multiple archive formats. The graph includes those capabilities, but several implementation links are dashed because their source was not sampled.

Main entry points: [`komicove_app/library_views.py`](https://github.com/lucrazy-fn/komicove/blob/main/komicove_app/library_views.py) (Library interface), [`komicove_app/runtime.py`](https://github.com/lucrazy-fn/komicove/blob/main/komicove_app/runtime.py) (App runtime), [`android/app/src/main/java/com/lucrazy/komicove/MainActivity.java`](https://github.com/lucrazy-fn/komicove/blob/main/android/app/src/main/java/com/lucrazy/komicove/MainActivity.java) (Android library), [`komicove_backend/api/app.py`](https://github.com/lucrazy-fn/komicove/blob/main/komicove_backend/api/app.py) (HTTP API)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_desktop["Desktop reader"]
  node_desktop_ui["Library interface<br/>[library_views.py]"]
  node_desktop_runtime["App runtime<br/>[runtime.py]"]
  node_archive["Archive pages<br/>[archive.py]"]
  node_desktop_reader["Reader view<br/>[reader_views.py]"]
  node_guided["Guided reading<br/>[guided.py]"]
  node_query["Library search<br/>[library_query.py]"]
  node_folders["Watched folders"]
  node_collections["Collections<br/>[collections.py]"]
  node_desktop_auth["Account interface<br/>[auth_views.py]"]
end

subgraph group_android["Android reader"]
  node_android_ui["Android library<br/>[MainActivity.java]"]
  node_android_books["Book sources<br/>[BookSource.java]"]
  node_android_store[("Android library store<br/>[LibraryStore.java]")]
  node_android_reader["Android reader"]
  node_android_folders["Android folders"]
  node_guided_detector["Panel detection<br/>[PanelDetector.java]"]
end

subgraph group_server["Accounts and services"]
  node_api["HTTP API<br/>[app.py]"]
  node_auth_routes["Authentication routes<br/>[auth.py]"]
  node_accounts["Account service<br/>[service.py]"]
  node_database[("Server database<br/>[db.py]")]
  node_catalog["Publication catalog<br/>[service.py]"]
  node_moderation["Content moderation<br/>[service.py]"]
  node_moderation_store[("Moderation records<br/>[storage.py]")]
end

subgraph group_shared["Local data and integrations"]
  node_local_state[("Reader state<br/>[storage.py]")]
  node_sync["Library sync<br/>[sync.py]"]
  node_downloads["Downloads<br/>[downloads.py]"]
  node_client["API client<br/>[api_client.py]"]
end

node_reader(("Reader user"))

node_reader -->|"browses library"| node_desktop_ui
node_desktop_ui -->|"uses runtime"| node_desktop_runtime
node_desktop_runtime -->|"opens archives"| node_archive
node_desktop_runtime -->|"uses reader"| node_desktop_reader
node_desktop_runtime -->|"loads state"| node_local_state
node_desktop_runtime -->|"uses downloads"| node_downloads
node_desktop_ui -->|"queries library"| node_query
node_desktop_ui -->|"opens reader"| node_desktop_reader
node_desktop_ui -->|"uses folder tools"| node_folders
node_desktop_ui -.->|"organizes books"| node_collections
node_desktop_reader -.->|"offers guided mode"| node_guided
node_desktop_ui -.->|"uses sync"| node_sync
node_desktop_ui -->|"opens accounts"| node_desktop_auth
node_reader -->|"browses library"| node_android_ui
node_android_ui -->|"manages books"| node_android_store
node_android_ui -->|"uses book sources"| node_android_books
node_android_ui -->|"manages folders"| node_android_folders
node_android_ui -.->|"opens reader"| node_android_reader
node_android_reader -.->|"supports guided mode"| node_guided_detector
node_android_store -.->|"syncs progress"| node_local_state
node_desktop_auth -.->|"calls API"| node_client
node_client -->|"sends requests"| node_api
node_api -->|"registers routes"| node_auth_routes
node_auth_routes -->|"delegates auth"| node_accounts
node_accounts -->|"uses session"| node_database
node_api -.->|"serves publications"| node_catalog
node_api -.->|"serves moderation"| node_moderation
node_moderation -->|"saves review"| node_moderation_store
node_moderation_store -->|"stores records"| node_database

click node_desktop_ui "https://github.com/lucrazy-fn/komicove/blob/main/komicove_app/library_views.py"
click node_desktop_runtime "https://github.com/lucrazy-fn/komicove/blob/main/komicove_app/runtime.py"
click node_archive "https://github.com/lucrazy-fn/komicove/blob/main/komicove_app/archive.py"
click node_desktop_reader "https://github.com/lucrazy-fn/komicove/blob/main/komicove_app/reader_views.py"
click node_guided "https://github.com/lucrazy-fn/komicove/blob/main/komicove_app/guided.py"
click node_query "https://github.com/lucrazy-fn/komicove/blob/main/komicove_app/library_query.py"
click node_folders "https://github.com/lucrazy-fn/komicove/blob/main/komicove_app/monitored_folders.py"
click node_collections "https://github.com/lucrazy-fn/komicove/blob/main/komicove_app/collections.py"
click node_local_state "https://github.com/lucrazy-fn/komicove/blob/main/komicove_app/storage.py"
click node_sync "https://github.com/lucrazy-fn/komicove/blob/main/komicove_app/sync.py"
click node_desktop_auth "https://github.com/lucrazy-fn/komicove/blob/main/komicove_app/auth_views.py"
click node_downloads "https://github.com/lucrazy-fn/komicove/blob/main/komicove_app/downloads.py"
click node_android_ui "https://github.com/lucrazy-fn/komicove/blob/main/android/app/src/main/java/com/lucrazy/komicove/MainActivity.java"
click node_android_books "https://github.com/lucrazy-fn/komicove/blob/main/android/app/src/main/java/com/lucrazy/komicove/BookSource.java"
click node_android_store "https://github.com/lucrazy-fn/komicove/blob/main/android/app/src/main/java/com/lucrazy/komicove/LibraryStore.java"
click node_android_reader "https://github.com/lucrazy-fn/komicove/blob/main/android/app/src/main/java/com/lucrazy/komicove/ReaderActivity.java"
click node_android_folders "https://github.com/lucrazy-fn/komicove/blob/main/android/app/src/main/java/com/lucrazy/komicove/MonitoredFolders.java"
click node_guided_detector "https://github.com/lucrazy-fn/komicove/blob/main/android/app/src/main/java/com/lucrazy/komicove/PanelDetector.java"
click node_client "https://github.com/lucrazy-fn/komicove/blob/main/komicove_client/api_client.py"
click node_api "https://github.com/lucrazy-fn/komicove/blob/main/komicove_backend/api/app.py"
click node_auth_routes "https://github.com/lucrazy-fn/komicove/blob/main/komicove_backend/api/routes/auth.py"
click node_accounts "https://github.com/lucrazy-fn/komicove/blob/main/komicove_backend/accounts/service.py"
click node_database "https://github.com/lucrazy-fn/komicove/blob/main/komicove_backend/db.py"
click node_catalog "https://github.com/lucrazy-fn/komicove/blob/main/komicove_backend/catalog/service.py"
click node_moderation "https://github.com/lucrazy-fn/komicove/blob/main/komicove_backend/moderation/service.py"
click node_moderation_store "https://github.com/lucrazy-fn/komicove/blob/main/komicove_backend/moderation/storage.py"

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_desktop_ui,node_desktop_runtime,node_archive,node_desktop_reader,node_guided,node_query,node_folders,node_collections,node_desktop_auth,node_reader toneBlue
class node_android_ui,node_android_books,node_android_store,node_android_reader,node_android_folders,node_guided_detector toneAmber
class node_api,node_auth_routes,node_accounts,node_database,node_catalog,node_moderation,node_moderation_store toneMint
class node_local_state,node_sync,node_downloads,node_client toneRose
```

## Components

### Desktop reader

- [Library interface](https://github.com/lucrazy-fn/komicove/blob/main/komicove_app/library_views.py): `komicove_app/library_views.py`
- [App runtime](https://github.com/lucrazy-fn/komicove/blob/main/komicove_app/runtime.py): `komicove_app/runtime.py`
- [Archive pages](https://github.com/lucrazy-fn/komicove/blob/main/komicove_app/archive.py): `komicove_app/archive.py`
- [Reader view](https://github.com/lucrazy-fn/komicove/blob/main/komicove_app/reader_views.py): `komicove_app/reader_views.py`
- [Guided reading](https://github.com/lucrazy-fn/komicove/blob/main/komicove_app/guided.py): `komicove_app/guided.py`
- [Library search](https://github.com/lucrazy-fn/komicove/blob/main/komicove_app/library_query.py): `komicove_app/library_query.py`
- [Watched folders](https://github.com/lucrazy-fn/komicove/blob/main/komicove_app/monitored_folders.py): `komicove_app/monitored_folders.py`
- [Collections](https://github.com/lucrazy-fn/komicove/blob/main/komicove_app/collections.py): `komicove_app/collections.py`
- [Account interface](https://github.com/lucrazy-fn/komicove/blob/main/komicove_app/auth_views.py): `komicove_app/auth_views.py`

### Android reader

- [Android library](https://github.com/lucrazy-fn/komicove/blob/main/android/app/src/main/java/com/lucrazy/komicove/MainActivity.java): `android/app/src/main/java/com/lucrazy/komicove/MainActivity.java`
- [Book sources](https://github.com/lucrazy-fn/komicove/blob/main/android/app/src/main/java/com/lucrazy/komicove/BookSource.java): `android/app/src/main/java/com/lucrazy/komicove/BookSource.java`
- [Android library store](https://github.com/lucrazy-fn/komicove/blob/main/android/app/src/main/java/com/lucrazy/komicove/LibraryStore.java): `android/app/src/main/java/com/lucrazy/komicove/LibraryStore.java`
- [Android reader](https://github.com/lucrazy-fn/komicove/blob/main/android/app/src/main/java/com/lucrazy/komicove/ReaderActivity.java): `android/app/src/main/java/com/lucrazy/komicove/ReaderActivity.java`
- [Android folders](https://github.com/lucrazy-fn/komicove/blob/main/android/app/src/main/java/com/lucrazy/komicove/MonitoredFolders.java): `android/app/src/main/java/com/lucrazy/komicove/MonitoredFolders.java`
- [Panel detection](https://github.com/lucrazy-fn/komicove/blob/main/android/app/src/main/java/com/lucrazy/komicove/PanelDetector.java): `android/app/src/main/java/com/lucrazy/komicove/PanelDetector.java`

### Accounts and services

- [HTTP API](https://github.com/lucrazy-fn/komicove/blob/main/komicove_backend/api/app.py): `komicove_backend/api/app.py`
- [Authentication routes](https://github.com/lucrazy-fn/komicove/blob/main/komicove_backend/api/routes/auth.py): `komicove_backend/api/routes/auth.py`
- [Account service](https://github.com/lucrazy-fn/komicove/blob/main/komicove_backend/accounts/service.py): `komicove_backend/accounts/service.py`
- [Server database](https://github.com/lucrazy-fn/komicove/blob/main/komicove_backend/db.py): `komicove_backend/db.py`
- [Publication catalog](https://github.com/lucrazy-fn/komicove/blob/main/komicove_backend/catalog/service.py): `komicove_backend/catalog/service.py`
- [Content moderation](https://github.com/lucrazy-fn/komicove/blob/main/komicove_backend/moderation/service.py): `komicove_backend/moderation/service.py`
- [Moderation records](https://github.com/lucrazy-fn/komicove/blob/main/komicove_backend/moderation/storage.py): `komicove_backend/moderation/storage.py`

### Local data and integrations

- [Reader state](https://github.com/lucrazy-fn/komicove/blob/main/komicove_app/storage.py): `komicove_app/storage.py`
- [Library sync](https://github.com/lucrazy-fn/komicove/blob/main/komicove_app/sync.py): `komicove_app/sync.py`
- [Downloads](https://github.com/lucrazy-fn/komicove/blob/main/komicove_app/downloads.py): `komicove_app/downloads.py`
- [API client](https://github.com/lucrazy-fn/komicove/blob/main/komicove_client/api_client.py): `komicove_client/api_client.py`

### Other components

- **Reader user**

## Connections

- Reader user → Library interface: browses library (evidence: `README.md`)
- Library interface → App runtime: uses runtime (evidence: `komicove_app/library_views.py`)
- App runtime → Archive pages: opens archives (evidence: `komicove_app/runtime.py`)
- App runtime → Reader view: uses reader (evidence: `komicove_app/runtime.py`)
- App runtime → Reader state: loads state (evidence: `komicove_app/runtime.py`)
- App runtime → Downloads: uses downloads (evidence: `komicove_app/runtime.py`)
- Library interface → Library search: queries library (evidence: `komicove_app/library_views.py`)
- Library interface → Reader view: opens reader (evidence: `komicove_app/library_views.py`)
- Library interface → Watched folders: uses folder tools (evidence: `komicove_app/library_views.py`)
- Library interface → Collections: organizes books
- Reader view → Guided reading: offers guided mode
- Library interface → Library sync: uses sync (evidence: `komicove_app/library_views.py`)
- Library interface → Account interface: opens accounts (evidence: `komicove_app/library_views.py`)
- Reader user → Android library: browses library (evidence: `README.md`)
- Android library → Android library store: manages books (evidence: `android/app/src/main/java/com/lucrazy/komicove/MainActivity.java`)
- Android library → Book sources: uses book sources (evidence: `android/app/src/main/java/com/lucrazy/komicove/MainActivity.java`)
- Android library → Android folders: manages folders (evidence: `android/app/src/main/java/com/lucrazy/komicove/MainActivity.java`)
- Android library → Android reader: opens reader
- Android reader → Panel detection: supports guided mode
- Android library store → Reader state: syncs progress
- Account interface → API client: calls API
- API client → HTTP API: sends requests (evidence: `komicove_client/api_client.py`)
- HTTP API → Authentication routes: registers routes (evidence: `komicove_backend/api/app.py`)
- Authentication routes → Account service: delegates auth (evidence: `komicove_backend/api/routes/auth.py`)
- Account service → Server database: uses session (evidence: `komicove_backend/accounts/service.py`)
- HTTP API → Publication catalog: serves publications
- HTTP API → Content moderation: serves moderation
- Content moderation → Moderation records: saves review (evidence: `komicove_backend/moderation/service.py`)
- Moderation records → Server database: stores records (evidence: `komicove_backend/moderation/storage.py`)
