# utkucanc/yznvltranslate architecture

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

- Interactive diagram: https://gitdiagram.com/utkucanc/yznvltranslate
- Repository: https://github.com/utkucanc/yznvltranslate

## Overview

NCA is a PyQt6 desktop tool for organizing novel projects, translating chapters with AI or conventional providers, managing terminology, and exporting cleaned TXT/EPUB results. The principal workflow runs from project/file selection through translation and quality checks to merging/export; the README also documents splitting files and chapter-range terminology extraction. The graph reflects documented capabilities as well as sampled controller/worker behavior; unsampled subsystem wiring is shown only where supported by the documented workflow.

Main entry points: [`ui/project_page.py`](https://github.com/utkucanc/yznvltranslate/blob/main/ui/project_page.py) (Project view), [`core/workers/translation_worker.py`](https://github.com/utkucanc/yznvltranslate/blob/main/core/workers/translation_worker.py) (Translation worker), [`main_window.py`](https://github.com/utkucanc/yznvltranslate/blob/main/main_window.py) (Main window), [`core/workers/merging_worker.py`](https://github.com/utkucanc/yznvltranslate/blob/main/core/workers/merging_worker.py) (Chapter merging)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_interface["Desktop interface"]
  node_window["Main window<br/>[main_window.py]"]
  node_dashboard["Dashboard<br/>[dashboard_page.py]"]
  node_project_ui["Project view<br/>[project_page.py]"]
  node_file_table["File table"]
  node_terminology_ui["Terminology UI"]
end

subgraph group_project["Project management"]
  node_project_manager["Project manager<br/>[project_manager.py]"]
  node_file_list["File index"]
  node_database[("SQLite index")]
  node_paths["Path resolver<br/>[path_resolver.py]"]
end

subgraph group_translation["Translation and language"]
  node_translation_controller["Translation controller"]
  node_translation_worker["Translation worker"]
  node_provider["Provider endpoints<br/>[llm_provider.py]"]
  node_classic_translators["Classic translators"]
  node_llm_services{{"LLM services"}}
  node_classic_services{{"Translation services"}}
  node_terminology["Terminology manager"]
  node_ml_extract["ML term extraction"]
  node_quality["Quality checks"]
  node_error_check["Translation error checks"]
end

subgraph group_processing["Text processing and export"]
  node_cleaning["Text cleaning<br/>[cleaning_worker.py]"]
  node_split["File splitting<br/>[split_worker.py]"]
  node_merge["Chapter merging<br/>[merging_worker.py]"]
  node_epub["EPUB export<br/>[epub_worker.py]"]
  node_completion["Completed files"]
end

node_user(("User"))

node_user -->|"uses"| node_window
node_window -->|"shows"| node_dashboard
node_window -->|"shows"| node_project_ui
node_project_ui -->|"manages"| node_project_manager
node_project_ui -->|"loads files"| node_file_list
node_file_list -->|"reads and writes"| node_database
node_project_ui -->|"populates"| node_file_table
node_project_manager -->|"resolves paths"| node_paths
node_project_ui -->|"starts translation"| node_translation_controller
node_translation_controller -->|"starts worker"| node_translation_worker
node_translation_worker -->|"selects endpoint"| node_provider
node_translation_worker -->|"uses provider"| node_classic_translators
node_provider -.->|"requests translation"| node_llm_services
node_classic_translators -.->|"requests translation"| node_classic_services
node_translation_worker -->|"injects terms"| node_terminology
node_terminology_ui -->|"manages terms"| node_terminology
node_ml_extract -->|"adds extracted terms"| node_terminology
node_translation_worker -->|"checks output"| node_quality
node_project_ui -->|"starts checks"| node_error_check
node_project_ui -->|"starts cleaning"| node_cleaning
node_project_ui -->|"starts splitting"| node_split
node_project_ui -->|"starts merging"| node_merge
node_merge -->|"exports EPUB"| node_epub
node_merge -->|"writes TXT"| node_completion
node_epub -->|"writes EPUB"| node_completion

click node_window "https://github.com/utkucanc/yznvltranslate/blob/main/main_window.py"
click node_dashboard "https://github.com/utkucanc/yznvltranslate/blob/main/ui/dashboard_page.py"
click node_project_ui "https://github.com/utkucanc/yznvltranslate/blob/main/ui/project_page.py"
click node_file_table "https://github.com/utkucanc/yznvltranslate/blob/main/ui/file_table_manager.py"
click node_terminology_ui "https://github.com/utkucanc/yznvltranslate/blob/main/ui/terminology_page.py"
click node_project_manager "https://github.com/utkucanc/yznvltranslate/blob/main/core/project_manager.py"
click node_file_list "https://github.com/utkucanc/yznvltranslate/blob/main/core/file_list_manager.py"
click node_database "https://github.com/utkucanc/yznvltranslate/blob/main/core/database_manager.py"
click node_paths "https://github.com/utkucanc/yznvltranslate/blob/main/core/path_resolver.py"
click node_translation_controller "https://github.com/utkucanc/yznvltranslate/blob/main/core/translation_controller.py"
click node_translation_worker "https://github.com/utkucanc/yznvltranslate/blob/main/core/workers/translation_worker.py"
click node_provider "https://github.com/utkucanc/yznvltranslate/blob/main/core/llm_provider.py"
click node_classic_translators "https://github.com/utkucanc/yznvltranslate/blob/main/core/free_translators.py"
click node_terminology "https://github.com/utkucanc/yznvltranslate/blob/main/terminology/terminology_manager.py"
click node_ml_extract "https://github.com/utkucanc/yznvltranslate/blob/main/core/workers/ml_terminology_extractor.py"
click node_quality "https://github.com/utkucanc/yznvltranslate/blob/main/core/workers/translation_quality_checker.py"
click node_error_check "https://github.com/utkucanc/yznvltranslate/blob/main/core/workers/translation_error_check_worker.py"
click node_cleaning "https://github.com/utkucanc/yznvltranslate/blob/main/core/workers/cleaning_worker.py"
click node_split "https://github.com/utkucanc/yznvltranslate/blob/main/core/workers/split_worker.py"
click node_merge "https://github.com/utkucanc/yznvltranslate/blob/main/core/workers/merging_worker.py"
click node_epub "https://github.com/utkucanc/yznvltranslate/blob/main/core/workers/epub_worker.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_window,node_dashboard,node_project_ui,node_file_table,node_terminology_ui,node_user toneBlue
class node_project_manager,node_file_list,node_database,node_paths toneAmber
class node_translation_controller,node_translation_worker,node_provider,node_classic_translators,node_llm_services,node_classic_services,node_terminology,node_ml_extract,node_quality,node_error_check toneMint
class node_cleaning,node_split,node_merge,node_epub,node_completion toneRose
```

## Components

### Desktop interface

- [Main window](https://github.com/utkucanc/yznvltranslate/blob/main/main_window.py): `main_window.py`
- [Dashboard](https://github.com/utkucanc/yznvltranslate/blob/main/ui/dashboard_page.py): `ui/dashboard_page.py`
- [Project view](https://github.com/utkucanc/yznvltranslate/blob/main/ui/project_page.py): `ui/project_page.py`
- [File table](https://github.com/utkucanc/yznvltranslate/blob/main/ui/file_table_manager.py): `ui/file_table_manager.py`
- [Terminology UI](https://github.com/utkucanc/yznvltranslate/blob/main/ui/terminology_page.py): `ui/terminology_page.py`

### Project management

- [Project manager](https://github.com/utkucanc/yznvltranslate/blob/main/core/project_manager.py): `core/project_manager.py`
- [File index](https://github.com/utkucanc/yznvltranslate/blob/main/core/file_list_manager.py): `core/file_list_manager.py`
- [SQLite index](https://github.com/utkucanc/yznvltranslate/blob/main/core/database_manager.py): `core/database_manager.py`
- [Path resolver](https://github.com/utkucanc/yznvltranslate/blob/main/core/path_resolver.py): `core/path_resolver.py`

### Translation and language

- [Translation controller](https://github.com/utkucanc/yznvltranslate/blob/main/core/translation_controller.py): `core/translation_controller.py`
- [Translation worker](https://github.com/utkucanc/yznvltranslate/blob/main/core/workers/translation_worker.py): `core/workers/translation_worker.py`
- [Provider endpoints](https://github.com/utkucanc/yznvltranslate/blob/main/core/llm_provider.py): `core/llm_provider.py`
- [Classic translators](https://github.com/utkucanc/yznvltranslate/blob/main/core/free_translators.py): `core/free_translators.py`
- **LLM services**
- **Translation services**
- [Terminology manager](https://github.com/utkucanc/yznvltranslate/blob/main/terminology/terminology_manager.py): `terminology/terminology_manager.py`
- [ML term extraction](https://github.com/utkucanc/yznvltranslate/blob/main/core/workers/ml_terminology_extractor.py): `core/workers/ml_terminology_extractor.py`
- [Quality checks](https://github.com/utkucanc/yznvltranslate/blob/main/core/workers/translation_quality_checker.py): `core/workers/translation_quality_checker.py`
- [Translation error checks](https://github.com/utkucanc/yznvltranslate/blob/main/core/workers/translation_error_check_worker.py): `core/workers/translation_error_check_worker.py`

### Text processing and export

- [Text cleaning](https://github.com/utkucanc/yznvltranslate/blob/main/core/workers/cleaning_worker.py): `core/workers/cleaning_worker.py`
- [File splitting](https://github.com/utkucanc/yznvltranslate/blob/main/core/workers/split_worker.py): `core/workers/split_worker.py`
- [Chapter merging](https://github.com/utkucanc/yznvltranslate/blob/main/core/workers/merging_worker.py): `core/workers/merging_worker.py`
- [EPUB export](https://github.com/utkucanc/yznvltranslate/blob/main/core/workers/epub_worker.py): `core/workers/epub_worker.py`
- **Completed files**

### Other components

- **User**

## Connections

- User → Main window: uses
- Main window → Dashboard: shows
- Main window → Project view: shows
- Project view → Project manager: manages
- Project view → File index: loads files
- File index → SQLite index: reads and writes
- Project view → File table: populates
- Project manager → Path resolver: resolves paths
- Project view → Translation controller: starts translation
- Translation controller → Translation worker: starts worker
- Translation worker → Provider endpoints: selects endpoint
- Translation worker → Classic translators: uses provider
- Provider endpoints → LLM services: requests translation
- Classic translators → Translation services: requests translation
- Translation worker → Terminology manager: injects terms
- Terminology UI → Terminology manager: manages terms
- ML term extraction → Terminology manager: adds extracted terms
- Translation worker → Quality checks: checks output
- Project view → Translation error checks: starts checks
- Project view → Text cleaning: starts cleaning
- Project view → File splitting: starts splitting
- Project view → Chapter merging: starts merging
- Chapter merging → EPUB export: exports EPUB
- Chapter merging → Completed files: writes TXT
- EPUB export → Completed files: writes EPUB
