# bible-translation-tools/btt-writer architecture

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

- Interactive diagram: https://gitdiagram.com/bible-translation-tools/btt-writer
- Repository: https://github.com/bible-translation-tools/btt-writer

## Overview

BTT-Writer is a multiplatform Bible translation editor. The principal workflow is to open a project, choose source material and a translation mode, edit and review translated content, then validate and publish it. The tree also shows source downloads/imports, rendering, repository collaboration, export, and backups as significant product capabilities. The README provides no feature detail, and most implementation excerpts were not supplied; the graph includes those subsystems but limits their wiring to relationships supported by the sampled entry points and source.

Main entry points: [`shared/src/commonMain/kotlin/org/bibletranslationtools/writer/ui/translate/TranslateRouter.kt`](https://github.com/bible-translation-tools/btt-writer/blob/default/shared/src/commonMain/kotlin/org/bibletranslationtools/writer/ui/translate/TranslateRouter.kt) (Translation router), [`desktopApp/src/main/kotlin/org/bibletranslationtools/writer/main.kt`](https://github.com/bible-translation-tools/btt-writer/blob/default/desktopApp/src/main/kotlin/org/bibletranslationtools/writer/main.kt) (Desktop entry), [`shared/src/commonMain/kotlin/org/bibletranslationtools/writer/ui/navigation/RootComponent.kt`](https://github.com/bible-translation-tools/btt-writer/blob/default/shared/src/commonMain/kotlin/org/bibletranslationtools/writer/ui/navigation/RootComponent.kt) (Root navigation), [`shared/src/commonMain/kotlin/org/bibletranslationtools/writer/git/Repo.kt`](https://github.com/bible-translation-tools/btt-writer/blob/default/shared/src/commonMain/kotlin/org/bibletranslationtools/writer/git/Repo.kt) (Git transport)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_app["App and navigation"]
  node_desktop["Desktop entry<br/>[main.kt]"]
  node_root["Root navigation<br/>[RootComponent.kt]"]
  node_home["Project home<br/>[HomeComponent.kt]"]
end

subgraph group_translation["Translation workflow"]
  node_new_translation["New translation"]
  node_translate["Translation router<br/>[TranslateRouter.kt]"]
  node_read["Read mode<br/>[ReadModeSection.kt]"]
  node_chunk["Draft mode"]
  node_review["Review mode"]
end

subgraph group_content["Content and sources"]
  node_sources["Source selection"]
  node_download["Source downloads"]
  node_import_usfm["USFM import"]
  node_render["Scripture rendering"]
end

subgraph group_collaboration["Publishing and operations"]
  node_publish["Publish workflow"]
  node_validate["Project validation<br/>[ValidateProject.kt]"]
  node_git_publish["Repository sync"]
  node_git["Git transport<br/>[Repo.kt]"]
  node_export["Project export<br/>[ExportProjects.kt]"]
  node_backup["Backup runner<br/>[BackupRunner.kt]"]
  node_backup_service["Scheduled backup<br/>[BackupService.kt]"]
end

node_user(("Translator"))
node_remote[("Remote repository")]

node_user -->|"opens"| node_desktop
node_desktop -->|"creates"| node_root
node_root -->|"navigates"| node_home
node_translate -->|"routes to"| node_read
node_translate -->|"routes to"| node_chunk
node_translate -->|"routes to"| node_review
node_git_publish -->|"syncs through"| node_git
node_git -->|"transfers commits"| node_remote
node_sources -->|"requests"| node_download
node_import_usfm --> node_render
node_backup_service -->|"runs"| node_backup

click node_desktop "https://github.com/bible-translation-tools/btt-writer/blob/default/desktopApp/src/main/kotlin/org/bibletranslationtools/writer/main.kt"
click node_root "https://github.com/bible-translation-tools/btt-writer/blob/default/shared/src/commonMain/kotlin/org/bibletranslationtools/writer/ui/navigation/RootComponent.kt"
click node_home "https://github.com/bible-translation-tools/btt-writer/blob/default/shared/src/commonMain/kotlin/org/bibletranslationtools/writer/ui/home/HomeComponent.kt"
click node_new_translation "https://github.com/bible-translation-tools/btt-writer/blob/default/shared/src/commonMain/kotlin/org/bibletranslationtools/writer/ui/newtranslation/NewTranslationComponent.kt"
click node_translate "https://github.com/bible-translation-tools/btt-writer/blob/default/shared/src/commonMain/kotlin/org/bibletranslationtools/writer/ui/translate/TranslateRouter.kt"
click node_read "https://github.com/bible-translation-tools/btt-writer/blob/default/shared/src/commonMain/kotlin/org/bibletranslationtools/writer/ui/translate/read/ReadModeSection.kt"
click node_chunk "https://github.com/bible-translation-tools/btt-writer/blob/default/shared/src/commonMain/kotlin/org/bibletranslationtools/writer/ui/translate/chunk/ChunkModeSection.kt"
click node_review "https://github.com/bible-translation-tools/btt-writer/blob/default/shared/src/commonMain/kotlin/org/bibletranslationtools/writer/ui/translate/review/ReviewModeSection.kt"
click node_publish "https://github.com/bible-translation-tools/btt-writer/blob/default/shared/src/commonMain/kotlin/org/bibletranslationtools/writer/ui/publish/PublishComponent.kt"
click node_validate "https://github.com/bible-translation-tools/btt-writer/blob/default/shared/src/commonMain/kotlin/org/bibletranslationtools/writer/usecases/ValidateProject.kt"
click node_git_publish "https://github.com/bible-translation-tools/btt-writer/blob/default/shared/src/commonMain/kotlin/org/bibletranslationtools/writer/usecases/PushTargetTranslation.kt"
click node_git "https://github.com/bible-translation-tools/btt-writer/blob/default/shared/src/commonMain/kotlin/org/bibletranslationtools/writer/git/Repo.kt"
click node_sources "https://github.com/bible-translation-tools/btt-writer/blob/default/shared/src/commonMain/kotlin/org/bibletranslationtools/writer/ui/dialogs/source/SelectSourcesComponent.kt"
click node_download "https://github.com/bible-translation-tools/btt-writer/blob/default/shared/src/commonMain/kotlin/org/bibletranslationtools/writer/usecases/DownloadResourceContainers.kt"
click node_import_usfm "https://github.com/bible-translation-tools/btt-writer/blob/default/shared/src/commonMain/kotlin/org/bibletranslationtools/writer/ui/dialogs/import/ImportUsfmComponent.kt"
click node_render "https://github.com/bible-translation-tools/btt-writer/blob/default/shared/src/commonMain/kotlin/org/bibletranslationtools/writer/rendering/ClickableRenderingEngineFactory.kt"
click node_export "https://github.com/bible-translation-tools/btt-writer/blob/default/shared/src/commonMain/kotlin/org/bibletranslationtools/writer/usecases/ExportProjects.kt"
click node_backup "https://github.com/bible-translation-tools/btt-writer/blob/default/shared/src/commonMain/kotlin/org/bibletranslationtools/writer/core/BackupRunner.kt"
click node_backup_service "https://github.com/bible-translation-tools/btt-writer/blob/default/androidApp/src/main/kotlin/org/bibletranslationtools/writer/BackupService.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_desktop,node_root,node_home toneBlue
class node_new_translation,node_translate,node_read,node_chunk,node_review,node_remote toneAmber
class node_sources,node_download,node_import_usfm,node_render toneMint
class node_publish,node_validate,node_git_publish,node_git,node_export,node_backup,node_backup_service toneRose
class node_user toneIndigo
```

## Components

### App and navigation

- [Desktop entry](https://github.com/bible-translation-tools/btt-writer/blob/default/desktopApp/src/main/kotlin/org/bibletranslationtools/writer/main.kt): `desktopApp/src/main/kotlin/org/bibletranslationtools/writer/main.kt`
- [Root navigation](https://github.com/bible-translation-tools/btt-writer/blob/default/shared/src/commonMain/kotlin/org/bibletranslationtools/writer/ui/navigation/RootComponent.kt): `shared/src/commonMain/kotlin/org/bibletranslationtools/writer/ui/navigation/RootComponent.kt`
- [Project home](https://github.com/bible-translation-tools/btt-writer/blob/default/shared/src/commonMain/kotlin/org/bibletranslationtools/writer/ui/home/HomeComponent.kt): `shared/src/commonMain/kotlin/org/bibletranslationtools/writer/ui/home/HomeComponent.kt`

### Translation workflow

- [New translation](https://github.com/bible-translation-tools/btt-writer/blob/default/shared/src/commonMain/kotlin/org/bibletranslationtools/writer/ui/newtranslation/NewTranslationComponent.kt): `shared/src/commonMain/kotlin/org/bibletranslationtools/writer/ui/newtranslation/NewTranslationComponent.kt`
- [Translation router](https://github.com/bible-translation-tools/btt-writer/blob/default/shared/src/commonMain/kotlin/org/bibletranslationtools/writer/ui/translate/TranslateRouter.kt): `shared/src/commonMain/kotlin/org/bibletranslationtools/writer/ui/translate/TranslateRouter.kt`
- [Read mode](https://github.com/bible-translation-tools/btt-writer/blob/default/shared/src/commonMain/kotlin/org/bibletranslationtools/writer/ui/translate/read/ReadModeSection.kt): `shared/src/commonMain/kotlin/org/bibletranslationtools/writer/ui/translate/read/ReadModeSection.kt`
- [Draft mode](https://github.com/bible-translation-tools/btt-writer/blob/default/shared/src/commonMain/kotlin/org/bibletranslationtools/writer/ui/translate/chunk/ChunkModeSection.kt): `shared/src/commonMain/kotlin/org/bibletranslationtools/writer/ui/translate/chunk/ChunkModeSection.kt`
- [Review mode](https://github.com/bible-translation-tools/btt-writer/blob/default/shared/src/commonMain/kotlin/org/bibletranslationtools/writer/ui/translate/review/ReviewModeSection.kt): `shared/src/commonMain/kotlin/org/bibletranslationtools/writer/ui/translate/review/ReviewModeSection.kt`

### Content and sources

- [Source selection](https://github.com/bible-translation-tools/btt-writer/blob/default/shared/src/commonMain/kotlin/org/bibletranslationtools/writer/ui/dialogs/source/SelectSourcesComponent.kt): `shared/src/commonMain/kotlin/org/bibletranslationtools/writer/ui/dialogs/source/SelectSourcesComponent.kt`
- [Source downloads](https://github.com/bible-translation-tools/btt-writer/blob/default/shared/src/commonMain/kotlin/org/bibletranslationtools/writer/usecases/DownloadResourceContainers.kt): `shared/src/commonMain/kotlin/org/bibletranslationtools/writer/usecases/DownloadResourceContainers.kt`
- [USFM import](https://github.com/bible-translation-tools/btt-writer/blob/default/shared/src/commonMain/kotlin/org/bibletranslationtools/writer/ui/dialogs/import/ImportUsfmComponent.kt): `shared/src/commonMain/kotlin/org/bibletranslationtools/writer/ui/dialogs/import/ImportUsfmComponent.kt`
- [Scripture rendering](https://github.com/bible-translation-tools/btt-writer/blob/default/shared/src/commonMain/kotlin/org/bibletranslationtools/writer/rendering/ClickableRenderingEngineFactory.kt): `shared/src/commonMain/kotlin/org/bibletranslationtools/writer/rendering/ClickableRenderingEngineFactory.kt`

### Publishing and operations

- [Publish workflow](https://github.com/bible-translation-tools/btt-writer/blob/default/shared/src/commonMain/kotlin/org/bibletranslationtools/writer/ui/publish/PublishComponent.kt): `shared/src/commonMain/kotlin/org/bibletranslationtools/writer/ui/publish/PublishComponent.kt`
- [Project validation](https://github.com/bible-translation-tools/btt-writer/blob/default/shared/src/commonMain/kotlin/org/bibletranslationtools/writer/usecases/ValidateProject.kt): `shared/src/commonMain/kotlin/org/bibletranslationtools/writer/usecases/ValidateProject.kt`
- [Repository sync](https://github.com/bible-translation-tools/btt-writer/blob/default/shared/src/commonMain/kotlin/org/bibletranslationtools/writer/usecases/PushTargetTranslation.kt): `shared/src/commonMain/kotlin/org/bibletranslationtools/writer/usecases/PushTargetTranslation.kt`
- [Git transport](https://github.com/bible-translation-tools/btt-writer/blob/default/shared/src/commonMain/kotlin/org/bibletranslationtools/writer/git/Repo.kt): `shared/src/commonMain/kotlin/org/bibletranslationtools/writer/git/Repo.kt`
- [Project export](https://github.com/bible-translation-tools/btt-writer/blob/default/shared/src/commonMain/kotlin/org/bibletranslationtools/writer/usecases/ExportProjects.kt): `shared/src/commonMain/kotlin/org/bibletranslationtools/writer/usecases/ExportProjects.kt`
- [Backup runner](https://github.com/bible-translation-tools/btt-writer/blob/default/shared/src/commonMain/kotlin/org/bibletranslationtools/writer/core/BackupRunner.kt): `shared/src/commonMain/kotlin/org/bibletranslationtools/writer/core/BackupRunner.kt`
- [Scheduled backup](https://github.com/bible-translation-tools/btt-writer/blob/default/androidApp/src/main/kotlin/org/bibletranslationtools/writer/BackupService.kt): `androidApp/src/main/kotlin/org/bibletranslationtools/writer/BackupService.kt`

### Other components

- **Translator**
- **Remote repository**

## Connections

- Translator → Desktop entry: opens
- Desktop entry → Root navigation: creates
- Root navigation → Project home: navigates
- Translation router → Read mode: routes to
- Translation router → Draft mode: routes to
- Translation router → Review mode: routes to
- Repository sync → Git transport: syncs through
- Git transport → Remote repository: transfers commits
- Source selection → Source downloads: requests
- USFM import → Scripture rendering
- Scheduled backup → Backup runner: runs
