# stevenzhang543/nova_a architecture

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

- Interactive diagram: https://gitdiagram.com/stevenzhang543/nova_a
- Repository: https://github.com/stevenzhang543/nova_a

## Overview

Nova_A is a 2D game engine with a desktop editor and separate native/Web execution paths. The principal workflow begins in the editor, where a user creates or opens a project and works with scenes; an animation-preview session can run simulation while preserving authoring drafts. The repository also includes native physics hosting and delivery/release facilities. The README documents broader editor capabilities, including multiplayer, scripting, assets, and collaboration, but the sampled source does not establish their exact wiring. The graph therefore shows only evidenced calls and explicitly documented product surfaces.

Main entry points: [`crates/nova_headless/src/main.rs`](https://github.com/stevenzhang543/nova_a/blob/main/crates/nova_headless/src/main.rs) (Headless physics host), [`src/App.vue`](https://github.com/stevenzhang543/nova_a/blob/main/src/App.vue) (Editor application), [`src/components/ProjectManager.vue`](https://github.com/stevenzhang543/nova_a/blob/main/src/components/ProjectManager.vue) (Project manager UI), [`src/editor/animationPreviewSession.ts`](https://github.com/stevenzhang543/nova_a/blob/main/src/editor/animationPreviewSession.ts) (Animation preview)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_editor["Editor workflow"]
  node_app["Editor application<br/>[App.vue]"]
  node_projects_ui["Project manager UI<br/>[ProjectManager.vue]"]
  node_projects["Project lifecycle<br/>[projectManager.ts]"]
  node_scenes["Scene documents<br/>[SceneManager.ts]"]
  node_preview["Animation preview"]
  node_layout["Visual graph layout"]
  node_packages_ui["Package manager UI"]
end

subgraph group_engine["Engine services"]
  node_physics_store["Physics controls"]
  node_rust_core["Engine core<br/>[lib.rs]"]
  node_math["Engine math<br/>[lib.rs]"]
  node_physics["Physics engine<br/>[lib.rs]"]
  node_format["Project format<br/>[lib.rs]"]
  node_scripting["Script support<br/>[lib.rs]"]
end

subgraph group_runtime["Runtime hosts"]
  node_wasm["Web engine<br/>[lib.rs]"]
  node_runtime_lib["Runtime library<br/>[lib.rs]"]
  node_headless["Headless physics host<br/>[main.rs]"]
  node_desktop["Desktop host<br/>[lib.rs]"]
end

subgraph group_delivery["Delivery operations"]
  node_delivery_pipeline["Build delivery"]
  node_release["Release engineering"]
end

node_user(("Game creator"))

node_user -->|"uses"| node_app
node_app -->|"mounts"| node_projects_ui
node_projects_ui -->|"calls"| node_projects
node_preview -->|"starts simulation"| node_physics_store
node_headless -->|"calls"| node_runtime_lib
node_headless -->|"queries physics"| node_physics

click node_app "https://github.com/stevenzhang543/nova_a/blob/main/src/App.vue"
click node_projects_ui "https://github.com/stevenzhang543/nova_a/blob/main/src/components/ProjectManager.vue"
click node_projects "https://github.com/stevenzhang543/nova_a/blob/main/src/projects/projectManager.ts"
click node_scenes "https://github.com/stevenzhang543/nova_a/blob/main/src/world/SceneManager.ts"
click node_preview "https://github.com/stevenzhang543/nova_a/blob/main/src/editor/animationPreviewSession.ts"
click node_layout "https://github.com/stevenzhang543/nova_a/blob/main/src/visual/graphLayoutEngine.ts"
click node_packages_ui "https://github.com/stevenzhang543/nova_a/blob/main/src/components/PackageManagerPanel.vue"
click node_rust_core "https://github.com/stevenzhang543/nova_a/blob/main/nova_core/src/lib.rs"
click node_math "https://github.com/stevenzhang543/nova_a/blob/main/crates/nova_math/src/lib.rs"
click node_physics "https://github.com/stevenzhang543/nova_a/blob/main/crates/nova_physics/src/lib.rs"
click node_format "https://github.com/stevenzhang543/nova_a/blob/main/crates/nova_format/src/lib.rs"
click node_scripting "https://github.com/stevenzhang543/nova_a/blob/main/crates/nova_script/src/lib.rs"
click node_wasm "https://github.com/stevenzhang543/nova_a/blob/main/crates/nova_wasm/src/lib.rs"
click node_runtime_lib "https://github.com/stevenzhang543/nova_a/blob/main/crates/nova_runtime/src/lib.rs"
click node_headless "https://github.com/stevenzhang543/nova_a/blob/main/crates/nova_headless/src/main.rs"
click node_desktop "https://github.com/stevenzhang543/nova_a/blob/main/src-tauri/src/lib.rs"
click node_delivery_pipeline "https://github.com/stevenzhang543/nova_a/blob/main/src/runtime/deliveryPipeline.ts"
click node_release "https://github.com/stevenzhang543/nova_a/blob/main/src/runtime/releaseEngineering.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_projects_ui,node_projects,node_scenes,node_preview,node_layout,node_packages_ui toneBlue
class node_physics_store,node_rust_core,node_math,node_physics,node_format,node_scripting toneAmber
class node_wasm,node_runtime_lib,node_headless,node_desktop toneMint
class node_delivery_pipeline,node_release toneRose
class node_user toneIndigo
```

## Components

### Editor workflow

- [Editor application](https://github.com/stevenzhang543/nova_a/blob/main/src/App.vue): `src/App.vue`
- [Project manager UI](https://github.com/stevenzhang543/nova_a/blob/main/src/components/ProjectManager.vue): `src/components/ProjectManager.vue`
- [Project lifecycle](https://github.com/stevenzhang543/nova_a/blob/main/src/projects/projectManager.ts): `src/projects/projectManager.ts`
- [Scene documents](https://github.com/stevenzhang543/nova_a/blob/main/src/world/SceneManager.ts): `src/world/SceneManager.ts`
- [Animation preview](https://github.com/stevenzhang543/nova_a/blob/main/src/editor/animationPreviewSession.ts): `src/editor/animationPreviewSession.ts`
- [Visual graph layout](https://github.com/stevenzhang543/nova_a/blob/main/src/visual/graphLayoutEngine.ts): `src/visual/graphLayoutEngine.ts`
- [Package manager UI](https://github.com/stevenzhang543/nova_a/blob/main/src/components/PackageManagerPanel.vue): `src/components/PackageManagerPanel.vue`

### Engine services

- **Physics controls**
- [Engine core](https://github.com/stevenzhang543/nova_a/blob/main/nova_core/src/lib.rs): `nova_core/src/lib.rs`
- [Engine math](https://github.com/stevenzhang543/nova_a/blob/main/crates/nova_math/src/lib.rs): `crates/nova_math/src/lib.rs`
- [Physics engine](https://github.com/stevenzhang543/nova_a/blob/main/crates/nova_physics/src/lib.rs): `crates/nova_physics/src/lib.rs`
- [Project format](https://github.com/stevenzhang543/nova_a/blob/main/crates/nova_format/src/lib.rs): `crates/nova_format/src/lib.rs`
- [Script support](https://github.com/stevenzhang543/nova_a/blob/main/crates/nova_script/src/lib.rs): `crates/nova_script/src/lib.rs`

### Runtime hosts

- [Web engine](https://github.com/stevenzhang543/nova_a/blob/main/crates/nova_wasm/src/lib.rs): `crates/nova_wasm/src/lib.rs`
- [Runtime library](https://github.com/stevenzhang543/nova_a/blob/main/crates/nova_runtime/src/lib.rs): `crates/nova_runtime/src/lib.rs`
- [Headless physics host](https://github.com/stevenzhang543/nova_a/blob/main/crates/nova_headless/src/main.rs): `crates/nova_headless/src/main.rs`
- [Desktop host](https://github.com/stevenzhang543/nova_a/blob/main/src-tauri/src/lib.rs): `src-tauri/src/lib.rs`

### Delivery operations

- [Build delivery](https://github.com/stevenzhang543/nova_a/blob/main/src/runtime/deliveryPipeline.ts): `src/runtime/deliveryPipeline.ts`
- [Release engineering](https://github.com/stevenzhang543/nova_a/blob/main/src/runtime/releaseEngineering.ts): `src/runtime/releaseEngineering.ts`

### Other components

- **Game creator**

## Connections

- Game creator → Editor application: uses
- Editor application → Project manager UI: mounts
- Project manager UI → Project lifecycle: calls
- Animation preview → Physics controls: starts simulation
- Headless physics host → Runtime library: calls
- Headless physics host → Physics engine: queries physics
