# levonyuk8/dodod architecture

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

- Interactive diagram: https://gitdiagram.com/levonyuk8/dodod
- Repository: https://github.com/levonyuk8/dodod

## Overview

Dodod is an Angular wardrobe configurator. The visible workflow is a user entering a multi-step configuration, with step 2 updating wardrobe parameters and step 3 selecting section, door, and filling options; a Three.js helper renders cabinet and section contents, and a file service can serialize configuration for download. The excerpts confirm these service interactions, but not the full step-to-step navigation or the responsibilities of steps 1, 4, and 5, so those links are omitted.

Main entry points: [`src/app/_services/three-helper.service.ts`](https://github.com/levonyuk8/dodod/blob/master/src/app/_services/three-helper.service.ts) (3D cabinet helper), [`src/app/_services/cabinet-configurator.service.ts`](https://github.com/levonyuk8/dodod/blob/master/src/app/_services/cabinet-configurator.service.ts) (Configuration state), [`src/app/pages/configurator/step-2/step-2.component.ts`](https://github.com/levonyuk8/dodod/blob/master/src/app/pages/configurator/step-2/step-2.component.ts) (Wardrobe options), [`src/app/pages/configurator/step-3/step-3.component.ts`](https://github.com/levonyuk8/dodod/blob/master/src/app/pages/configurator/step-3/step-3.component.ts) (Section design)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_ui["Configurator UI"]
  node_app["App shell<br/>[app.component.ts]"]
  node_configurator["Configurator"]
  node_step1["Step 1"]
  node_step2["Wardrobe options"]
  node_step3["Section design"]
  node_step4["Step 4"]
  node_step5["Step 5"]
end

subgraph group_domain["Configuration Domain"]
  node_cabinet["Configuration state"]
  node_params["Wardrobe limits"]
  node_correction["Form correction"]
  node_wardrobe["Wardrobe model<br/>[wardrobe.model.ts]"]
  node_section["Section model<br/>[section.model.ts]"]
end

subgraph group_render["3D Rendering"]
  node_three["3D cabinet helper"]
  node_filling["Section contents"]
  node_viewer["3D wardrobe viewer"]
end

subgraph group_output["Export"]
  node_files["Configuration export<br/>[file.service.ts]"]
  node_download["Text file download"]
end

node_user(("Configurator user"))

node_user -->|"uses"| node_app
node_app -->|"renders"| node_configurator
node_step2 -->|"updates settings"| node_cabinet
node_step2 -->|"checks limits"| node_params
node_step2 -->|"corrects ranges"| node_correction
node_step3 -->|"reads and saves"| node_cabinet
node_step3 -->|"updates preview"| node_three
node_three -->|"reads settings"| node_cabinet
node_three -->|"creates contents"| node_filling
node_viewer -->|"uses"| node_three
node_files -->|"reads configuration"| node_cabinet
node_files -->|"downloads text"| node_download

click node_app "https://github.com/levonyuk8/dodod/blob/master/src/app/app.component.ts"
click node_configurator "https://github.com/levonyuk8/dodod/blob/master/src/app/pages/configurator/configurator.component.ts"
click node_step1 "https://github.com/levonyuk8/dodod/blob/master/src/app/pages/configurator/step-1/step-1.component.ts"
click node_step2 "https://github.com/levonyuk8/dodod/blob/master/src/app/pages/configurator/step-2/step-2.component.ts"
click node_step3 "https://github.com/levonyuk8/dodod/blob/master/src/app/pages/configurator/step-3/step-3.component.ts"
click node_step4 "https://github.com/levonyuk8/dodod/blob/master/src/app/pages/configurator/step-4/step-4.component.ts"
click node_step5 "https://github.com/levonyuk8/dodod/blob/master/src/app/pages/configurator/step-5/step-5.component.ts"
click node_cabinet "https://github.com/levonyuk8/dodod/blob/master/src/app/_services/cabinet-configurator.service.ts"
click node_params "https://github.com/levonyuk8/dodod/blob/master/src/app/_services/wardrobe-params.service.ts"
click node_correction "https://github.com/levonyuk8/dodod/blob/master/src/app/_services/form-correction.service.ts"
click node_wardrobe "https://github.com/levonyuk8/dodod/blob/master/src/app/_models/wardrobe.model.ts"
click node_section "https://github.com/levonyuk8/dodod/blob/master/src/app/_models/section.model.ts"
click node_three "https://github.com/levonyuk8/dodod/blob/master/src/app/_services/three-helper.service.ts"
click node_filling "https://github.com/levonyuk8/dodod/blob/master/src/app/_services/filling-sections.service.ts"
click node_viewer "https://github.com/levonyuk8/dodod/blob/master/src/app/_shared/components/three-wardrobe/three-wardrobe.component.ts"
click node_files "https://github.com/levonyuk8/dodod/blob/master/src/app/_services/file.service.ts"

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_app,node_configurator,node_step1,node_step2,node_step3,node_step4,node_step5,node_user toneBlue
class node_cabinet,node_params,node_correction,node_wardrobe,node_section toneAmber
class node_three,node_filling,node_viewer toneMint
class node_files,node_download toneRose
```

## Components

### Configurator UI

- [App shell](https://github.com/levonyuk8/dodod/blob/master/src/app/app.component.ts): `src/app/app.component.ts`
- [Configurator](https://github.com/levonyuk8/dodod/blob/master/src/app/pages/configurator/configurator.component.ts): `src/app/pages/configurator/configurator.component.ts`
- [Step 1](https://github.com/levonyuk8/dodod/blob/master/src/app/pages/configurator/step-1/step-1.component.ts): `src/app/pages/configurator/step-1/step-1.component.ts`
- [Wardrobe options](https://github.com/levonyuk8/dodod/blob/master/src/app/pages/configurator/step-2/step-2.component.ts): `src/app/pages/configurator/step-2/step-2.component.ts`
- [Section design](https://github.com/levonyuk8/dodod/blob/master/src/app/pages/configurator/step-3/step-3.component.ts): `src/app/pages/configurator/step-3/step-3.component.ts`
- [Step 4](https://github.com/levonyuk8/dodod/blob/master/src/app/pages/configurator/step-4/step-4.component.ts): `src/app/pages/configurator/step-4/step-4.component.ts`
- [Step 5](https://github.com/levonyuk8/dodod/blob/master/src/app/pages/configurator/step-5/step-5.component.ts): `src/app/pages/configurator/step-5/step-5.component.ts`

### Configuration Domain

- [Configuration state](https://github.com/levonyuk8/dodod/blob/master/src/app/_services/cabinet-configurator.service.ts): `src/app/_services/cabinet-configurator.service.ts`
- [Wardrobe limits](https://github.com/levonyuk8/dodod/blob/master/src/app/_services/wardrobe-params.service.ts): `src/app/_services/wardrobe-params.service.ts`
- [Form correction](https://github.com/levonyuk8/dodod/blob/master/src/app/_services/form-correction.service.ts): `src/app/_services/form-correction.service.ts`
- [Wardrobe model](https://github.com/levonyuk8/dodod/blob/master/src/app/_models/wardrobe.model.ts): `src/app/_models/wardrobe.model.ts`
- [Section model](https://github.com/levonyuk8/dodod/blob/master/src/app/_models/section.model.ts): `src/app/_models/section.model.ts`

### 3D Rendering

- [3D cabinet helper](https://github.com/levonyuk8/dodod/blob/master/src/app/_services/three-helper.service.ts): `src/app/_services/three-helper.service.ts`
- [Section contents](https://github.com/levonyuk8/dodod/blob/master/src/app/_services/filling-sections.service.ts): `src/app/_services/filling-sections.service.ts`
- [3D wardrobe viewer](https://github.com/levonyuk8/dodod/blob/master/src/app/_shared/components/three-wardrobe/three-wardrobe.component.ts): `src/app/_shared/components/three-wardrobe/three-wardrobe.component.ts`

### Export

- [Configuration export](https://github.com/levonyuk8/dodod/blob/master/src/app/_services/file.service.ts): `src/app/_services/file.service.ts`
- **Text file download**

### Other components

- **Configurator user**

## Connections

- Configurator user → App shell: uses
- App shell → Configurator: renders
- Wardrobe options → Configuration state: updates settings
- Wardrobe options → Wardrobe limits: checks limits
- Wardrobe options → Form correction: corrects ranges
- Section design → Configuration state: reads and saves
- Section design → 3D cabinet helper: updates preview
- 3D cabinet helper → Configuration state: reads settings
- 3D cabinet helper → Section contents: creates contents
- 3D wardrobe viewer → 3D cabinet helper: uses
- Configuration export → Configuration state: reads configuration
- Configuration export → Text file download: downloads text
