# roborisendev/entryjs architecture

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

- Interactive diagram: https://gitdiagram.com/roborisendev/entryjs
- Repository: https://github.com/roborisendev/entryjs

## Overview

EntryJS is a browser-based visual programming environment. A user initializes a workspace, edits a project with blocks and objects, then runs it in the engine; projects can also be loaded and exported. The repository includes text-to-block conversion, graphics and image resources, AI learning/use blocks, and hardware integrations. Relationships among unsampled subsystems are omitted or marked unverified; the atlas and engine links below are supported by excerpts or the source index.

Main entry points: [`src/class/pixi/atlas/PIXIAtlasManager.ts`](https://github.com/roborisendev/entryjs/blob/develop/src/class/pixi/atlas/PIXIAtlasManager.ts) (Resource Manager), [`src/textcoding/parser.js`](https://github.com/roborisendev/entryjs/blob/develop/src/textcoding/parser.js) (Text Parser), [`src/playground`](https://github.com/roborisendev/entryjs/tree/develop/src/playground) (Block Workspace), [`src/entry.js`](https://github.com/roborisendev/entryjs/blob/develop/src/entry.js) (Entry API)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_workspace["Workspace Editing"]
  node_entry["Entry API<br/>[entry.js]"]
  node_playground["Block Workspace"]
  node_blocks["Block Definitions"]
end

subgraph group_runtime["Project Runtime"]
  node_project["Project State<br/>[project.js]"]
  node_engine["Execution Engine<br/>[engine.js]"]
  node_events["Event System<br/>[event.js]"]
end

subgraph group_graphics["Graphics Resources"]
  node_graphic["Graphic Engine<br/>[GEHelper.ts]"]
  node_resources["Resource Manager"]
  node_image_loader["Image Loader"]
  node_loading_info["Image Load State"]
  node_atlas_helper["Atlas Helpers<br/>[PIXIAtlasHelper.ts]"]
  node_scene_textures["Scene Textures<br/>[SceneBins.ts]"]
  node_texture_options["Texture Options"]
  node_image_rect["Image Geometry<br/>[ImageRect.ts]"]
  node_packer["Atlas Packing<br/>[maxrects_packer.ts]"]
end

subgraph group_coding["Text Coding"]
  node_parser["Text Parser<br/>[parser.js]"]
  node_textblocks["Text Conversion<br/>[jsToBlock.js]"]
  node_pythonblocks["Python Conversion<br/>[pyToBlock.js]"]
end

subgraph group_extensions["AI and Hardware"]
  node_learning["AI Learning"]
  node_ai_blocks["AI Blocks"]
  node_hardware_blocks["Hardware Blocks"]
  node_hardware["Hardware Connectors"]
  node_bluetooth["Bluetooth Services"]
end

node_user(("Workspace User"))

node_user -->|"initializes"| node_entry
node_entry -.->|"injects workspace"| node_playground
node_user -.->|"edits project"| node_playground
node_playground -.->|"uses blocks"| node_blocks
node_user -->|"loads or exports"| node_project
node_user -->|"runs project"| node_engine
node_engine -->|"uses"| node_graphic
node_user -.->|"converts text"| node_parser
node_parser -->|"calls conversion"| node_textblocks
node_parser -->|"calls conversion"| node_pythonblocks
node_graphic -.->|"uses resources"| node_resources
node_resources -->|"creates scenes"| node_scene_textures
node_resources -->|"creates loader"| node_image_loader
node_resources -->|"configures"| node_texture_options
node_resources -->|"adds loaded image"| node_scene_textures
node_image_loader -->|"creates load state"| node_loading_info
node_loading_info -->|"resolves image path"| node_atlas_helper
node_atlas_helper -->|"creates geometry"| node_image_rect
node_texture_options -->|"creates packer"| node_packer
node_user -.->|"uses AI learning"| node_learning
node_ai_blocks -.->|"invokes models"| node_learning
node_user -.->|"selects hardware blocks"| node_hardware_blocks
node_hardware_blocks -.->|"dispatches device actions"| node_hardware
node_hardware -.->|"uses services"| node_bluetooth

click node_entry "https://github.com/roborisendev/entryjs/blob/develop/src/entry.js"
click node_playground "https://github.com/roborisendev/entryjs/tree/develop/src/playground"
click node_blocks "https://github.com/roborisendev/entryjs/tree/develop/src/playground/blocks"
click node_project "https://github.com/roborisendev/entryjs/blob/develop/src/class/project.js"
click node_engine "https://github.com/roborisendev/entryjs/blob/develop/src/class/engine.js"
click node_events "https://github.com/roborisendev/entryjs/blob/develop/src/core/event.js"
click node_parser "https://github.com/roborisendev/entryjs/blob/develop/src/textcoding/parser.js"
click node_textblocks "https://github.com/roborisendev/entryjs/blob/develop/src/textcoding/parser/core/text/jsToBlock.js"
click node_pythonblocks "https://github.com/roborisendev/entryjs/blob/develop/src/textcoding/parser/core/text/pyToBlock.js"
click node_graphic "https://github.com/roborisendev/entryjs/blob/develop/src/graphicEngine/GEHelper.ts"
click node_resources "https://github.com/roborisendev/entryjs/blob/develop/src/class/pixi/atlas/PIXIAtlasManager.ts"
click node_image_loader "https://github.com/roborisendev/entryjs/blob/develop/src/class/pixi/atlas/loader/AtlasImageLoader.ts"
click node_loading_info "https://github.com/roborisendev/entryjs/blob/develop/src/class/pixi/atlas/loader/AtlasImageLoadingInfo.ts"
click node_atlas_helper "https://github.com/roborisendev/entryjs/blob/develop/src/class/pixi/atlas/PIXIAtlasHelper.ts"
click node_scene_textures "https://github.com/roborisendev/entryjs/blob/develop/src/class/pixi/atlas/SceneBins.ts"
click node_texture_options "https://github.com/roborisendev/entryjs/blob/develop/src/class/pixi/atlas/EntryTextureOption.ts"
click node_image_rect "https://github.com/roborisendev/entryjs/blob/develop/src/class/maxrect-packer/geom/ImageRect.ts"
click node_packer "https://github.com/roborisendev/entryjs/blob/develop/src/class/maxrect-packer/maxrects_packer.ts"
click node_learning "https://github.com/roborisendev/entryjs/tree/develop/src/class/learning"
click node_ai_blocks "https://github.com/roborisendev/entryjs/tree/develop/src/playground/blocks"
click node_hardware_blocks "https://github.com/roborisendev/entryjs/tree/develop/src/playground/blocks/hardware"
click node_hardware "https://github.com/roborisendev/entryjs/tree/develop/src/class/hardware"
click node_bluetooth "https://github.com/roborisendev/entryjs/tree/develop/src/class/hardware/bluetoothServices"

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_entry,node_playground,node_blocks,node_user toneBlue
class node_project,node_engine,node_events toneAmber
class node_graphic,node_resources,node_image_loader,node_loading_info,node_atlas_helper,node_scene_textures,node_texture_options,node_image_rect,node_packer toneMint
class node_parser,node_textblocks,node_pythonblocks toneRose
class node_learning,node_ai_blocks,node_hardware_blocks,node_hardware,node_bluetooth toneIndigo
```

## Components

### Workspace Editing

- [Entry API](https://github.com/roborisendev/entryjs/blob/develop/src/entry.js): `src/entry.js`
- [Block Workspace](https://github.com/roborisendev/entryjs/tree/develop/src/playground): `src/playground`
- [Block Definitions](https://github.com/roborisendev/entryjs/tree/develop/src/playground/blocks): `src/playground/blocks`

### Project Runtime

- [Project State](https://github.com/roborisendev/entryjs/blob/develop/src/class/project.js): `src/class/project.js`
- [Execution Engine](https://github.com/roborisendev/entryjs/blob/develop/src/class/engine.js): `src/class/engine.js`
- [Event System](https://github.com/roborisendev/entryjs/blob/develop/src/core/event.js): `src/core/event.js`

### Graphics Resources

- [Graphic Engine](https://github.com/roborisendev/entryjs/blob/develop/src/graphicEngine/GEHelper.ts): `src/graphicEngine/GEHelper.ts`
- [Resource Manager](https://github.com/roborisendev/entryjs/blob/develop/src/class/pixi/atlas/PIXIAtlasManager.ts): `src/class/pixi/atlas/PIXIAtlasManager.ts`
- [Image Loader](https://github.com/roborisendev/entryjs/blob/develop/src/class/pixi/atlas/loader/AtlasImageLoader.ts): `src/class/pixi/atlas/loader/AtlasImageLoader.ts`
- [Image Load State](https://github.com/roborisendev/entryjs/blob/develop/src/class/pixi/atlas/loader/AtlasImageLoadingInfo.ts): `src/class/pixi/atlas/loader/AtlasImageLoadingInfo.ts`
- [Atlas Helpers](https://github.com/roborisendev/entryjs/blob/develop/src/class/pixi/atlas/PIXIAtlasHelper.ts): `src/class/pixi/atlas/PIXIAtlasHelper.ts`
- [Scene Textures](https://github.com/roborisendev/entryjs/blob/develop/src/class/pixi/atlas/SceneBins.ts): `src/class/pixi/atlas/SceneBins.ts`
- [Texture Options](https://github.com/roborisendev/entryjs/blob/develop/src/class/pixi/atlas/EntryTextureOption.ts): `src/class/pixi/atlas/EntryTextureOption.ts`
- [Image Geometry](https://github.com/roborisendev/entryjs/blob/develop/src/class/maxrect-packer/geom/ImageRect.ts): `src/class/maxrect-packer/geom/ImageRect.ts`
- [Atlas Packing](https://github.com/roborisendev/entryjs/blob/develop/src/class/maxrect-packer/maxrects_packer.ts): `src/class/maxrect-packer/maxrects_packer.ts`

### Text Coding

- [Text Parser](https://github.com/roborisendev/entryjs/blob/develop/src/textcoding/parser.js): `src/textcoding/parser.js`
- [Text Conversion](https://github.com/roborisendev/entryjs/blob/develop/src/textcoding/parser/core/text/jsToBlock.js): `src/textcoding/parser/core/text/jsToBlock.js`
- [Python Conversion](https://github.com/roborisendev/entryjs/blob/develop/src/textcoding/parser/core/text/pyToBlock.js): `src/textcoding/parser/core/text/pyToBlock.js`

### AI and Hardware

- [AI Learning](https://github.com/roborisendev/entryjs/tree/develop/src/class/learning): `src/class/learning`
- [AI Blocks](https://github.com/roborisendev/entryjs/tree/develop/src/playground/blocks): `src/playground/blocks`
- [Hardware Blocks](https://github.com/roborisendev/entryjs/tree/develop/src/playground/blocks/hardware): `src/playground/blocks/hardware`
- [Hardware Connectors](https://github.com/roborisendev/entryjs/tree/develop/src/class/hardware): `src/class/hardware`
- [Bluetooth Services](https://github.com/roborisendev/entryjs/tree/develop/src/class/hardware/bluetoothServices): `src/class/hardware/bluetoothServices`

### Other components

- **Workspace User**

## Connections

- Workspace User → Entry API: initializes (evidence: `README.md`)
- Entry API → Block Workspace: injects workspace
- Workspace User → Block Workspace: edits project
- Block Workspace → Block Definitions: uses blocks
- Workspace User → Project State: loads or exports (evidence: `README.md`)
- Workspace User → Execution Engine: runs project (evidence: `README.md`)
- Execution Engine → Graphic Engine: uses (evidence: `src/class/engine.js`)
- Workspace User → Text Parser: converts text
- Text Parser → Text Conversion: calls conversion (evidence: `src/textcoding/parser.js`)
- Text Parser → Python Conversion: calls conversion (evidence: `src/textcoding/parser.js`)
- Graphic Engine → Resource Manager: uses resources
- Resource Manager → Scene Textures: creates scenes (evidence: `src/class/pixi/atlas/PIXIAtlasManager.ts`)
- Resource Manager → Image Loader: creates loader (evidence: `src/class/pixi/atlas/PIXIAtlasManager.ts`)
- Resource Manager → Texture Options: configures (evidence: `src/class/pixi/atlas/PIXIAtlasManager.ts`)
- Resource Manager → Scene Textures: adds loaded image (evidence: `src/class/pixi/atlas/PIXIAtlasManager.ts`)
- Image Loader → Image Load State: creates load state (evidence: `src/class/pixi/atlas/loader/AtlasImageLoader.ts`)
- Image Load State → Atlas Helpers: resolves image path (evidence: `src/class/pixi/atlas/loader/AtlasImageLoadingInfo.ts`)
- Atlas Helpers → Image Geometry: creates geometry (evidence: `src/class/pixi/atlas/PIXIAtlasHelper.ts`)
- Texture Options → Atlas Packing: creates packer (evidence: `src/class/pixi/atlas/EntryTextureOption.ts`)
- Workspace User → AI Learning: uses AI learning
- AI Blocks → AI Learning: invokes models
- Workspace User → Hardware Blocks: selects hardware blocks
- Hardware Blocks → Hardware Connectors: dispatches device actions
- Hardware Connectors → Bluetooth Services: uses services (evidence: `src/class/hardware/bluetoothServices/service-helper.ts`)
