# getarbind/algebrabridge architecture

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

- Interactive diagram: https://gitdiagram.com/getarbind/algebrabridge
- Repository: https://github.com/getarbind/algebrabridge

## Overview

AlgebraBridge is a Grade 7–8 equation-learning app whose main workflow is a learner manipulating an equation in either a balance-scale or symbolic interface, receiving validation and adaptive scaffolding, and reviewing recorded activity. The README also documents instructor analytics and an optional telemetry collector. The supplied tree omits the app and collector source, so those documented components have no supported source path here; the only sampled runtime-related source is the offline analytics script.

Main entry points: [`analytics/analyze.py`](https://github.com/getarbind/algebrabridge/blob/main/analytics/analyze.py) (Benchmark Reports)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_learning["Learning Experience"]
  node_balance["Balance Scale"]
  node_workspace["Equation Workspace"]
end

subgraph group_instruction["Instruction Engine"]
  node_equation_state["Equation State"]
  node_validation["Step Validation"]
  node_problem_suite["Problem Selection"]
  node_scaffolding["Adaptive Scaffolding"]
end

subgraph group_insights["Telemetry and Insights"]
  node_event_log[("Interaction Log")]
  node_dashboard["Instructor Dashboard"]
  node_collector["Telemetry Collector"]
  node_benchmark["Benchmark Reports<br/>[analyze.py]"]
  node_event_files["Exported Events"]
end

node_learner(("Learner"))

node_learner -->|"chooses problem"| node_problem_suite
node_learner -->|"manipulates blocks"| node_balance
node_learner -->|"enters moves"| node_workspace
node_balance -->|"updates state"| node_equation_state
node_workspace -->|"updates state"| node_equation_state
node_workspace -->|"validates steps"| node_validation
node_validation -->|"checks against anchor"| node_equation_state
node_validation -->|"reports errors"| node_scaffolding
node_scaffolding -->|"provides feedback"| node_workspace
node_scaffolding -->|"controls visibility"| node_balance
node_balance -->|"records visual activity"| node_event_log
node_workspace -->|"records interactions"| node_event_log
node_scaffolding -->|"records level changes"| node_event_log
node_event_log -->|"summarizes activity"| node_dashboard
node_event_log -.->|"posts attempts"| node_collector
node_event_log -->|"exports events"| node_event_files
node_event_files -->|"loads event data"| node_benchmark
node_collector -.->|"collects JSONL input"| node_benchmark

click node_benchmark "https://github.com/getarbind/algebrabridge/blob/main/analytics/analyze.py"

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_balance,node_workspace toneBlue
class node_equation_state,node_validation,node_problem_suite,node_scaffolding toneAmber
class node_event_log,node_dashboard,node_collector,node_benchmark,node_event_files toneMint
class node_learner toneIndigo
```

## Components

### Learning Experience

- **Balance Scale**
- **Equation Workspace**

### Instruction Engine

- **Equation State**
- **Step Validation**
- **Problem Selection**
- **Adaptive Scaffolding**

### Telemetry and Insights

- **Interaction Log**
- **Instructor Dashboard**
- **Telemetry Collector**
- [Benchmark Reports](https://github.com/getarbind/algebrabridge/blob/main/analytics/analyze.py): `analytics/analyze.py`
- **Exported Events**

### Other components

- **Learner**

## Connections

- Learner → Problem Selection: chooses problem (evidence: `README.md`)
- Learner → Balance Scale: manipulates blocks (evidence: `README.md`)
- Learner → Equation Workspace: enters moves (evidence: `README.md`)
- Balance Scale → Equation State: updates state (evidence: `README.md`)
- Equation Workspace → Equation State: updates state (evidence: `README.md`)
- Equation Workspace → Step Validation: validates steps (evidence: `README.md`)
- Step Validation → Equation State: checks against anchor (evidence: `README.md`)
- Step Validation → Adaptive Scaffolding: reports errors (evidence: `README.md`)
- Adaptive Scaffolding → Equation Workspace: provides feedback (evidence: `README.md`)
- Adaptive Scaffolding → Balance Scale: controls visibility (evidence: `README.md`)
- Balance Scale → Interaction Log: records visual activity (evidence: `README.md`)
- Equation Workspace → Interaction Log: records interactions (evidence: `README.md`)
- Adaptive Scaffolding → Interaction Log: records level changes (evidence: `README.md`)
- Interaction Log → Instructor Dashboard: summarizes activity (evidence: `README.md`)
- Interaction Log → Telemetry Collector: posts attempts (evidence: `README.md`)
- Interaction Log → Exported Events: exports events (evidence: `README.md`)
- Exported Events → Benchmark Reports: loads event data (evidence: `analytics/analyze.py`)
- Telemetry Collector → Benchmark Reports: collects JSONL input (evidence: `analytics/analyze.py`)
