# luthetin/geostructure-builder architecture

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

- Interactive diagram: https://gitdiagram.com/luthetin/geostructure-builder
- Repository: https://github.com/luthetin/geostructure-builder

## Overview

GeoStructure Builder is a standalone, offline browser editor for sculpting geological interfaces and viewing the resulting strata as a 3D model and plan view. The principal workflow is to edit control points, interpolate smooth surfaces, derive solid strata between interfaces, then inspect the model and adjust its display. README documents the editor, geometry, rendering, presets, and save/export features, but no source excerpts were provided; runtime components therefore point to index.html and relationships cite documented behavior rather than inspected calls.

Main entry points: [`index.html`](https://github.com/luthetin/geostructure-builder/blob/main/index.html) (Editor controls)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_editing["Model editing"]
  node_editor["Editor controls<br/>[index.html]"]
  node_skeleton["Control skeleton<br/>[index.html]"]
  node_column["Stratigraphic column<br/>[index.html]"]
end

subgraph group_geometry["Geological geometry"]
  node_interface["Geological interfaces<br/>[index.html]"]
  node_surface["Smooth surfaces<br/>[index.html]"]
  node_strata["Strata solids<br/>[index.html]"]
  node_transparency["Stratigraphic rules<br/>[index.html]"]
  node_exposure["Exposure bands<br/>[index.html]"]
end

subgraph group_views["Visualization"]
  node_view3d["3D view<br/>[index.html]"]
  node_plan["Plan view<br/>[index.html]"]
  node_contours["Contours and traces<br/>[index.html]"]
end

subgraph group_state["Model state"]
  node_presets["Preset models<br/>[index.html]"]
  node_save["Model save and export<br/>[index.html]"]
  node_preferences["View and UI settings<br/>[index.html]"]
end

node_user(("Geologist"))

node_user -->|"edits model"| node_editor
node_editor -->|"edits points"| node_skeleton
node_skeleton -->|"interpolates"| node_surface
node_editor -->|"selects and adjusts"| node_interface
node_interface -->|"bounds"| node_strata
node_interface -->|"determines visibility"| node_transparency
node_strata -->|"applies visibility rules"| node_transparency
node_surface -->|"supplies geometry"| node_strata
node_exposure -->|"colors surface"| node_view3d
node_exposure -->|"colors exposure bands"| node_plan
node_strata -->|"renders solids"| node_view3d
node_interface -->|"renders interfaces"| node_view3d
node_editor -->|"updates view"| node_plan
node_editor -->|"configures contours"| node_contours
node_column -->|"selects interfaces"| node_interface
node_column -->|"edits layer display"| node_strata
node_presets -->|"loads model"| node_editor
node_editor -->|"saves and exports"| node_save
node_editor -->|"retains UI state"| node_preferences
node_preferences -->|"configures display"| node_view3d

click node_editor "https://github.com/luthetin/geostructure-builder/blob/main/index.html"
click node_skeleton "https://github.com/luthetin/geostructure-builder/blob/main/index.html"
click node_interface "https://github.com/luthetin/geostructure-builder/blob/main/index.html"
click node_surface "https://github.com/luthetin/geostructure-builder/blob/main/index.html"
click node_strata "https://github.com/luthetin/geostructure-builder/blob/main/index.html"
click node_transparency "https://github.com/luthetin/geostructure-builder/blob/main/index.html"
click node_exposure "https://github.com/luthetin/geostructure-builder/blob/main/index.html"
click node_view3d "https://github.com/luthetin/geostructure-builder/blob/main/index.html"
click node_plan "https://github.com/luthetin/geostructure-builder/blob/main/index.html"
click node_contours "https://github.com/luthetin/geostructure-builder/blob/main/index.html"
click node_column "https://github.com/luthetin/geostructure-builder/blob/main/index.html"
click node_presets "https://github.com/luthetin/geostructure-builder/blob/main/index.html"
click node_save "https://github.com/luthetin/geostructure-builder/blob/main/index.html"
click node_preferences "https://github.com/luthetin/geostructure-builder/blob/main/index.html"

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_editor,node_skeleton,node_column toneBlue
class node_interface,node_surface,node_strata,node_transparency,node_exposure toneAmber
class node_view3d,node_plan,node_contours toneMint
class node_presets,node_save,node_preferences toneRose
class node_user toneIndigo
```

## Components

### Model editing

- [Editor controls](https://github.com/luthetin/geostructure-builder/blob/main/index.html): `index.html`
- [Control skeleton](https://github.com/luthetin/geostructure-builder/blob/main/index.html): `index.html`
- [Stratigraphic column](https://github.com/luthetin/geostructure-builder/blob/main/index.html): `index.html`

### Geological geometry

- [Geological interfaces](https://github.com/luthetin/geostructure-builder/blob/main/index.html): `index.html`
- [Smooth surfaces](https://github.com/luthetin/geostructure-builder/blob/main/index.html): `index.html`
- [Strata solids](https://github.com/luthetin/geostructure-builder/blob/main/index.html): `index.html`
- [Stratigraphic rules](https://github.com/luthetin/geostructure-builder/blob/main/index.html): `index.html`
- [Exposure bands](https://github.com/luthetin/geostructure-builder/blob/main/index.html): `index.html`

### Visualization

- [3D view](https://github.com/luthetin/geostructure-builder/blob/main/index.html): `index.html`
- [Plan view](https://github.com/luthetin/geostructure-builder/blob/main/index.html): `index.html`
- [Contours and traces](https://github.com/luthetin/geostructure-builder/blob/main/index.html): `index.html`

### Model state

- [Preset models](https://github.com/luthetin/geostructure-builder/blob/main/index.html): `index.html`
- [Model save and export](https://github.com/luthetin/geostructure-builder/blob/main/index.html): `index.html`
- [View and UI settings](https://github.com/luthetin/geostructure-builder/blob/main/index.html): `index.html`

### Other components

- **Geologist**

## Connections

- Geologist → Editor controls: edits model (evidence: `README.md`)
- Editor controls → Control skeleton: edits points (evidence: `README.md`)
- Control skeleton → Smooth surfaces: interpolates (evidence: `README.md`)
- Editor controls → Geological interfaces: selects and adjusts (evidence: `README.md`)
- Geological interfaces → Strata solids: bounds (evidence: `README.md`)
- Geological interfaces → Stratigraphic rules: determines visibility (evidence: `README.md`)
- Strata solids → Stratigraphic rules: applies visibility rules (evidence: `README.md`)
- Smooth surfaces → Strata solids: supplies geometry (evidence: `README.md`)
- Exposure bands → 3D view: colors surface (evidence: `README.md`)
- Exposure bands → Plan view: colors exposure bands (evidence: `README.md`)
- Strata solids → 3D view: renders solids (evidence: `README.md`)
- Geological interfaces → 3D view: renders interfaces (evidence: `README.md`)
- Editor controls → Plan view: updates view (evidence: `README.md`)
- Editor controls → Contours and traces: configures contours (evidence: `README.md`)
- Stratigraphic column → Geological interfaces: selects interfaces (evidence: `README.md`)
- Stratigraphic column → Strata solids: edits layer display (evidence: `README.md`)
- Preset models → Editor controls: loads model (evidence: `README.md`)
- Editor controls → Model save and export: saves and exports (evidence: `README.md`)
- Editor controls → View and UI settings: retains UI state (evidence: `README.md`)
- View and UI settings → 3D view: configures display (evidence: `README.md`)
