# panasetskaya/loglinecreator architecture

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

- Interactive diagram: https://gitdiagram.com/panasetskaya/loglinecreator
- Repository: https://github.com/panasetskaya/loglinecreator

## Overview

LoglineCreator is an Android app for drafting, generating, editing, and saving short movie loglines. Users enter story details across a seven-step guided workflow, review the generated logline, then save or edit it; the main screen supports browsing and searching saved loglines. The graph also includes the Room-backed persistence layer and the documented sharing and promotional surfaces. Some relationships are based on the supplied excerpts or source index; unverified links are dashed rather than treated as confirmed calls.

Main entry points: [`app/src/main/java/com/panasetskaia/storyarchitectlogline/presentation/mainActivity/MainActivity.kt`](https://github.com/panasetskaya/loglinecreator/blob/master/app/src/main/java/com/panasetskaia/storyarchitectlogline/presentation/mainActivity/MainActivity.kt) (Logline library), [`app/src/main/java/com/panasetskaia/storyarchitectlogline/presentation/common/Step8ReadyFragment.kt`](https://github.com/panasetskaya/loglinecreator/blob/master/app/src/main/java/com/panasetskaia/storyarchitectlogline/presentation/common/Step8ReadyFragment.kt) (Review and edit), [`app/src/main/java/com/panasetskaia/storyarchitectlogline/domain/useCases`](https://github.com/panasetskaya/loglinecreator/tree/master/app/src/main/java/com/panasetskaia/storyarchitectlogline/domain/useCases) (Logline operations), [`app/src/main/java/com/panasetskaia/storyarchitectlogline/data/LoglineRepositoryImpl.kt`](https://github.com/panasetskaya/loglinecreator/blob/master/app/src/main/java/com/panasetskaia/storyarchitectlogline/data/LoglineRepositoryImpl.kt) (Repository implementation)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_creation["Guided creation"]
  node_wizard["Creation activity"]
  node_steps["Step pager"]
  node_step_forms["Story detail steps"]
  node_creation_vm["Creation state"]
  node_ready["Review and edit"]
  node_editor_vm["Editor state<br/>[EditorViewModel.kt]"]
end

subgraph group_library["Saved loglines"]
  node_library_ui["Logline library<br/>[MainActivity.kt]"]
  node_library_vm["Library state<br/>[MainViewModel.kt]"]
  node_list_adapter["Logline list<br/>[LoglineAdapter.kt]"]
end

subgraph group_domain["Logline domain"]
  node_use_cases["Logline operations"]
  node_logline["Logline record<br/>[Logline.kt]"]
  node_repository_api["Repository contract"]
  node_builder["Text builder<br/>[LoglineBuilder.kt]"]
end

subgraph group_storage["Local persistence"]
  node_repository["Repository implementation"]
  node_dao["Logline DAO<br/>[LoglineDao.kt]"]
  node_database[("Room database<br/>[LoglineDatabase.kt]")]
end

subgraph group_extras["Sharing and promotions"]
  node_promotions["Promotional cards<br/>[AdvertsFragment.kt]"]
end

node_writer(("App user"))

node_writer -->|"opens library"| node_library_ui
node_library_ui -->|"starts creation"| node_wizard
node_library_ui -.->|"observes state"| node_library_vm
node_library_ui -->|"displays entries"| node_list_adapter
node_wizard -->|"hosts steps"| node_steps
node_steps -->|"creates pages"| node_step_forms
node_step_forms -->|"updates fields"| node_creation_vm
node_wizard -.->|"requests generation"| node_creation_vm
node_creation_vm -->|"builds logline"| node_use_cases
node_steps -->|"shows review"| node_ready
node_ready -->|"edits text"| node_editor_vm
node_editor_vm -->|"saves changes"| node_use_cases
node_library_vm -.->|"loads and searches"| node_use_cases
node_use_cases -.->|"requests operations"| node_repository_api
node_repository -->|"implements contract"| node_repository_api
node_repository -->|"constructs text"| node_builder
node_repository -->|"reads and writes"| node_dao
node_database -->|"provides DAO"| node_dao
node_database -->|"stores records"| node_logline
node_dao -.->|"queries records"| node_logline
node_ready -->|"shows cards"| node_promotions
node_writer -.->|"copies or shares"| node_ready

click node_library_ui "https://github.com/panasetskaya/loglinecreator/blob/master/app/src/main/java/com/panasetskaia/storyarchitectlogline/presentation/mainActivity/MainActivity.kt"
click node_library_vm "https://github.com/panasetskaya/loglinecreator/blob/master/app/src/main/java/com/panasetskaia/storyarchitectlogline/presentation/mainActivity/MainViewModel.kt"
click node_list_adapter "https://github.com/panasetskaya/loglinecreator/blob/master/app/src/main/java/com/panasetskaia/storyarchitectlogline/presentation/mainActivity/LoglineAdapter.kt"
click node_wizard "https://github.com/panasetskaya/loglinecreator/blob/master/app/src/main/java/com/panasetskaia/storyarchitectlogline/presentation/creativeActivity/CreativeActivity.kt"
click node_steps "https://github.com/panasetskaya/loglinecreator/blob/master/app/src/main/java/com/panasetskaia/storyarchitectlogline/presentation/creativeActivity/adapters/StepsPagerAdapter.kt"
click node_step_forms "https://github.com/panasetskaya/loglinecreator/tree/master/app/src/main/java/com/panasetskaia/storyarchitectlogline/presentation/creativeActivity/creativeFragments"
click node_creation_vm "https://github.com/panasetskaya/loglinecreator/blob/master/app/src/main/java/com/panasetskaia/storyarchitectlogline/presentation/creativeActivity/CreativeViewModel.kt"
click node_ready "https://github.com/panasetskaya/loglinecreator/blob/master/app/src/main/java/com/panasetskaia/storyarchitectlogline/presentation/common/Step8ReadyFragment.kt"
click node_editor_vm "https://github.com/panasetskaya/loglinecreator/blob/master/app/src/main/java/com/panasetskaia/storyarchitectlogline/presentation/creativeActivity/EditorViewModel.kt"
click node_use_cases "https://github.com/panasetskaya/loglinecreator/tree/master/app/src/main/java/com/panasetskaia/storyarchitectlogline/domain/useCases"
click node_logline "https://github.com/panasetskaya/loglinecreator/blob/master/app/src/main/java/com/panasetskaia/storyarchitectlogline/domain/Logline.kt"
click node_repository_api "https://github.com/panasetskaya/loglinecreator/blob/master/app/src/main/java/com/panasetskaia/storyarchitectlogline/domain/LoglineRepository.kt"
click node_builder "https://github.com/panasetskaya/loglinecreator/blob/master/app/src/main/java/com/panasetskaia/storyarchitectlogline/data/LoglineBuilder.kt"
click node_repository "https://github.com/panasetskaya/loglinecreator/blob/master/app/src/main/java/com/panasetskaia/storyarchitectlogline/data/LoglineRepositoryImpl.kt"
click node_dao "https://github.com/panasetskaya/loglinecreator/blob/master/app/src/main/java/com/panasetskaia/storyarchitectlogline/data/LoglineDao.kt"
click node_database "https://github.com/panasetskaya/loglinecreator/blob/master/app/src/main/java/com/panasetskaia/storyarchitectlogline/data/LoglineDatabase.kt"
click node_promotions "https://github.com/panasetskaya/loglinecreator/blob/master/app/src/main/java/com/panasetskaia/storyarchitectlogline/presentation/common/AdvertsFragment.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_wizard,node_steps,node_step_forms,node_creation_vm,node_ready,node_editor_vm,node_writer toneBlue
class node_library_ui,node_library_vm,node_list_adapter toneAmber
class node_use_cases,node_logline,node_repository_api,node_builder toneMint
class node_repository,node_dao,node_database toneRose
class node_promotions toneIndigo
```

## Components

### Guided creation

- [Creation activity](https://github.com/panasetskaya/loglinecreator/blob/master/app/src/main/java/com/panasetskaia/storyarchitectlogline/presentation/creativeActivity/CreativeActivity.kt): `app/src/main/java/com/panasetskaia/storyarchitectlogline/presentation/creativeActivity/CreativeActivity.kt`
- [Step pager](https://github.com/panasetskaya/loglinecreator/blob/master/app/src/main/java/com/panasetskaia/storyarchitectlogline/presentation/creativeActivity/adapters/StepsPagerAdapter.kt): `app/src/main/java/com/panasetskaia/storyarchitectlogline/presentation/creativeActivity/adapters/StepsPagerAdapter.kt`
- [Story detail steps](https://github.com/panasetskaya/loglinecreator/tree/master/app/src/main/java/com/panasetskaia/storyarchitectlogline/presentation/creativeActivity/creativeFragments): `app/src/main/java/com/panasetskaia/storyarchitectlogline/presentation/creativeActivity/creativeFragments`
- [Creation state](https://github.com/panasetskaya/loglinecreator/blob/master/app/src/main/java/com/panasetskaia/storyarchitectlogline/presentation/creativeActivity/CreativeViewModel.kt): `app/src/main/java/com/panasetskaia/storyarchitectlogline/presentation/creativeActivity/CreativeViewModel.kt`
- [Review and edit](https://github.com/panasetskaya/loglinecreator/blob/master/app/src/main/java/com/panasetskaia/storyarchitectlogline/presentation/common/Step8ReadyFragment.kt): `app/src/main/java/com/panasetskaia/storyarchitectlogline/presentation/common/Step8ReadyFragment.kt`
- [Editor state](https://github.com/panasetskaya/loglinecreator/blob/master/app/src/main/java/com/panasetskaia/storyarchitectlogline/presentation/creativeActivity/EditorViewModel.kt): `app/src/main/java/com/panasetskaia/storyarchitectlogline/presentation/creativeActivity/EditorViewModel.kt`

### Saved loglines

- [Logline library](https://github.com/panasetskaya/loglinecreator/blob/master/app/src/main/java/com/panasetskaia/storyarchitectlogline/presentation/mainActivity/MainActivity.kt): `app/src/main/java/com/panasetskaia/storyarchitectlogline/presentation/mainActivity/MainActivity.kt`
- [Library state](https://github.com/panasetskaya/loglinecreator/blob/master/app/src/main/java/com/panasetskaia/storyarchitectlogline/presentation/mainActivity/MainViewModel.kt): `app/src/main/java/com/panasetskaia/storyarchitectlogline/presentation/mainActivity/MainViewModel.kt`
- [Logline list](https://github.com/panasetskaya/loglinecreator/blob/master/app/src/main/java/com/panasetskaia/storyarchitectlogline/presentation/mainActivity/LoglineAdapter.kt): `app/src/main/java/com/panasetskaia/storyarchitectlogline/presentation/mainActivity/LoglineAdapter.kt`

### Logline domain

- [Logline operations](https://github.com/panasetskaya/loglinecreator/tree/master/app/src/main/java/com/panasetskaia/storyarchitectlogline/domain/useCases): `app/src/main/java/com/panasetskaia/storyarchitectlogline/domain/useCases`
- [Logline record](https://github.com/panasetskaya/loglinecreator/blob/master/app/src/main/java/com/panasetskaia/storyarchitectlogline/domain/Logline.kt): `app/src/main/java/com/panasetskaia/storyarchitectlogline/domain/Logline.kt`
- [Repository contract](https://github.com/panasetskaya/loglinecreator/blob/master/app/src/main/java/com/panasetskaia/storyarchitectlogline/domain/LoglineRepository.kt): `app/src/main/java/com/panasetskaia/storyarchitectlogline/domain/LoglineRepository.kt`
- [Text builder](https://github.com/panasetskaya/loglinecreator/blob/master/app/src/main/java/com/panasetskaia/storyarchitectlogline/data/LoglineBuilder.kt): `app/src/main/java/com/panasetskaia/storyarchitectlogline/data/LoglineBuilder.kt`

### Local persistence

- [Repository implementation](https://github.com/panasetskaya/loglinecreator/blob/master/app/src/main/java/com/panasetskaia/storyarchitectlogline/data/LoglineRepositoryImpl.kt): `app/src/main/java/com/panasetskaia/storyarchitectlogline/data/LoglineRepositoryImpl.kt`
- [Logline DAO](https://github.com/panasetskaya/loglinecreator/blob/master/app/src/main/java/com/panasetskaia/storyarchitectlogline/data/LoglineDao.kt): `app/src/main/java/com/panasetskaia/storyarchitectlogline/data/LoglineDao.kt`
- [Room database](https://github.com/panasetskaya/loglinecreator/blob/master/app/src/main/java/com/panasetskaia/storyarchitectlogline/data/LoglineDatabase.kt): `app/src/main/java/com/panasetskaia/storyarchitectlogline/data/LoglineDatabase.kt`

### Sharing and promotions

- [Promotional cards](https://github.com/panasetskaya/loglinecreator/blob/master/app/src/main/java/com/panasetskaia/storyarchitectlogline/presentation/common/AdvertsFragment.kt): `app/src/main/java/com/panasetskaia/storyarchitectlogline/presentation/common/AdvertsFragment.kt`

### Other components

- **App user**

## Connections

- App user → Logline library: opens library
- Logline library → Creation activity: starts creation (evidence: `app/src/main/java/com/panasetskaia/storyarchitectlogline/presentation/mainActivity/MainActivity.kt`)
- Logline library → Library state: observes state (evidence: `app/src/main/java/com/panasetskaia/storyarchitectlogline/presentation/mainActivity/MainActivity.kt`)
- Logline library → Logline list: displays entries (evidence: `app/src/main/java/com/panasetskaia/storyarchitectlogline/presentation/mainActivity/MainActivity.kt`)
- Creation activity → Step pager: hosts steps (evidence: `app/src/main/java/com/panasetskaia/storyarchitectlogline/presentation/creativeActivity/CreativeActivity.kt`)
- Step pager → Story detail steps: creates pages (evidence: `app/src/main/java/com/panasetskaia/storyarchitectlogline/presentation/creativeActivity/adapters/StepsPagerAdapter.kt`)
- Story detail steps → Creation state: updates fields (evidence: `app/src/main/java/com/panasetskaia/storyarchitectlogline/presentation/creativeActivity/creativeFragments/Step1MainCharFragment.kt`)
- Creation activity → Creation state: requests generation (evidence: `app/src/main/java/com/panasetskaia/storyarchitectlogline/presentation/creativeActivity/CreativeActivity.kt`)
- Creation state → Logline operations: builds logline (evidence: `app/src/main/java/com/panasetskaia/storyarchitectlogline/presentation/creativeActivity/CreativeViewModel.kt`)
- Step pager → Review and edit: shows review (evidence: `app/src/main/java/com/panasetskaia/storyarchitectlogline/presentation/creativeActivity/adapters/StepsPagerAdapter.kt`)
- Review and edit → Editor state: edits text (evidence: `app/src/main/java/com/panasetskaia/storyarchitectlogline/presentation/common/Step8ReadyFragment.kt`)
- Editor state → Logline operations: saves changes (evidence: `app/src/main/java/com/panasetskaia/storyarchitectlogline/presentation/creativeActivity/EditorViewModel.kt`)
- Library state → Logline operations: loads and searches (evidence: `app/src/main/java/com/panasetskaia/storyarchitectlogline/presentation/mainActivity/MainViewModel.kt`)
- Logline operations → Repository contract: requests operations (evidence: `app/src/main/java/com/panasetskaia/storyarchitectlogline/domain/useCases/SearchUseCase.kt`)
- Repository implementation → Repository contract: implements contract (evidence: `app/src/main/java/com/panasetskaia/storyarchitectlogline/data/LoglineRepositoryImpl.kt`)
- Repository implementation → Text builder: constructs text (evidence: `app/src/main/java/com/panasetskaia/storyarchitectlogline/data/LoglineRepositoryImpl.kt`)
- Repository implementation → Logline DAO: reads and writes (evidence: `app/src/main/java/com/panasetskaia/storyarchitectlogline/data/LoglineRepositoryImpl.kt`)
- Room database → Logline DAO: provides DAO (evidence: `app/src/main/java/com/panasetskaia/storyarchitectlogline/data/LoglineDatabase.kt`)
- Room database → Logline record: stores records (evidence: `app/src/main/java/com/panasetskaia/storyarchitectlogline/data/LoglineDatabase.kt`)
- Logline DAO → Logline record: queries records (evidence: `app/src/main/java/com/panasetskaia/storyarchitectlogline/data/LoglineDao.kt`)
- Review and edit → Promotional cards: shows cards (evidence: `app/src/main/java/com/panasetskaia/storyarchitectlogline/presentation/common/Step8ReadyFragment.kt`)
- App user → Review and edit: copies or shares
