# snoop74/manuel-freze-simulator architecture

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

- Interactive diagram: https://gitdiagram.com/snoop74/manuel-freze-simulator
- Repository: https://github.com/snoop74/manuel-freze-simulator

## Overview

Manuel Freze Simülatörü is a browser-based 3D manual milling-machine simulator and machining game. The player configures stock and tooling, controls the machine, removes material, then inspects the workpiece; jobs and career mode add drawings, acceptance, payment, and progression. The graph preserves the documented measurement, training, G-code, workshop, and custom-tool capabilities. Edges reflect visible imports or README-documented relationships; unsampled startup and subsystem wiring is not inferred.

Main entry points: [`src/js/main.js`](https://github.com/snoop74/manuel-freze-simulator/blob/main/src/js/main.js) (Application Entry), [`src/js/08-kesme.js`](https://github.com/snoop74/manuel-freze-simulator/blob/main/src/js/08-kesme.js) (Cutting Physics), [`src/js/17-kariyer.js`](https://github.com/snoop74/manuel-freze-simulator/blob/main/src/js/17-kariyer.js) (Career Economy), [`src/js/09-kumanda.js`](https://github.com/snoop74/manuel-freze-simulator/blob/main/src/js/09-kumanda.js) (Machine Controls)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_machine["Machine Simulation"]
  node_machine_scene["Machine Scene<br/>[02-sahne-tezgah.js]"]
  node_table_stock["Table and Stock<br/>[03-tabla-parca.js]"]
  node_voxel["Stock Height Map<br/>[04-voksel.js]"]
  node_workholding["Workholding<br/>[05-baglama.js]"]
  node_cutting["Cutting Physics<br/>[08-kesme.js]"]
  node_chips["Chips and Particles<br/>[06-talas.js]"]
  node_tool_geometry["Tool Geometry<br/>[07-takim-gorsel.js]"]
  node_motor["Spindle Motor<br/>[28-motor.js]"]
  node_workshop["Workshop Scene<br/>[19-atolye.js]"]
end

subgraph group_interface["Controls and Tools"]
  node_controls["Machine Controls<br/>[09-kumanda.js]"]
  node_panels["Control Panels<br/>[11-paneller.js]"]
  node_toolbar["Top Bar"]
  node_tools["Tool Editor"]
  node_gcode["G-code<br/>[27-gkod.js]"]
end

subgraph group_work["Jobs and Inspection"]
  node_measuring["Part Inspection<br/>[14-parca-masasi.js]"]
  node_jobs["Job Inspection"]
  node_orders["Order Board<br/>[16-siparis.js]"]
  node_ready_parts["Customer Parts<br/>[16-hazir-parca.js]"]
  node_career["Career Economy<br/>[17-kariyer.js]"]
  node_training["Training<br/>[26-egitim.js]"]
end

subgraph group_runtime["Runtime Services"]
  node_entry["Application Entry<br/>[main.js]"]
  node_state["Machine State<br/>[00-temel.js]"]
  node_settings["Settings and Language<br/>[00-tercihler.js]"]
  node_audio["Generated Audio<br/>[01-ses.js]"]
end

node_player(("Player"))

node_player -->|"starts"| node_entry
node_entry -->|"imports"| node_state
node_entry -->|"imports"| node_machine_scene
node_entry -->|"imports"| node_controls
node_entry -->|"imports"| node_jobs
node_entry -->|"imports"| node_panels
node_entry -->|"imports"| node_orders
node_entry -->|"imports"| node_career
node_entry -->|"imports"| node_training
node_entry -->|"imports"| node_gcode
node_table_stock -->|"builds on"| node_machine_scene
node_workholding -->|"uses"| node_table_stock
node_workholding -->|"uses"| node_voxel
node_cutting -->|"updates"| node_voxel
node_cutting -->|"checks"| node_workholding
node_cutting -->|"reads profile"| node_tool_geometry
node_cutting -->|"generates"| node_chips
node_cutting -->|"triggers"| node_audio
node_controls -->|"stops motion"| node_cutting
node_controls -->|"reads holders"| node_tool_geometry
node_settings -->|"configures"| node_audio
node_orders -->|"uses"| node_ready_parts
node_career -->|"uses"| node_orders
node_career -->|"uses"| node_jobs
node_career -->|"uses"| node_tools
node_career -->|"uses"| node_measuring
node_player -->|"inspects workpiece"| node_measuring
node_player -->|"learns controls"| node_training
node_player -.->|"uses"| node_gcode
node_machine_scene -.->|"renders in"| node_workshop
node_toolbar -->|"opens"| node_panels

click node_entry "https://github.com/snoop74/manuel-freze-simulator/blob/main/src/js/main.js"
click node_state "https://github.com/snoop74/manuel-freze-simulator/blob/main/src/js/00-temel.js"
click node_settings "https://github.com/snoop74/manuel-freze-simulator/blob/main/src/js/00-tercihler.js"
click node_machine_scene "https://github.com/snoop74/manuel-freze-simulator/blob/main/src/js/02-sahne-tezgah.js"
click node_table_stock "https://github.com/snoop74/manuel-freze-simulator/blob/main/src/js/03-tabla-parca.js"
click node_voxel "https://github.com/snoop74/manuel-freze-simulator/blob/main/src/js/04-voksel.js"
click node_workholding "https://github.com/snoop74/manuel-freze-simulator/blob/main/src/js/05-baglama.js"
click node_cutting "https://github.com/snoop74/manuel-freze-simulator/blob/main/src/js/08-kesme.js"
click node_chips "https://github.com/snoop74/manuel-freze-simulator/blob/main/src/js/06-talas.js"
click node_tool_geometry "https://github.com/snoop74/manuel-freze-simulator/blob/main/src/js/07-takim-gorsel.js"
click node_motor "https://github.com/snoop74/manuel-freze-simulator/blob/main/src/js/28-motor.js"
click node_audio "https://github.com/snoop74/manuel-freze-simulator/blob/main/src/js/01-ses.js"
click node_controls "https://github.com/snoop74/manuel-freze-simulator/blob/main/src/js/09-kumanda.js"
click node_panels "https://github.com/snoop74/manuel-freze-simulator/blob/main/src/js/11-paneller.js"
click node_toolbar "https://github.com/snoop74/manuel-freze-simulator/blob/main/src/js/12-dongu-ust-cubuk.js"
click node_tools "https://github.com/snoop74/manuel-freze-simulator/blob/main/src/js/15-takim-editoru.js"
click node_measuring "https://github.com/snoop74/manuel-freze-simulator/blob/main/src/js/14-parca-masasi.js"
click node_jobs "https://github.com/snoop74/manuel-freze-simulator/blob/main/src/js/10-is-emri-muayene.js"
click node_orders "https://github.com/snoop74/manuel-freze-simulator/blob/main/src/js/16-siparis.js"
click node_ready_parts "https://github.com/snoop74/manuel-freze-simulator/blob/main/src/js/16-hazir-parca.js"
click node_career "https://github.com/snoop74/manuel-freze-simulator/blob/main/src/js/17-kariyer.js"
click node_training "https://github.com/snoop74/manuel-freze-simulator/blob/main/src/js/26-egitim.js"
click node_gcode "https://github.com/snoop74/manuel-freze-simulator/blob/main/src/js/27-gkod.js"
click node_workshop "https://github.com/snoop74/manuel-freze-simulator/blob/main/src/js/19-atolye.js"

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_machine_scene,node_table_stock,node_voxel,node_workholding,node_cutting,node_chips,node_tool_geometry,node_motor,node_workshop toneBlue
class node_controls,node_panels,node_toolbar,node_tools,node_gcode toneAmber
class node_measuring,node_jobs,node_orders,node_ready_parts,node_career,node_training toneMint
class node_entry,node_state,node_settings,node_audio toneRose
class node_player toneIndigo
```

## Components

### Machine Simulation

- [Machine Scene](https://github.com/snoop74/manuel-freze-simulator/blob/main/src/js/02-sahne-tezgah.js): `src/js/02-sahne-tezgah.js`
- [Table and Stock](https://github.com/snoop74/manuel-freze-simulator/blob/main/src/js/03-tabla-parca.js): `src/js/03-tabla-parca.js`
- [Stock Height Map](https://github.com/snoop74/manuel-freze-simulator/blob/main/src/js/04-voksel.js): `src/js/04-voksel.js`
- [Workholding](https://github.com/snoop74/manuel-freze-simulator/blob/main/src/js/05-baglama.js): `src/js/05-baglama.js`
- [Cutting Physics](https://github.com/snoop74/manuel-freze-simulator/blob/main/src/js/08-kesme.js): `src/js/08-kesme.js`
- [Chips and Particles](https://github.com/snoop74/manuel-freze-simulator/blob/main/src/js/06-talas.js): `src/js/06-talas.js`
- [Tool Geometry](https://github.com/snoop74/manuel-freze-simulator/blob/main/src/js/07-takim-gorsel.js): `src/js/07-takim-gorsel.js`
- [Spindle Motor](https://github.com/snoop74/manuel-freze-simulator/blob/main/src/js/28-motor.js): `src/js/28-motor.js`
- [Workshop Scene](https://github.com/snoop74/manuel-freze-simulator/blob/main/src/js/19-atolye.js): `src/js/19-atolye.js`

### Controls and Tools

- [Machine Controls](https://github.com/snoop74/manuel-freze-simulator/blob/main/src/js/09-kumanda.js): `src/js/09-kumanda.js`
- [Control Panels](https://github.com/snoop74/manuel-freze-simulator/blob/main/src/js/11-paneller.js): `src/js/11-paneller.js`
- [Top Bar](https://github.com/snoop74/manuel-freze-simulator/blob/main/src/js/12-dongu-ust-cubuk.js): `src/js/12-dongu-ust-cubuk.js`
- [Tool Editor](https://github.com/snoop74/manuel-freze-simulator/blob/main/src/js/15-takim-editoru.js): `src/js/15-takim-editoru.js`
- [G-code](https://github.com/snoop74/manuel-freze-simulator/blob/main/src/js/27-gkod.js): `src/js/27-gkod.js`

### Jobs and Inspection

- [Part Inspection](https://github.com/snoop74/manuel-freze-simulator/blob/main/src/js/14-parca-masasi.js): `src/js/14-parca-masasi.js`
- [Job Inspection](https://github.com/snoop74/manuel-freze-simulator/blob/main/src/js/10-is-emri-muayene.js): `src/js/10-is-emri-muayene.js`
- [Order Board](https://github.com/snoop74/manuel-freze-simulator/blob/main/src/js/16-siparis.js): `src/js/16-siparis.js`
- [Customer Parts](https://github.com/snoop74/manuel-freze-simulator/blob/main/src/js/16-hazir-parca.js): `src/js/16-hazir-parca.js`
- [Career Economy](https://github.com/snoop74/manuel-freze-simulator/blob/main/src/js/17-kariyer.js): `src/js/17-kariyer.js`
- [Training](https://github.com/snoop74/manuel-freze-simulator/blob/main/src/js/26-egitim.js): `src/js/26-egitim.js`

### Runtime Services

- [Application Entry](https://github.com/snoop74/manuel-freze-simulator/blob/main/src/js/main.js): `src/js/main.js`
- [Machine State](https://github.com/snoop74/manuel-freze-simulator/blob/main/src/js/00-temel.js): `src/js/00-temel.js`
- [Settings and Language](https://github.com/snoop74/manuel-freze-simulator/blob/main/src/js/00-tercihler.js): `src/js/00-tercihler.js`
- [Generated Audio](https://github.com/snoop74/manuel-freze-simulator/blob/main/src/js/01-ses.js): `src/js/01-ses.js`

### Other components

- **Player**

## Connections

- Player → Application Entry: starts
- Application Entry → Machine State: imports (evidence: `src/js/main.js`)
- Application Entry → Machine Scene: imports (evidence: `src/js/main.js`)
- Application Entry → Machine Controls: imports (evidence: `src/js/main.js`)
- Application Entry → Job Inspection: imports (evidence: `src/js/main.js`)
- Application Entry → Control Panels: imports (evidence: `src/js/main.js`)
- Application Entry → Order Board: imports (evidence: `src/js/main.js`)
- Application Entry → Career Economy: imports (evidence: `src/js/main.js`)
- Application Entry → Training: imports (evidence: `src/js/main.js`)
- Application Entry → G-code: imports (evidence: `src/js/main.js`)
- Table and Stock → Machine Scene: builds on (evidence: `src/js/03-tabla-parca.js`)
- Workholding → Table and Stock: uses (evidence: `src/js/05-baglama.js`)
- Workholding → Stock Height Map: uses (evidence: `src/js/05-baglama.js`)
- Cutting Physics → Stock Height Map: updates (evidence: `src/js/08-kesme.js`)
- Cutting Physics → Workholding: checks (evidence: `src/js/08-kesme.js`)
- Cutting Physics → Tool Geometry: reads profile (evidence: `src/js/08-kesme.js`)
- Cutting Physics → Chips and Particles: generates (evidence: `src/js/08-kesme.js`)
- Cutting Physics → Generated Audio: triggers (evidence: `src/js/08-kesme.js`)
- Machine Controls → Cutting Physics: stops motion (evidence: `src/js/09-kumanda.js`)
- Machine Controls → Tool Geometry: reads holders (evidence: `src/js/09-kumanda.js`)
- Settings and Language → Generated Audio: configures (evidence: `src/js/01-ses.js`)
- Order Board → Customer Parts: uses (evidence: `src/js/16-siparis.js`)
- Career Economy → Order Board: uses (evidence: `src/js/17-kariyer.js`)
- Career Economy → Job Inspection: uses (evidence: `src/js/17-kariyer.js`)
- Career Economy → Tool Editor: uses (evidence: `src/js/17-kariyer.js`)
- Career Economy → Part Inspection: uses (evidence: `src/js/17-kariyer.js`)
- Player → Part Inspection: inspects workpiece
- Player → Training: learns controls
- Player → G-code: uses
- Machine Scene → Workshop Scene: renders in (evidence: `src/js/19-atolye.js`)
- Top Bar → Control Panels: opens (evidence: `src/js/12-dongu-ust-cubuk.js`)
