# ivanbilatchuk/auction-house architecture

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

- Interactive diagram: https://gitdiagram.com/ivanbilatchuk/auction-house
- Repository: https://github.com/ivanbilatchuk/auction-house

## Overview

AuctionHouse is a Kotlin Multiplatform Compose app prototype for a collectible-auction experience. Users enter the shared app from Android, iOS, or desktop, see a one-time four-slide onboarding, continue through locally validated sign-in, registration, or password-reset flows, and reach a gallery-style home/account interface with a saved language choice. Onboarding completion and language preferences use multiplatform settings; no authentication backend or auction/catalog transaction flow is connected. The README documents catalog and lot designs, but corresponding screen files are not present in the supplied tree. Arrows are limited to relationships visible in excerpts, the source index, or README.

Main entry points: [`shared/src/commonMain/kotlin/com/bilatchuk/auctionhouse/App.kt`](https://github.com/ivanbilatchuk/auction-house/blob/main/shared/src/commonMain/kotlin/com/bilatchuk/auctionhouse/App.kt) (Shared app shell), [`shared/src/commonMain/kotlin/com/bilatchuk/auctionhouse/ui/onboarding/OnboardingScreen.kt`](https://github.com/ivanbilatchuk/auction-house/blob/main/shared/src/commonMain/kotlin/com/bilatchuk/auctionhouse/ui/onboarding/OnboardingScreen.kt) (Onboarding screens), [`shared/src/commonMain/kotlin/com/bilatchuk/auctionhouse/ui/auth/AuthScreen.kt`](https://github.com/ivanbilatchuk/auction-house/blob/main/shared/src/commonMain/kotlin/com/bilatchuk/auctionhouse/ui/auth/AuthScreen.kt) (Auth screens), [`shared/src/commonMain/kotlin/com/bilatchuk/auctionhouse/ui/main/MainScreen.kt`](https://github.com/ivanbilatchuk/auction-house/blob/main/shared/src/commonMain/kotlin/com/bilatchuk/auctionhouse/ui/main/MainScreen.kt) (Home and account)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_entry["App entry and navigation"]
  node_android["Android entry<br/>[MainActivity.kt]"]
  node_ios["iOS entry"]
  node_desktop["Desktop entry<br/>[main.kt]"]
  node_app["Shared app shell<br/>[App.kt]"]
  node_routes["Route definitions<br/>[Route.kt]"]
end

subgraph group_experience["User experience"]
  node_onboarding_ui["Onboarding screens"]
  node_onboarding_vm["Onboarding state"]
  node_auth_ui["Auth screens<br/>[AuthScreen.kt]"]
  node_auth_vm["Auth state<br/>[AuthViewModel.kt]"]
  node_main_ui["Home and account<br/>[MainScreen.kt]"]
  node_home_content["Home content<br/>[HomeContent.kt]"]
  node_account_content["Account content<br/>[AccountContent.kt]"]
  node_main_vm["Startup selection<br/>[MainViewModel.kt]"]
end

subgraph group_domain["Onboarding and auth logic"]
  node_onboarding_usecases["Onboarding use cases"]
  node_onboarding_repo["Onboarding repository"]
  node_auth_validator["Credential validation<br/>[AuthValidator.kt]"]
end

subgraph group_platform["Persistence and presentation"]
  node_settings_repo["Settings adapter"]
  node_settings[("User settings<br/>[AppSettings.kt]")]
  node_theme["Noir theme<br/>[Color.kt]"]
  node_localization["Localization<br/>[Localization.kt]"]
end

node_user(("App user"))

node_user -->|"opens"| node_android
node_user -->|"opens"| node_ios
node_user -->|"opens"| node_desktop
node_android -->|"launches"| node_app
node_ios -->|"launches"| node_app
node_desktop -->|"launches"| node_app
node_app -->|"configures"| node_routes
node_app -->|"displays"| node_onboarding_ui
node_app -->|"displays"| node_auth_ui
node_app -->|"displays"| node_main_ui
node_app -->|"reads startup state"| node_main_vm
node_app -->|"reads and writes language"| node_settings
node_onboarding_ui -->|"dispatches actions"| node_onboarding_vm
node_onboarding_vm -->|"completes onboarding"| node_onboarding_usecases
node_onboarding_usecases -->|"uses repository"| node_onboarding_repo
node_onboarding_repo -->|"implemented by"| node_settings_repo
node_settings_repo -->|"reads and writes flags"| node_settings
node_main_vm -->|"checks completion"| node_onboarding_usecases
node_auth_ui -->|"dispatches actions"| node_auth_vm
node_auth_vm -->|"validates credentials"| node_auth_validator
node_main_ui -->|"renders"| node_home_content
node_main_ui -->|"renders"| node_account_content
node_onboarding_ui -->|"uses palette"| node_theme
node_auth_ui -->|"uses palette"| node_theme
node_app -.->|"applies language"| node_localization

click node_android "https://github.com/ivanbilatchuk/auction-house/blob/main/androidApp/src/main/kotlin/com/bilatchuk/auctionhouse/MainActivity.kt"
click node_ios "https://github.com/ivanbilatchuk/auction-house/blob/main/shared/src/iosMain/kotlin/com/bilatchuk/auctionhouse/MainViewController.kt"
click node_desktop "https://github.com/ivanbilatchuk/auction-house/blob/main/desktopApp/src/main/kotlin/com/bilatchuk/auctionhouse/main.kt"
click node_app "https://github.com/ivanbilatchuk/auction-house/blob/main/shared/src/commonMain/kotlin/com/bilatchuk/auctionhouse/App.kt"
click node_routes "https://github.com/ivanbilatchuk/auction-house/blob/main/shared/src/commonMain/kotlin/com/bilatchuk/auctionhouse/navigation/Route.kt"
click node_onboarding_ui "https://github.com/ivanbilatchuk/auction-house/blob/main/shared/src/commonMain/kotlin/com/bilatchuk/auctionhouse/ui/onboarding/OnboardingScreen.kt"
click node_onboarding_vm "https://github.com/ivanbilatchuk/auction-house/blob/main/shared/src/commonMain/kotlin/com/bilatchuk/auctionhouse/ui/onboarding/OnboardingViewModel.kt"
click node_auth_ui "https://github.com/ivanbilatchuk/auction-house/blob/main/shared/src/commonMain/kotlin/com/bilatchuk/auctionhouse/ui/auth/AuthScreen.kt"
click node_auth_vm "https://github.com/ivanbilatchuk/auction-house/blob/main/shared/src/commonMain/kotlin/com/bilatchuk/auctionhouse/ui/auth/AuthViewModel.kt"
click node_main_ui "https://github.com/ivanbilatchuk/auction-house/blob/main/shared/src/commonMain/kotlin/com/bilatchuk/auctionhouse/ui/main/MainScreen.kt"
click node_home_content "https://github.com/ivanbilatchuk/auction-house/blob/main/shared/src/commonMain/kotlin/com/bilatchuk/auctionhouse/ui/main/HomeContent.kt"
click node_account_content "https://github.com/ivanbilatchuk/auction-house/blob/main/shared/src/commonMain/kotlin/com/bilatchuk/auctionhouse/ui/main/AccountContent.kt"
click node_main_vm "https://github.com/ivanbilatchuk/auction-house/blob/main/shared/src/commonMain/kotlin/com/bilatchuk/auctionhouse/ui/main/MainViewModel.kt"
click node_onboarding_usecases "https://github.com/ivanbilatchuk/auction-house/tree/main/shared/src/commonMain/kotlin/com/bilatchuk/auctionhouse/domain/onboarding"
click node_onboarding_repo "https://github.com/ivanbilatchuk/auction-house/blob/main/shared/src/commonMain/kotlin/com/bilatchuk/auctionhouse/domain/onboarding/OnboardingRepository.kt"
click node_auth_validator "https://github.com/ivanbilatchuk/auction-house/blob/main/shared/src/commonMain/kotlin/com/bilatchuk/auctionhouse/domain/auth/AuthValidator.kt"
click node_settings_repo "https://github.com/ivanbilatchuk/auction-house/blob/main/shared/src/commonMain/kotlin/com/bilatchuk/auctionhouse/data/AppOnboardingRepository.kt"
click node_settings "https://github.com/ivanbilatchuk/auction-house/blob/main/shared/src/commonMain/kotlin/com/bilatchuk/auctionhouse/data/AppSettings.kt"
click node_theme "https://github.com/ivanbilatchuk/auction-house/blob/main/shared/src/commonMain/kotlin/com/bilatchuk/auctionhouse/ui/theme/Color.kt"
click node_localization "https://github.com/ivanbilatchuk/auction-house/blob/main/shared/src/commonMain/kotlin/com/bilatchuk/auctionhouse/Localization.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_android,node_ios,node_desktop,node_app,node_routes,node_user toneBlue
class node_onboarding_ui,node_onboarding_vm,node_auth_ui,node_auth_vm,node_main_ui,node_home_content,node_account_content,node_main_vm toneAmber
class node_onboarding_usecases,node_onboarding_repo,node_auth_validator toneMint
class node_settings_repo,node_settings,node_theme,node_localization toneRose
```

## Components

### App entry and navigation

- [Android entry](https://github.com/ivanbilatchuk/auction-house/blob/main/androidApp/src/main/kotlin/com/bilatchuk/auctionhouse/MainActivity.kt): `androidApp/src/main/kotlin/com/bilatchuk/auctionhouse/MainActivity.kt`
- [iOS entry](https://github.com/ivanbilatchuk/auction-house/blob/main/shared/src/iosMain/kotlin/com/bilatchuk/auctionhouse/MainViewController.kt): `shared/src/iosMain/kotlin/com/bilatchuk/auctionhouse/MainViewController.kt`
- [Desktop entry](https://github.com/ivanbilatchuk/auction-house/blob/main/desktopApp/src/main/kotlin/com/bilatchuk/auctionhouse/main.kt): `desktopApp/src/main/kotlin/com/bilatchuk/auctionhouse/main.kt`
- [Shared app shell](https://github.com/ivanbilatchuk/auction-house/blob/main/shared/src/commonMain/kotlin/com/bilatchuk/auctionhouse/App.kt): `shared/src/commonMain/kotlin/com/bilatchuk/auctionhouse/App.kt`
- [Route definitions](https://github.com/ivanbilatchuk/auction-house/blob/main/shared/src/commonMain/kotlin/com/bilatchuk/auctionhouse/navigation/Route.kt): `shared/src/commonMain/kotlin/com/bilatchuk/auctionhouse/navigation/Route.kt`

### User experience

- [Onboarding screens](https://github.com/ivanbilatchuk/auction-house/blob/main/shared/src/commonMain/kotlin/com/bilatchuk/auctionhouse/ui/onboarding/OnboardingScreen.kt): `shared/src/commonMain/kotlin/com/bilatchuk/auctionhouse/ui/onboarding/OnboardingScreen.kt`
- [Onboarding state](https://github.com/ivanbilatchuk/auction-house/blob/main/shared/src/commonMain/kotlin/com/bilatchuk/auctionhouse/ui/onboarding/OnboardingViewModel.kt): `shared/src/commonMain/kotlin/com/bilatchuk/auctionhouse/ui/onboarding/OnboardingViewModel.kt`
- [Auth screens](https://github.com/ivanbilatchuk/auction-house/blob/main/shared/src/commonMain/kotlin/com/bilatchuk/auctionhouse/ui/auth/AuthScreen.kt): `shared/src/commonMain/kotlin/com/bilatchuk/auctionhouse/ui/auth/AuthScreen.kt`
- [Auth state](https://github.com/ivanbilatchuk/auction-house/blob/main/shared/src/commonMain/kotlin/com/bilatchuk/auctionhouse/ui/auth/AuthViewModel.kt): `shared/src/commonMain/kotlin/com/bilatchuk/auctionhouse/ui/auth/AuthViewModel.kt`
- [Home and account](https://github.com/ivanbilatchuk/auction-house/blob/main/shared/src/commonMain/kotlin/com/bilatchuk/auctionhouse/ui/main/MainScreen.kt): `shared/src/commonMain/kotlin/com/bilatchuk/auctionhouse/ui/main/MainScreen.kt`
- [Home content](https://github.com/ivanbilatchuk/auction-house/blob/main/shared/src/commonMain/kotlin/com/bilatchuk/auctionhouse/ui/main/HomeContent.kt): `shared/src/commonMain/kotlin/com/bilatchuk/auctionhouse/ui/main/HomeContent.kt`
- [Account content](https://github.com/ivanbilatchuk/auction-house/blob/main/shared/src/commonMain/kotlin/com/bilatchuk/auctionhouse/ui/main/AccountContent.kt): `shared/src/commonMain/kotlin/com/bilatchuk/auctionhouse/ui/main/AccountContent.kt`
- [Startup selection](https://github.com/ivanbilatchuk/auction-house/blob/main/shared/src/commonMain/kotlin/com/bilatchuk/auctionhouse/ui/main/MainViewModel.kt): `shared/src/commonMain/kotlin/com/bilatchuk/auctionhouse/ui/main/MainViewModel.kt`

### Onboarding and auth logic

- [Onboarding use cases](https://github.com/ivanbilatchuk/auction-house/tree/main/shared/src/commonMain/kotlin/com/bilatchuk/auctionhouse/domain/onboarding): `shared/src/commonMain/kotlin/com/bilatchuk/auctionhouse/domain/onboarding`
- [Onboarding repository](https://github.com/ivanbilatchuk/auction-house/blob/main/shared/src/commonMain/kotlin/com/bilatchuk/auctionhouse/domain/onboarding/OnboardingRepository.kt): `shared/src/commonMain/kotlin/com/bilatchuk/auctionhouse/domain/onboarding/OnboardingRepository.kt`
- [Credential validation](https://github.com/ivanbilatchuk/auction-house/blob/main/shared/src/commonMain/kotlin/com/bilatchuk/auctionhouse/domain/auth/AuthValidator.kt): `shared/src/commonMain/kotlin/com/bilatchuk/auctionhouse/domain/auth/AuthValidator.kt`

### Persistence and presentation

- [Settings adapter](https://github.com/ivanbilatchuk/auction-house/blob/main/shared/src/commonMain/kotlin/com/bilatchuk/auctionhouse/data/AppOnboardingRepository.kt): `shared/src/commonMain/kotlin/com/bilatchuk/auctionhouse/data/AppOnboardingRepository.kt`
- [User settings](https://github.com/ivanbilatchuk/auction-house/blob/main/shared/src/commonMain/kotlin/com/bilatchuk/auctionhouse/data/AppSettings.kt): `shared/src/commonMain/kotlin/com/bilatchuk/auctionhouse/data/AppSettings.kt`
- [Noir theme](https://github.com/ivanbilatchuk/auction-house/blob/main/shared/src/commonMain/kotlin/com/bilatchuk/auctionhouse/ui/theme/Color.kt): `shared/src/commonMain/kotlin/com/bilatchuk/auctionhouse/ui/theme/Color.kt`
- [Localization](https://github.com/ivanbilatchuk/auction-house/blob/main/shared/src/commonMain/kotlin/com/bilatchuk/auctionhouse/Localization.kt): `shared/src/commonMain/kotlin/com/bilatchuk/auctionhouse/Localization.kt`

### Other components

- **App user**

## Connections

- App user → Android entry: opens (evidence: `androidApp/src/main/kotlin/com/bilatchuk/auctionhouse/MainActivity.kt`)
- App user → iOS entry: opens
- App user → Desktop entry: opens (evidence: `desktopApp/src/main/kotlin/com/bilatchuk/auctionhouse/main.kt`)
- Android entry → Shared app shell: launches (evidence: `androidApp/src/main/kotlin/com/bilatchuk/auctionhouse/MainActivity.kt`)
- iOS entry → Shared app shell: launches (evidence: `shared/src/iosMain/kotlin/com/bilatchuk/auctionhouse/MainViewController.kt`)
- Desktop entry → Shared app shell: launches (evidence: `desktopApp/src/main/kotlin/com/bilatchuk/auctionhouse/main.kt`)
- Shared app shell → Route definitions: configures (evidence: `shared/src/commonMain/kotlin/com/bilatchuk/auctionhouse/App.kt`)
- Shared app shell → Onboarding screens: displays (evidence: `shared/src/commonMain/kotlin/com/bilatchuk/auctionhouse/App.kt`)
- Shared app shell → Auth screens: displays (evidence: `shared/src/commonMain/kotlin/com/bilatchuk/auctionhouse/App.kt`)
- Shared app shell → Home and account: displays (evidence: `shared/src/commonMain/kotlin/com/bilatchuk/auctionhouse/App.kt`)
- Shared app shell → Startup selection: reads startup state (evidence: `shared/src/commonMain/kotlin/com/bilatchuk/auctionhouse/App.kt`)
- Shared app shell → User settings: reads and writes language (evidence: `shared/src/commonMain/kotlin/com/bilatchuk/auctionhouse/App.kt`)
- Onboarding screens → Onboarding state: dispatches actions (evidence: `shared/src/commonMain/kotlin/com/bilatchuk/auctionhouse/ui/onboarding/OnboardingScreen.kt`)
- Onboarding state → Onboarding use cases: completes onboarding (evidence: `shared/src/commonMain/kotlin/com/bilatchuk/auctionhouse/ui/onboarding/OnboardingViewModel.kt`)
- Onboarding use cases → Onboarding repository: uses repository (evidence: `shared/src/commonMain/kotlin/com/bilatchuk/auctionhouse/domain/onboarding/IsOnboardingCompletedUseCase.kt`)
- Onboarding repository → Settings adapter: implemented by (evidence: `shared/src/commonMain/kotlin/com/bilatchuk/auctionhouse/data/AppOnboardingRepository.kt`)
- Settings adapter → User settings: reads and writes flags (evidence: `shared/src/commonMain/kotlin/com/bilatchuk/auctionhouse/data/AppOnboardingRepository.kt`)
- Startup selection → Onboarding use cases: checks completion (evidence: `shared/src/commonMain/kotlin/com/bilatchuk/auctionhouse/ui/main/MainViewModel.kt`)
- Auth screens → Auth state: dispatches actions (evidence: `shared/src/commonMain/kotlin/com/bilatchuk/auctionhouse/ui/auth/AuthScreen.kt`)
- Auth state → Credential validation: validates credentials (evidence: `shared/src/commonMain/kotlin/com/bilatchuk/auctionhouse/ui/auth/AuthViewModel.kt`)
- Home and account → Home content: renders (evidence: `shared/src/commonMain/kotlin/com/bilatchuk/auctionhouse/ui/main/MainScreen.kt`)
- Home and account → Account content: renders (evidence: `shared/src/commonMain/kotlin/com/bilatchuk/auctionhouse/ui/main/MainScreen.kt`)
- Onboarding screens → Noir theme: uses palette (evidence: `shared/src/commonMain/kotlin/com/bilatchuk/auctionhouse/ui/onboarding/OnboardingScreen.kt`)
- Auth screens → Noir theme: uses palette (evidence: `shared/src/commonMain/kotlin/com/bilatchuk/auctionhouse/ui/auth/AuthScreen.kt`)
- Shared app shell → Localization: applies language
