# cossoledad/occccad architecture

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

- Interactive diagram: https://gitdiagram.com/cossoledad/occccad
- Repository: https://github.com/cossoledad/occccad

## Overview

occccad is an early-stage cloud CAD platform. The main user workflow runs from the browser CAD workbench through the Go API and workspace domain logic to the Geometry Worker and C++ kernel, returning model and visualization results to the viewport. Separate branches cover document exchange and persistent jobs, account/access control, assembly engineering and motion presentation, and durable database/artifact storage. The README documents the overall service flow; sampled source gives more specific evidence for viewport, input/navigation and worker relationships. Unsampled subsystem links are omitted where wiring is not established.

Main entry points: [`services/internal/api/server.go`](https://github.com/cossoledad/occccad/blob/main/services/internal/api/server.go) (Go API), [`web/apps/cad/src/viewport/cad-viewport-engine.ts`](https://github.com/cossoledad/occccad/blob/main/web/apps/cad/src/viewport/cad-viewport-engine.ts) (3D viewport), [`web/apps/cad/src/app/app.tsx`](https://github.com/cossoledad/occccad/blob/main/web/apps/cad/src/app/app.tsx) (CAD workbench), [`workers/geometry/src/main.cpp`](https://github.com/cossoledad/occccad/blob/main/workers/geometry/src/main.cpp) (Geometry Worker)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_web["Browser CAD"]
  node_webapp["CAD workbench<br/>[app.tsx]"]
  node_viewport["3D viewport"]
  node_input["Input handling<br/>[input-manager.ts]"]
  node_input_types["Input contracts<br/>[input-types.ts]"]
  node_navigation["View navigation"]
  node_camera["Camera rig<br/>[camera-rig.ts]"]
  node_sketch_edit["Sketch editing"]
  node_sketch_input["Sketch input"]
  node_assembly_state["Assembly engineering"]
  node_motion["Motion presentation"]
  node_motion_markers["Motion markers<br/>[motion-markers.ts]"]
  node_analysis_guides["Analysis guides<br/>[analysis-guides.ts]"]
  node_web_api["Web API client<br/>[client.ts]"]
end

subgraph group_services["API and domains"]
  node_api["Go API<br/>[server.go]"]
  node_workspace["Model workspace"]
  node_access["Accounts and ACL<br/>[service.go]"]
  node_jobs["Persistent jobs<br/>[service.go]"]
  node_geometry_client["Geometry client<br/>[client.go]"]
end

subgraph group_geometry["Geometry compute"]
  node_worker["Geometry Worker<br/>[main.cpp]"]
  node_naming["Naming artifacts"]
  node_kernel["OCCT kernel<br/>[occt_kernel.cpp]"]
end

subgraph group_storage["Persistence"]
  node_database[("Database")]
  node_artifact[("Artifact storage")]
end

node_user(("CAD user"))

node_user -->|"edits models"| node_webapp
node_webapp -->|"presents model"| node_viewport
node_webapp -->|"requests services"| node_web_api
node_input -->|"uses contracts"| node_input_types
node_viewport -->|"controls view"| node_navigation
node_navigation -->|"configures rig"| node_camera
node_viewport -->|"uses preview"| node_sketch_edit
node_viewport -->|"uses input"| node_sketch_input
node_motion -->|"uses evidence"| node_assembly_state
node_motion_markers -->|"renders motion"| node_motion
node_motion_markers -->|"creates guides"| node_analysis_guides
node_web_api -->|"calls API"| node_api
node_api -->|"orchestrates modeling"| node_workspace
node_api -->|"handles access"| node_access
node_api -->|"manages jobs"| node_jobs
node_workspace -->|"requests geometry"| node_geometry_client
node_geometry_client -->|"sends geometry RPCs"| node_worker
node_worker -->|"invokes kernel"| node_kernel
node_worker -->|"uses naming artifacts"| node_naming
node_api -->|"persists records"| node_database
node_api -->|"stores artifacts"| node_artifact
node_jobs -->|"processes exchanges"| node_artifact

click node_webapp "https://github.com/cossoledad/occccad/blob/main/web/apps/cad/src/app/app.tsx"
click node_viewport "https://github.com/cossoledad/occccad/blob/main/web/apps/cad/src/viewport/cad-viewport-engine.ts"
click node_input "https://github.com/cossoledad/occccad/blob/main/web/apps/cad/src/cad/input/input-manager.ts"
click node_input_types "https://github.com/cossoledad/occccad/blob/main/web/apps/cad/src/cad/input/input-types.ts"
click node_navigation "https://github.com/cossoledad/occccad/blob/main/web/apps/cad/src/cad/navigation/navigation-controller.ts"
click node_camera "https://github.com/cossoledad/occccad/blob/main/web/apps/cad/src/cad/navigation/camera-rig.ts"
click node_sketch_edit "https://github.com/cossoledad/occccad/blob/main/web/apps/cad/src/cad/sketch/sketch-edit-preview.ts"
click node_sketch_input "https://github.com/cossoledad/occccad/blob/main/web/apps/cad/src/cad/sketch/sketch-modal-input.ts"
click node_assembly_state "https://github.com/cossoledad/occccad/blob/main/web/apps/cad/src/cad/assembly/assembly-engineering-state.ts"
click node_motion "https://github.com/cossoledad/occccad/blob/main/web/apps/cad/src/cad/assembly/motion-presentation.ts"
click node_motion_markers "https://github.com/cossoledad/occccad/blob/main/web/apps/cad/src/cad/assembly/motion-markers.ts"
click node_analysis_guides "https://github.com/cossoledad/occccad/blob/main/web/apps/cad/src/cad/rendering/analysis-guides.ts"
click node_web_api "https://github.com/cossoledad/occccad/blob/main/web/apps/cad/src/api/client.ts"
click node_api "https://github.com/cossoledad/occccad/blob/main/services/internal/api/server.go"
click node_workspace "https://github.com/cossoledad/occccad/tree/main/services/internal/workspace"
click node_access "https://github.com/cossoledad/occccad/blob/main/services/internal/access/service.go"
click node_jobs "https://github.com/cossoledad/occccad/blob/main/services/internal/jobs/service.go"
click node_geometry_client "https://github.com/cossoledad/occccad/blob/main/services/internal/geometry/client.go"
click node_worker "https://github.com/cossoledad/occccad/blob/main/workers/geometry/src/main.cpp"
click node_naming "https://github.com/cossoledad/occccad/blob/main/workers/geometry/src/naming_artifact.hpp"
click node_kernel "https://github.com/cossoledad/occccad/blob/main/kernel/occt/src/occt_kernel.cpp"
click node_database "https://github.com/cossoledad/occccad/tree/main/services/internal/database"
click node_artifact "https://github.com/cossoledad/occccad/tree/main/services/internal/artifact"

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_webapp,node_viewport,node_input,node_input_types,node_navigation,node_camera,node_sketch_edit,node_sketch_input,node_assembly_state,node_motion,node_motion_markers,node_analysis_guides,node_web_api,node_user toneBlue
class node_api,node_workspace,node_access,node_jobs,node_geometry_client toneAmber
class node_worker,node_naming,node_kernel toneMint
class node_database,node_artifact toneRose
```

## Components

### Browser CAD

- [CAD workbench](https://github.com/cossoledad/occccad/blob/main/web/apps/cad/src/app/app.tsx): `web/apps/cad/src/app/app.tsx`
- [3D viewport](https://github.com/cossoledad/occccad/blob/main/web/apps/cad/src/viewport/cad-viewport-engine.ts): `web/apps/cad/src/viewport/cad-viewport-engine.ts`
- [Input handling](https://github.com/cossoledad/occccad/blob/main/web/apps/cad/src/cad/input/input-manager.ts): `web/apps/cad/src/cad/input/input-manager.ts`
- [Input contracts](https://github.com/cossoledad/occccad/blob/main/web/apps/cad/src/cad/input/input-types.ts): `web/apps/cad/src/cad/input/input-types.ts`
- [View navigation](https://github.com/cossoledad/occccad/blob/main/web/apps/cad/src/cad/navigation/navigation-controller.ts): `web/apps/cad/src/cad/navigation/navigation-controller.ts`
- [Camera rig](https://github.com/cossoledad/occccad/blob/main/web/apps/cad/src/cad/navigation/camera-rig.ts): `web/apps/cad/src/cad/navigation/camera-rig.ts`
- [Sketch editing](https://github.com/cossoledad/occccad/blob/main/web/apps/cad/src/cad/sketch/sketch-edit-preview.ts): `web/apps/cad/src/cad/sketch/sketch-edit-preview.ts`
- [Sketch input](https://github.com/cossoledad/occccad/blob/main/web/apps/cad/src/cad/sketch/sketch-modal-input.ts): `web/apps/cad/src/cad/sketch/sketch-modal-input.ts`
- [Assembly engineering](https://github.com/cossoledad/occccad/blob/main/web/apps/cad/src/cad/assembly/assembly-engineering-state.ts): `web/apps/cad/src/cad/assembly/assembly-engineering-state.ts`
- [Motion presentation](https://github.com/cossoledad/occccad/blob/main/web/apps/cad/src/cad/assembly/motion-presentation.ts): `web/apps/cad/src/cad/assembly/motion-presentation.ts`
- [Motion markers](https://github.com/cossoledad/occccad/blob/main/web/apps/cad/src/cad/assembly/motion-markers.ts): `web/apps/cad/src/cad/assembly/motion-markers.ts`
- [Analysis guides](https://github.com/cossoledad/occccad/blob/main/web/apps/cad/src/cad/rendering/analysis-guides.ts): `web/apps/cad/src/cad/rendering/analysis-guides.ts`
- [Web API client](https://github.com/cossoledad/occccad/blob/main/web/apps/cad/src/api/client.ts): `web/apps/cad/src/api/client.ts`

### API and domains

- [Go API](https://github.com/cossoledad/occccad/blob/main/services/internal/api/server.go): `services/internal/api/server.go`
- [Model workspace](https://github.com/cossoledad/occccad/tree/main/services/internal/workspace): `services/internal/workspace`
- [Accounts and ACL](https://github.com/cossoledad/occccad/blob/main/services/internal/access/service.go): `services/internal/access/service.go`
- [Persistent jobs](https://github.com/cossoledad/occccad/blob/main/services/internal/jobs/service.go): `services/internal/jobs/service.go`
- [Geometry client](https://github.com/cossoledad/occccad/blob/main/services/internal/geometry/client.go): `services/internal/geometry/client.go`

### Geometry compute

- [Geometry Worker](https://github.com/cossoledad/occccad/blob/main/workers/geometry/src/main.cpp): `workers/geometry/src/main.cpp`
- [Naming artifacts](https://github.com/cossoledad/occccad/blob/main/workers/geometry/src/naming_artifact.hpp): `workers/geometry/src/naming_artifact.hpp`
- [OCCT kernel](https://github.com/cossoledad/occccad/blob/main/kernel/occt/src/occt_kernel.cpp): `kernel/occt/src/occt_kernel.cpp`

### Persistence

- [Database](https://github.com/cossoledad/occccad/tree/main/services/internal/database): `services/internal/database`
- [Artifact storage](https://github.com/cossoledad/occccad/tree/main/services/internal/artifact): `services/internal/artifact`

### Other components

- **CAD user**

## Connections

- CAD user → CAD workbench: edits models (evidence: `README.md`)
- CAD workbench → 3D viewport: presents model (evidence: `README.md`)
- CAD workbench → Web API client: requests services (evidence: `README.md`)
- Input handling → Input contracts: uses contracts (evidence: `web/apps/cad/src/cad/input/input-manager.ts`)
- 3D viewport → View navigation: controls view (evidence: `web/apps/cad/src/viewport/cad-viewport-engine.ts`)
- View navigation → Camera rig: configures rig (evidence: `web/apps/cad/src/cad/navigation/navigation-controller.ts`)
- 3D viewport → Sketch editing: uses preview (evidence: `web/apps/cad/src/viewport/cad-viewport-engine.ts`)
- 3D viewport → Sketch input: uses input (evidence: `web/apps/cad/src/viewport/cad-viewport-engine.ts`)
- Motion presentation → Assembly engineering: uses evidence (evidence: `web/apps/cad/src/cad/assembly/motion-presentation.ts`)
- Motion markers → Motion presentation: renders motion (evidence: `web/apps/cad/src/cad/assembly/motion-markers.ts`)
- Motion markers → Analysis guides: creates guides (evidence: `web/apps/cad/src/cad/assembly/motion-markers.ts`)
- Web API client → Go API: calls API (evidence: `README.md`)
- Go API → Model workspace: orchestrates modeling (evidence: `README.md`)
- Go API → Accounts and ACL: handles access (evidence: `README.md`)
- Go API → Persistent jobs: manages jobs (evidence: `README.md`)
- Model workspace → Geometry client: requests geometry (evidence: `README.md`)
- Geometry client → Geometry Worker: sends geometry RPCs (evidence: `services/internal/geometry/client.go`)
- Geometry Worker → OCCT kernel: invokes kernel (evidence: `workers/geometry/src/main.cpp`)
- Geometry Worker → Naming artifacts: uses naming artifacts (evidence: `workers/geometry/src/main.cpp`)
- Go API → Database: persists records (evidence: `README.md`)
- Go API → Artifact storage: stores artifacts (evidence: `README.md`)
- Persistent jobs → Artifact storage: processes exchanges (evidence: `README.md`)
