# openingenium/core_server architecture

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

- Interactive diagram: https://gitdiagram.com/openingenium/core_server
- Repository: https://github.com/openingenium/core_server

## Overview

Ingenium Core Server is a stateless REST API for authoring versioned test procedures and managing their execution at test venues. Engineers use it to create procedure structure and typed steps, then create and control executions while tracking status, results, comments, and attachments. The API also supports venue management, version/import-export workflows, search, and live activity events. The README documents sibling-service integrations; sampled controller code confirms that step operations delegate to shared orchestration helpers. Other subsystem links are limited where implementation excerpts were unavailable.

Main entry points: [`api/node_funcs.js`](https://github.com/openingenium/core_server/blob/main/api/node_funcs.js) (Shared Orchestration), [`index.js`](https://github.com/openingenium/core_server/blob/main/index.js) (API Server), [`api/controllers/ProcedureService.js`](https://github.com/openingenium/core_server/blob/main/api/controllers/ProcedureService.js) (Procedure APIs), [`api/controllers/ExecutionService.js`](https://github.com/openingenium/core_server/blob/main/api/controllers/ExecutionService.js) (Execution APIs)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_api["REST API"]
  node_server["API Server<br/>[index.js]"]
  node_orchestration["Shared Orchestration<br/>[node_funcs.js]"]
end

subgraph group_authoring["Procedure Authoring"]
  node_proc_api["Procedure APIs"]
  node_structure["Procedure Structure"]
  node_versions["Procedure Versions"]
  node_search["Search Fields"]
end

subgraph group_execution["Execution"]
  node_exec_api["Execution APIs"]
  node_venue["Venue Management<br/>[VenueService.js]"]
end

subgraph group_content["Steps and Content"]
  node_step_api["Typed Step APIs"]
  node_step_models["Step Definitions"]
end

subgraph group_support["Collaboration and Integration"]
  node_comments["Comments<br/>[CommentService.js]"]
  node_files["File Attachments<br/>[FileService.js]"]
  node_monitor["Execution Monitor"]
  node_archive[("Archive Service")]
  node_execution_svc["Execution Service"]
  node_dictionary[("Dictionary Service")]
  node_file_store[("S3 File Server")]
  node_redis[("Redis")]
end

node_engineer(("Test Engineer"))

node_engineer -->|"sends requests"| node_server
node_server -.->|"routes requests"| node_proc_api
node_server -.->|"routes requests"| node_exec_api
node_server -.->|"routes requests"| node_step_api
node_server -.->|"routes requests"| node_venue
node_server -.->|"routes requests"| node_comments
node_server -.->|"routes requests"| node_files
node_proc_api -.->|"delegates to"| node_orchestration
node_structure -.->|"delegates to"| node_orchestration
node_versions -.->|"delegates to"| node_orchestration
node_exec_api -->|"delegates to"| node_orchestration
node_step_api -->|"delegates to"| node_orchestration
node_step_api -.->|"uses definitions"| node_step_models
node_orchestration -->|"calls"| node_archive
node_orchestration -.->|"calls"| node_execution_svc
node_orchestration -->|"queries"| node_dictionary
node_server -->|"publishes events"| node_monitor
node_files -.->|"stores attachments"| node_file_store
node_orchestration -.->|"coordinates waits"| node_redis
node_search -.->|"supports search"| node_proc_api
node_versions -.->|"persists versions"| node_archive
node_exec_api -.->|"drives executions"| node_execution_svc
node_proc_api -.->|"persists procedures"| node_archive

click node_server "https://github.com/openingenium/core_server/blob/main/index.js"
click node_proc_api "https://github.com/openingenium/core_server/blob/main/api/controllers/ProcedureService.js"
click node_structure "https://github.com/openingenium/core_server/blob/main/api/controllers/ProcedureSectionService.js"
click node_versions "https://github.com/openingenium/core_server/blob/main/api/controllers/Procedure_VersionsService.js"
click node_search "https://github.com/openingenium/core_server/blob/main/api/search_definitions.js"
click node_exec_api "https://github.com/openingenium/core_server/blob/main/api/controllers/ExecutionService.js"
click node_venue "https://github.com/openingenium/core_server/blob/main/api/controllers/VenueService.js"
click node_step_api "https://github.com/openingenium/core_server/tree/main/api/controllers"
click node_step_models "https://github.com/openingenium/core_server/blob/main/api/step_definitions.js"
click node_orchestration "https://github.com/openingenium/core_server/blob/main/api/node_funcs.js"
click node_comments "https://github.com/openingenium/core_server/blob/main/api/controllers/CommentService.js"
click node_files "https://github.com/openingenium/core_server/blob/main/api/controllers/FileService.js"

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_server,node_orchestration toneBlue
class node_proc_api,node_structure,node_versions,node_search toneAmber
class node_exec_api,node_venue toneMint
class node_step_api,node_step_models toneRose
class node_comments,node_files,node_monitor,node_archive,node_execution_svc,node_dictionary,node_file_store,node_redis,node_engineer toneIndigo
```

## Components

### REST API

- [API Server](https://github.com/openingenium/core_server/blob/main/index.js): `index.js`
- [Shared Orchestration](https://github.com/openingenium/core_server/blob/main/api/node_funcs.js): `api/node_funcs.js`

### Procedure Authoring

- [Procedure APIs](https://github.com/openingenium/core_server/blob/main/api/controllers/ProcedureService.js): `api/controllers/ProcedureService.js`
- [Procedure Structure](https://github.com/openingenium/core_server/blob/main/api/controllers/ProcedureSectionService.js): `api/controllers/ProcedureSectionService.js`
- [Procedure Versions](https://github.com/openingenium/core_server/blob/main/api/controllers/Procedure_VersionsService.js): `api/controllers/Procedure_VersionsService.js`
- [Search Fields](https://github.com/openingenium/core_server/blob/main/api/search_definitions.js): `api/search_definitions.js`

### Execution

- [Execution APIs](https://github.com/openingenium/core_server/blob/main/api/controllers/ExecutionService.js): `api/controllers/ExecutionService.js`
- [Venue Management](https://github.com/openingenium/core_server/blob/main/api/controllers/VenueService.js): `api/controllers/VenueService.js`

### Steps and Content

- [Typed Step APIs](https://github.com/openingenium/core_server/tree/main/api/controllers): `api/controllers`
- [Step Definitions](https://github.com/openingenium/core_server/blob/main/api/step_definitions.js): `api/step_definitions.js`

### Collaboration and Integration

- [Comments](https://github.com/openingenium/core_server/blob/main/api/controllers/CommentService.js): `api/controllers/CommentService.js`
- [File Attachments](https://github.com/openingenium/core_server/blob/main/api/controllers/FileService.js): `api/controllers/FileService.js`
- **Execution Monitor**
- **Archive Service**
- **Execution Service**
- **Dictionary Service**
- **S3 File Server**
- **Redis**

### Other components

- **Test Engineer**

## Connections

- Test Engineer → API Server: sends requests
- API Server → Procedure APIs: routes requests
- API Server → Execution APIs: routes requests
- API Server → Typed Step APIs: routes requests
- API Server → Venue Management: routes requests
- API Server → Comments: routes requests
- API Server → File Attachments: routes requests
- Procedure APIs → Shared Orchestration: delegates to (evidence: `api/controllers/ProcedureService.js`)
- Procedure Structure → Shared Orchestration: delegates to (evidence: `api/controllers/ProcedureSectionService.js`)
- Procedure Versions → Shared Orchestration: delegates to (evidence: `api/controllers/Procedure_VersionsService.js`)
- Execution APIs → Shared Orchestration: delegates to (evidence: `api/controllers/ExecutionService.js`)
- Typed Step APIs → Shared Orchestration: delegates to (evidence: `api/controllers/Procedure_QUERY_EVRService.js`)
- Typed Step APIs → Step Definitions: uses definitions
- Shared Orchestration → Archive Service: calls (evidence: `api/node_funcs.js`)
- Shared Orchestration → Execution Service: calls
- Shared Orchestration → Dictionary Service: queries (evidence: `api/node_funcs.js`)
- API Server → Execution Monitor: publishes events (evidence: `index.js`)
- File Attachments → S3 File Server: stores attachments
- Shared Orchestration → Redis: coordinates waits
- Search Fields → Procedure APIs: supports search
- Procedure Versions → Archive Service: persists versions
- Execution APIs → Execution Service: drives executions
- Procedure APIs → Archive Service: persists procedures
