# krishnazawar/levelcraft architecture

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

- Interactive diagram: https://gitdiagram.com/krishnazawar/levelcraft
- Repository: https://github.com/krishnazawar/levelcraft

## Overview

LevelCraft is an early-stage no-code game engine. A creator authors a project in the Editor, requests a run, and the Orchestrator starts and supervises the Builder; stopping the run leaves the Editor available for iteration. The Editor’s UI/backend and the Builder’s player/runtime are distinct application stages, with shared game-object and component utilities underneath. The README documents the cross-process workflow; source excerpts show selected state construction and orchestration details, so unsampled internal links are omitted.

Main entry points: [`editor/app/src/renderer/src/App.tsx`](https://github.com/krishnazawar/levelcraft/blob/master/editor/app/src/renderer/src/App.tsx) (Editor UI), [`orchestrator/internal/orchestrator/orchestrator.go`](https://github.com/krishnazawar/levelcraft/blob/master/orchestrator/internal/orchestrator/orchestrator.go) (Orchestrator), [`builder/backend/cmd/main.go`](https://github.com/krishnazawar/levelcraft/blob/master/builder/backend/cmd/main.go) (Builder Service), [`builder/backend/internal/gamestatemanager/gamestate_manager.go`](https://github.com/krishnazawar/levelcraft/blob/master/builder/backend/internal/gamestatemanager/gamestate_manager.go) (Runtime Game State)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_app["Application Lifecycle"]
  node_orchestrator["Orchestrator<br/>[orchestrator.go]"]
  node_control_api["Control API<br/>[server.go]"]
  node_process_executor["Process Executor"]
end

subgraph group_editor["Game Authoring"]
  node_editor_ui["Editor UI<br/>[App.tsx]"]
  node_editor_shell["Editor Workspace<br/>[EditorShell.tsx]"]
  node_project_home["Project Home<br/>[Home.tsx]"]
  node_editor_state["Editor State<br/>[editorStore.ts]"]
  node_project_state["Project State<br/>[projectStore.ts]"]
  node_run_state["Run State<br/>[runStore.ts]"]
  node_editor_api["Editor Game API<br/>[gameApi.ts]"]
  node_editor_backend["Editor Backend<br/>[router.go]"]
  node_authoring_handlers["Authoring Handlers"]
  node_editor_game_state[("Editor Game State")]
end

subgraph group_builder["Game Runtime"]
  node_builder_player["Builder Player<br/>[App.tsx]"]
  node_runtime_state["Runtime Client State<br/>[runtimeStore.ts]"]
  node_builder_service["Builder Service<br/>[main.go]"]
  node_input_manager["Input Manager<br/>[input_manager.go]"]
  node_runtime_state_store[("Runtime Game State")]
  node_event_manager["Event Manager<br/>[event_manager.go]"]
end

subgraph group_domain["Game Domain"]
  node_game_objects["Game Objects<br/>[gameobject.go]"]
  node_components["Components"]
  node_input_schema["Input Schema<br/>[schema.go]"]
end

node_creator(("Creator"))

node_creator -->|"starts application"| node_orchestrator
node_orchestrator -->|"starts processes"| node_process_executor
node_orchestrator -->|"starts editor"| node_editor_backend
node_editor_ui -->|"requests game run"| node_control_api
node_control_api -->|"dispatches run request"| node_orchestrator
node_orchestrator -->|"starts builder"| node_builder_service
node_creator -->|"authors game"| node_editor_ui
node_editor_ui -->|"shows workspace"| node_editor_shell
node_editor_ui -->|"shows when closed"| node_project_home
node_editor_ui -->|"resets state"| node_editor_state
node_editor_ui -->|"stops game"| node_run_state
node_editor_backend -->|"routes requests"| node_authoring_handlers
node_authoring_handlers -->|"updates scene"| node_editor_game_state
node_editor_game_state -->|"builds scene objects"| node_game_objects
node_creator -->|"plays game"| node_builder_player
node_builder_player -->|"uses runtime state"| node_runtime_state
node_builder_service -->|"loads mapping"| node_input_manager
node_builder_service -->|"loads scene"| node_runtime_state_store
node_builder_service -->|"starts game loop"| node_event_manager
node_runtime_state_store -->|"builds scene objects"| node_game_objects
node_runtime_state_store -->|"creates component registry"| node_components
node_input_manager -->|"loads input mapping"| node_input_schema
node_components -->|"uses input definitions"| node_input_schema
node_creator -->|"iterates project"| node_editor_ui

click node_orchestrator "https://github.com/krishnazawar/levelcraft/blob/master/orchestrator/internal/orchestrator/orchestrator.go"
click node_control_api "https://github.com/krishnazawar/levelcraft/blob/master/orchestrator/internal/server/server.go"
click node_process_executor "https://github.com/krishnazawar/levelcraft/tree/master/orchestrator/internal/executor"
click node_editor_ui "https://github.com/krishnazawar/levelcraft/blob/master/editor/app/src/renderer/src/App.tsx"
click node_editor_shell "https://github.com/krishnazawar/levelcraft/blob/master/editor/app/src/renderer/src/views/EditorShell.tsx"
click node_project_home "https://github.com/krishnazawar/levelcraft/blob/master/editor/app/src/renderer/src/views/Home.tsx"
click node_editor_state "https://github.com/krishnazawar/levelcraft/blob/master/editor/app/src/renderer/src/store/editorStore.ts"
click node_project_state "https://github.com/krishnazawar/levelcraft/blob/master/editor/app/src/renderer/src/store/projectStore.ts"
click node_run_state "https://github.com/krishnazawar/levelcraft/blob/master/editor/app/src/renderer/src/store/runStore.ts"
click node_editor_api "https://github.com/krishnazawar/levelcraft/blob/master/editor/app/src/renderer/src/api/gameApi.ts"
click node_editor_backend "https://github.com/krishnazawar/levelcraft/blob/master/editor/backend/internal/router/router.go"
click node_authoring_handlers "https://github.com/krishnazawar/levelcraft/tree/master/editor/backend/internal/handler"
click node_editor_game_state "https://github.com/krishnazawar/levelcraft/blob/master/editor/backend/internal/gamestatemanager/gamestate_manager.go"
click node_builder_player "https://github.com/krishnazawar/levelcraft/blob/master/builder/app/src/renderer/src/App.tsx"
click node_runtime_state "https://github.com/krishnazawar/levelcraft/blob/master/builder/app/src/renderer/src/store/runtimeStore.ts"
click node_builder_service "https://github.com/krishnazawar/levelcraft/blob/master/builder/backend/cmd/main.go"
click node_input_manager "https://github.com/krishnazawar/levelcraft/blob/master/builder/backend/internal/inputmanager/input_manager.go"
click node_runtime_state_store "https://github.com/krishnazawar/levelcraft/blob/master/builder/backend/internal/gamestatemanager/gamestate_manager.go"
click node_event_manager "https://github.com/krishnazawar/levelcraft/blob/master/builder/backend/internal/eventmanager/event_manager.go"
click node_game_objects "https://github.com/krishnazawar/levelcraft/blob/master/utils/gameobject/gameobject.go"
click node_components "https://github.com/krishnazawar/levelcraft/tree/master/utils/component"
click node_input_schema "https://github.com/krishnazawar/levelcraft/blob/master/utils/input/schema.go"

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_orchestrator,node_control_api,node_process_executor toneBlue
class node_editor_ui,node_editor_shell,node_project_home,node_editor_state,node_project_state,node_run_state,node_editor_api,node_editor_backend,node_authoring_handlers,node_editor_game_state toneAmber
class node_builder_player,node_runtime_state,node_builder_service,node_input_manager,node_runtime_state_store,node_event_manager toneMint
class node_game_objects,node_components,node_input_schema toneRose
class node_creator toneIndigo
```

## Components

### Application Lifecycle

- [Orchestrator](https://github.com/krishnazawar/levelcraft/blob/master/orchestrator/internal/orchestrator/orchestrator.go): `orchestrator/internal/orchestrator/orchestrator.go`
- [Control API](https://github.com/krishnazawar/levelcraft/blob/master/orchestrator/internal/server/server.go): `orchestrator/internal/server/server.go`
- [Process Executor](https://github.com/krishnazawar/levelcraft/tree/master/orchestrator/internal/executor): `orchestrator/internal/executor`

### Game Authoring

- [Editor UI](https://github.com/krishnazawar/levelcraft/blob/master/editor/app/src/renderer/src/App.tsx): `editor/app/src/renderer/src/App.tsx`
- [Editor Workspace](https://github.com/krishnazawar/levelcraft/blob/master/editor/app/src/renderer/src/views/EditorShell.tsx): `editor/app/src/renderer/src/views/EditorShell.tsx`
- [Project Home](https://github.com/krishnazawar/levelcraft/blob/master/editor/app/src/renderer/src/views/Home.tsx): `editor/app/src/renderer/src/views/Home.tsx`
- [Editor State](https://github.com/krishnazawar/levelcraft/blob/master/editor/app/src/renderer/src/store/editorStore.ts): `editor/app/src/renderer/src/store/editorStore.ts`
- [Project State](https://github.com/krishnazawar/levelcraft/blob/master/editor/app/src/renderer/src/store/projectStore.ts): `editor/app/src/renderer/src/store/projectStore.ts`
- [Run State](https://github.com/krishnazawar/levelcraft/blob/master/editor/app/src/renderer/src/store/runStore.ts): `editor/app/src/renderer/src/store/runStore.ts`
- [Editor Game API](https://github.com/krishnazawar/levelcraft/blob/master/editor/app/src/renderer/src/api/gameApi.ts): `editor/app/src/renderer/src/api/gameApi.ts`
- [Editor Backend](https://github.com/krishnazawar/levelcraft/blob/master/editor/backend/internal/router/router.go): `editor/backend/internal/router/router.go`
- [Authoring Handlers](https://github.com/krishnazawar/levelcraft/tree/master/editor/backend/internal/handler): `editor/backend/internal/handler`
- [Editor Game State](https://github.com/krishnazawar/levelcraft/blob/master/editor/backend/internal/gamestatemanager/gamestate_manager.go): `editor/backend/internal/gamestatemanager/gamestate_manager.go`

### Game Runtime

- [Builder Player](https://github.com/krishnazawar/levelcraft/blob/master/builder/app/src/renderer/src/App.tsx): `builder/app/src/renderer/src/App.tsx`
- [Runtime Client State](https://github.com/krishnazawar/levelcraft/blob/master/builder/app/src/renderer/src/store/runtimeStore.ts): `builder/app/src/renderer/src/store/runtimeStore.ts`
- [Builder Service](https://github.com/krishnazawar/levelcraft/blob/master/builder/backend/cmd/main.go): `builder/backend/cmd/main.go`
- [Input Manager](https://github.com/krishnazawar/levelcraft/blob/master/builder/backend/internal/inputmanager/input_manager.go): `builder/backend/internal/inputmanager/input_manager.go`
- [Runtime Game State](https://github.com/krishnazawar/levelcraft/blob/master/builder/backend/internal/gamestatemanager/gamestate_manager.go): `builder/backend/internal/gamestatemanager/gamestate_manager.go`
- [Event Manager](https://github.com/krishnazawar/levelcraft/blob/master/builder/backend/internal/eventmanager/event_manager.go): `builder/backend/internal/eventmanager/event_manager.go`

### Game Domain

- [Game Objects](https://github.com/krishnazawar/levelcraft/blob/master/utils/gameobject/gameobject.go): `utils/gameobject/gameobject.go`
- [Components](https://github.com/krishnazawar/levelcraft/tree/master/utils/component): `utils/component`
- [Input Schema](https://github.com/krishnazawar/levelcraft/blob/master/utils/input/schema.go): `utils/input/schema.go`

### Other components

- **Creator**

## Connections

- Creator → Orchestrator: starts application
- Orchestrator → Process Executor: starts processes (evidence: `orchestrator/internal/orchestrator/orchestrator.go`)
- Orchestrator → Editor Backend: starts editor
- Editor UI → Control API: requests game run
- Control API → Orchestrator: dispatches run request (evidence: `orchestrator/internal/server/server.go`)
- Orchestrator → Builder Service: starts builder (evidence: `orchestrator/internal/orchestrator/orchestrator.go`)
- Creator → Editor UI: authors game
- Editor UI → Editor Workspace: shows workspace (evidence: `editor/app/src/renderer/src/App.tsx`)
- Editor UI → Project Home: shows when closed (evidence: `editor/app/src/renderer/src/App.tsx`)
- Editor UI → Editor State: resets state (evidence: `editor/app/src/renderer/src/App.tsx`)
- Editor UI → Run State: stops game (evidence: `editor/app/src/renderer/src/App.tsx`)
- Editor Backend → Authoring Handlers: routes requests (evidence: `editor/backend/internal/router/router.go`)
- Authoring Handlers → Editor Game State: updates scene (evidence: `editor/backend/internal/handler/gameobject_handler.go`)
- Editor Game State → Game Objects: builds scene objects (evidence: `editor/backend/internal/gamestatemanager/gamestate_manager.go`)
- Creator → Builder Player: plays game
- Builder Player → Runtime Client State: uses runtime state (evidence: `builder/app/src/renderer/src/App.tsx`)
- Builder Service → Input Manager: loads mapping (evidence: `builder/backend/cmd/main.go`)
- Builder Service → Runtime Game State: loads scene (evidence: `builder/backend/cmd/main.go`)
- Builder Service → Event Manager: starts game loop (evidence: `builder/backend/cmd/main.go`)
- Runtime Game State → Game Objects: builds scene objects (evidence: `builder/backend/internal/gamestatemanager/gamestate_manager.go`)
- Runtime Game State → Components: creates component registry (evidence: `builder/backend/internal/gamestatemanager/gamestate_manager.go`)
- Input Manager → Input Schema: loads input mapping (evidence: `builder/backend/internal/inputmanager/input_manager.go`)
- Components → Input Schema: uses input definitions (evidence: `utils/component/internal/movement/input_movement.go`)
- Creator → Editor UI: iterates project
