# pactolis/pactolis-chart-engine architecture

> Architecture diagram of the GitHub repository pactolis/pactolis-chart-engine, 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/pactolis/pactolis-chart-engine
- Repository: https://github.com/pactolis/pactolis-chart-engine

## Overview

Pactolis Chart Engine is a framework-independent canvas charting library: a host supplies market data, settings, locale and callbacks; chart components turn that input into footprint/candlestick views with indicators, heatmaps and drawing tools. The principal workflow is host-provided history and trades, aggregation and repair into chart series, then view/rendering. Analysis, replay, indicators and user interaction are distinct capabilities. Relationships below follow README statements and indexed imports/calls; unsampled subsystems are represented without asserting undocumented wiring.

Main entry points: [`src/core/model/footprint.ts`](https://github.com/pactolis/pactolis-chart-engine/blob/main/src/core/model/footprint.ts) (Footprint Series), [`src/core/engine/view.ts`](https://github.com/pactolis/pactolis-chart-engine/blob/main/src/core/engine/view.ts) (Chart View Model), [`src/features/chart/ChartDataPipeline.ts`](https://github.com/pactolis/pactolis-chart-engine/blob/main/src/features/chart/ChartDataPipeline.ts) (Data Pipeline), [`src/features/chart/chartDataSource.ts`](https://github.com/pactolis/pactolis-chart-engine/blob/main/src/features/chart/chartDataSource.ts) (Data Source Port)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_chart_data["Chart Data"]
  node_runtime["Chart Runtime<br/>[ChartRuntime.ts]"]
  node_history["History Controller"]
  node_pipeline["Data Pipeline"]
  node_source["Data Source Port<br/>[chartDataSource.ts]"]
  node_repair["Live Trade Repair"]
end

subgraph group_domain["Market Analysis"]
  node_footprint["Footprint Series<br/>[footprint.ts]"]
  node_analysis["Market Analysis"]
  node_analysis_context["Analysis Context<br/>[analysisContext.ts]"]
end

subgraph group_visuals["Chart Visualization"]
  node_view["Chart View Model<br/>[view.ts]"]
  node_overlay["Canvas Renderer<br/>[overlay.ts]"]
  node_scene["Chart Scene<br/>[chartScene.ts]"]
  node_gpu["GPU Rendering<br/>[gpuBackend.ts]"]
end

subgraph group_extensions["Chart Features"]
  node_indicators["Indicator Manager"]
  node_indicator_catalog["Built-in Indicators"]
  node_orderbook["Orderbook Heatmap<br/>[heatmapModel.ts]"]
  node_drawings["Drawing Tools<br/>[drawingManager.ts]"]
  node_replay["Replay Controller"]
  node_viewport["Viewport Controller"]
  node_telemetry["Performance Telemetry"]
end

node_host(("Host Application"))
node_market_data(("Market Data Services"))

node_host -->|"configures data"| node_source
node_host -->|"mounts charts"| node_runtime
node_host -->|"supplies data"| node_market_data
node_history -->|"uses pipeline"| node_pipeline
node_history -->|"reads history"| node_source
node_pipeline -->|"fetches history"| node_source
node_repair -->|"fetches repairs"| node_source
node_pipeline -.->|"updates series"| node_footprint
node_footprint -.->|"provides bars"| node_analysis
node_analysis_context -->|"types analysis"| node_analysis
node_view -.->|"maps chart data"| node_footprint
node_overlay -->|"renders view"| node_view
node_overlay -->|"renders bars"| node_footprint
node_scene -.->|"composes rendering"| node_overlay
node_indicators -->|"uses view"| node_view
node_indicators -->|"loads registry"| node_indicator_catalog
node_orderbook -.->|"renders heatmap"| node_gpu
node_drawings -->|"draws objects"| node_view
node_drawings -->|"draws analysis"| node_analysis
node_replay -.->|"controls replay data"| node_footprint
node_viewport -->|"adjusts viewport"| node_view
node_runtime -.->|"coordinates history"| node_history
node_runtime -.->|"coordinates rendering"| node_scene
node_telemetry -.->|"measures work"| node_pipeline

click node_runtime "https://github.com/pactolis/pactolis-chart-engine/blob/main/src/features/chart/ChartRuntime.ts"
click node_history "https://github.com/pactolis/pactolis-chart-engine/blob/main/src/features/chart/ChartHistoryController.ts"
click node_pipeline "https://github.com/pactolis/pactolis-chart-engine/blob/main/src/features/chart/ChartDataPipeline.ts"
click node_source "https://github.com/pactolis/pactolis-chart-engine/blob/main/src/features/chart/chartDataSource.ts"
click node_repair "https://github.com/pactolis/pactolis-chart-engine/blob/main/src/features/chart/LiveTradeRepairController.ts"
click node_footprint "https://github.com/pactolis/pactolis-chart-engine/blob/main/src/core/model/footprint.ts"
click node_analysis "https://github.com/pactolis/pactolis-chart-engine/tree/main/src/core/analysis"
click node_analysis_context "https://github.com/pactolis/pactolis-chart-engine/blob/main/src/core/analysisContext.ts"
click node_view "https://github.com/pactolis/pactolis-chart-engine/blob/main/src/core/engine/view.ts"
click node_overlay "https://github.com/pactolis/pactolis-chart-engine/blob/main/src/core/render/overlay.ts"
click node_scene "https://github.com/pactolis/pactolis-chart-engine/blob/main/src/core/render/scene/chartScene.ts"
click node_gpu "https://github.com/pactolis/pactolis-chart-engine/blob/main/src/core/gpu/gpuBackend.ts"
click node_indicators "https://github.com/pactolis/pactolis-chart-engine/blob/main/src/features/indicators/IndicatorManager.ts"
click node_indicator_catalog "https://github.com/pactolis/pactolis-chart-engine/tree/main/src/features/indicators/builtins"
click node_orderbook "https://github.com/pactolis/pactolis-chart-engine/blob/main/src/features/orderbook/heatmapModel.ts"
click node_drawings "https://github.com/pactolis/pactolis-chart-engine/blob/main/src/features/drawings/drawingManager.ts"
click node_replay "https://github.com/pactolis/pactolis-chart-engine/blob/main/src/features/replay/replayController.ts"
click node_viewport "https://github.com/pactolis/pactolis-chart-engine/blob/main/src/features/controllers/timeScaleViewportController.ts"
click node_telemetry "https://github.com/pactolis/pactolis-chart-engine/blob/main/src/core/performanceTelemetry.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_runtime,node_history,node_pipeline,node_source,node_repair toneBlue
class node_footprint,node_analysis,node_analysis_context toneAmber
class node_view,node_overlay,node_scene,node_gpu toneMint
class node_indicators,node_indicator_catalog,node_orderbook,node_drawings,node_replay,node_viewport,node_telemetry toneRose
class node_host,node_market_data toneIndigo
```

## Components

### Chart Data

- [Chart Runtime](https://github.com/pactolis/pactolis-chart-engine/blob/main/src/features/chart/ChartRuntime.ts): `src/features/chart/ChartRuntime.ts`
- [History Controller](https://github.com/pactolis/pactolis-chart-engine/blob/main/src/features/chart/ChartHistoryController.ts): `src/features/chart/ChartHistoryController.ts`
- [Data Pipeline](https://github.com/pactolis/pactolis-chart-engine/blob/main/src/features/chart/ChartDataPipeline.ts): `src/features/chart/ChartDataPipeline.ts`
- [Data Source Port](https://github.com/pactolis/pactolis-chart-engine/blob/main/src/features/chart/chartDataSource.ts): `src/features/chart/chartDataSource.ts`
- [Live Trade Repair](https://github.com/pactolis/pactolis-chart-engine/blob/main/src/features/chart/LiveTradeRepairController.ts): `src/features/chart/LiveTradeRepairController.ts`

### Market Analysis

- [Footprint Series](https://github.com/pactolis/pactolis-chart-engine/blob/main/src/core/model/footprint.ts): `src/core/model/footprint.ts`
- [Market Analysis](https://github.com/pactolis/pactolis-chart-engine/tree/main/src/core/analysis): `src/core/analysis`
- [Analysis Context](https://github.com/pactolis/pactolis-chart-engine/blob/main/src/core/analysisContext.ts): `src/core/analysisContext.ts`

### Chart Visualization

- [Chart View Model](https://github.com/pactolis/pactolis-chart-engine/blob/main/src/core/engine/view.ts): `src/core/engine/view.ts`
- [Canvas Renderer](https://github.com/pactolis/pactolis-chart-engine/blob/main/src/core/render/overlay.ts): `src/core/render/overlay.ts`
- [Chart Scene](https://github.com/pactolis/pactolis-chart-engine/blob/main/src/core/render/scene/chartScene.ts): `src/core/render/scene/chartScene.ts`
- [GPU Rendering](https://github.com/pactolis/pactolis-chart-engine/blob/main/src/core/gpu/gpuBackend.ts): `src/core/gpu/gpuBackend.ts`

### Chart Features

- [Indicator Manager](https://github.com/pactolis/pactolis-chart-engine/blob/main/src/features/indicators/IndicatorManager.ts): `src/features/indicators/IndicatorManager.ts`
- [Built-in Indicators](https://github.com/pactolis/pactolis-chart-engine/tree/main/src/features/indicators/builtins): `src/features/indicators/builtins`
- [Orderbook Heatmap](https://github.com/pactolis/pactolis-chart-engine/blob/main/src/features/orderbook/heatmapModel.ts): `src/features/orderbook/heatmapModel.ts`
- [Drawing Tools](https://github.com/pactolis/pactolis-chart-engine/blob/main/src/features/drawings/drawingManager.ts): `src/features/drawings/drawingManager.ts`
- [Replay Controller](https://github.com/pactolis/pactolis-chart-engine/blob/main/src/features/replay/replayController.ts): `src/features/replay/replayController.ts`
- [Viewport Controller](https://github.com/pactolis/pactolis-chart-engine/blob/main/src/features/controllers/timeScaleViewportController.ts): `src/features/controllers/timeScaleViewportController.ts`
- [Performance Telemetry](https://github.com/pactolis/pactolis-chart-engine/blob/main/src/core/performanceTelemetry.ts): `src/core/performanceTelemetry.ts`

### Other components

- **Host Application**
- **Market Data Services**

## Connections

- Host Application → Data Source Port: configures data (evidence: `README.md`)
- Host Application → Chart Runtime: mounts charts (evidence: `README.md`)
- Host Application → Market Data Services: supplies data (evidence: `README.md`)
- History Controller → Data Pipeline: uses pipeline (evidence: `src/features/chart/ChartHistoryController.ts`)
- History Controller → Data Source Port: reads history (evidence: `src/features/chart/ChartHistoryController.ts`)
- Data Pipeline → Data Source Port: fetches history (evidence: `src/features/chart/ChartDataPipeline.ts`)
- Live Trade Repair → Data Source Port: fetches repairs (evidence: `src/features/chart/LiveTradeRepairController.ts`)
- Data Pipeline → Footprint Series: updates series (evidence: `src/features/chart/ChartDataPipeline.ts`)
- Footprint Series → Market Analysis: provides bars (evidence: `src/core/model/footprint.ts`)
- Analysis Context → Market Analysis: types analysis (evidence: `src/core/analysisContext.ts`)
- Chart View Model → Footprint Series: maps chart data
- Canvas Renderer → Chart View Model: renders view (evidence: `src/core/render/overlay.ts`)
- Canvas Renderer → Footprint Series: renders bars (evidence: `src/core/render/overlay.ts`)
- Chart Scene → Canvas Renderer: composes rendering
- Indicator Manager → Chart View Model: uses view (evidence: `src/features/indicators/IndicatorManager.ts`)
- Indicator Manager → Built-in Indicators: loads registry (evidence: `src/features/indicators/IndicatorManager.ts`)
- Orderbook Heatmap → GPU Rendering: renders heatmap
- Drawing Tools → Chart View Model: draws objects (evidence: `src/features/drawings/drawingManager.ts`)
- Drawing Tools → Market Analysis: draws analysis (evidence: `src/features/drawings/drawingManager.ts`)
- Replay Controller → Footprint Series: controls replay data
- Viewport Controller → Chart View Model: adjusts viewport (evidence: `src/features/controllers/timeScaleViewportController.ts`)
- Chart Runtime → History Controller: coordinates history
- Chart Runtime → Chart Scene: coordinates rendering
- Performance Telemetry → Data Pipeline: measures work (evidence: `src/features/chart/ChartDataPipeline.ts`)
