# piaochongdeng/quadratic-exact-lab architecture

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

- Interactive diagram: https://gitdiagram.com/piaochongdeng/quadratic-exact-lab
- Repository: https://github.com/piaochongdeng/quadratic-exact-lab

## Overview

Quadratic Exact Lab is an offline-first exact-math application with browser, Electron desktop, and Android front ends. Users enter a quadratic in one of three forms or provide three points; the quadratic workspace derives equivalent forms, characteristics, and domain-specific extrema, then presents a report and plot. A separate trigonometry workspace accepts an angle or function value plus a side and produces ratios, a solved right triangle, reports, and diagrams. The graph follows documented and excerpted relationships; unsampled wiring is omitted where it cannot be verified.

Main entry points: [`ui.js`](https://github.com/piaochongdeng/quadratic-exact-lab/blob/main/ui.js) (Quadratic UI), [`trig-ui.js`](https://github.com/piaochongdeng/quadratic-exact-lab/blob/main/trig-ui.js) (Trigonometry UI), [`trig-report.js`](https://github.com/piaochongdeng/quadratic-exact-lab/blob/main/trig-report.js) (Trig analysis), [`index.html`](https://github.com/piaochongdeng/quadratic-exact-lab/blob/main/index.html) (Browser app)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_quadratic["Quadratic workspace"]
  node_quad_ui["Quadratic UI<br/>[ui.js]"]
  node_quad_report["Quadratic analysis<br/>[report.js]"]
  node_quad_plot["Quadratic plot<br/>[ui.js]"]
end

subgraph group_trig["Trigonometry workspace"]
  node_trig_ui["Trigonometry UI<br/>[trig-ui.js]"]
  node_trig_engine["Trig solver<br/>[trig.js]"]
  node_trig_report["Trig analysis<br/>[trig-report.js]"]
  node_trig_diagrams["Triangle and circle<br/>[trig-ui.js]"]
end

subgraph group_shared["Shared math and reports"]
  node_quad_engine["Exact engine<br/>[engine.js]"]
  node_markdown["Markdown renderer<br/>[markdown.js]"]
  node_help["Help content<br/>[help.js]"]
end

subgraph group_clients["Application clients"]
  node_web["Browser app<br/>[index.html]"]
  node_desktop["Electron client<br/>[main.js]"]
  node_android["Android WebView<br/>[MainActivity.java]"]
end

node_user(("User"))

node_user -->|"opens app"| node_web
node_web -->|"runs workspace"| node_quad_ui
node_quad_ui -->|"builds analysis"| node_quad_report
node_quad_report -->|"uses exact math"| node_quad_engine
node_quad_ui -->|"draws results"| node_quad_plot
node_quad_ui -->|"renders report"| node_markdown
node_user -->|"enters trig inputs"| node_trig_ui
node_trig_ui -->|"builds analysis"| node_trig_report
node_trig_report -->|"solves ratios"| node_trig_engine
node_trig_report -->|"parses exact values"| node_quad_engine
node_trig_ui -->|"draws results"| node_trig_diagrams
node_trig_ui -->|"renders report"| node_markdown
node_user -->|"launches desktop"| node_desktop
node_desktop -->|"loads shared page"| node_quad_ui
node_user -->|"opens Android app"| node_android
node_android -->|"loads web app"| node_web
node_quad_ui -.->|"opens instructions"| node_help

click node_web "https://github.com/piaochongdeng/quadratic-exact-lab/blob/main/index.html"
click node_quad_ui "https://github.com/piaochongdeng/quadratic-exact-lab/blob/main/ui.js"
click node_quad_engine "https://github.com/piaochongdeng/quadratic-exact-lab/blob/main/engine.js"
click node_quad_report "https://github.com/piaochongdeng/quadratic-exact-lab/blob/main/report.js"
click node_quad_plot "https://github.com/piaochongdeng/quadratic-exact-lab/blob/main/ui.js"
click node_trig_ui "https://github.com/piaochongdeng/quadratic-exact-lab/blob/main/trig-ui.js"
click node_trig_engine "https://github.com/piaochongdeng/quadratic-exact-lab/blob/main/trig.js"
click node_trig_report "https://github.com/piaochongdeng/quadratic-exact-lab/blob/main/trig-report.js"
click node_trig_diagrams "https://github.com/piaochongdeng/quadratic-exact-lab/blob/main/trig-ui.js"
click node_markdown "https://github.com/piaochongdeng/quadratic-exact-lab/blob/main/markdown.js"
click node_help "https://github.com/piaochongdeng/quadratic-exact-lab/blob/main/help.js"
click node_desktop "https://github.com/piaochongdeng/quadratic-exact-lab/blob/main/desktop/main.js"
click node_android "https://github.com/piaochongdeng/quadratic-exact-lab/blob/main/android/app/src/main/java/cn/piaochong/quadraticexactlab/MainActivity.java"

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_quad_ui,node_quad_report,node_quad_plot,node_user toneBlue
class node_trig_ui,node_trig_engine,node_trig_report,node_trig_diagrams toneAmber
class node_quad_engine,node_markdown,node_help toneMint
class node_web,node_desktop,node_android toneRose
```

## Components

### Quadratic workspace

- [Quadratic UI](https://github.com/piaochongdeng/quadratic-exact-lab/blob/main/ui.js): `ui.js`
- [Quadratic analysis](https://github.com/piaochongdeng/quadratic-exact-lab/blob/main/report.js): `report.js`
- [Quadratic plot](https://github.com/piaochongdeng/quadratic-exact-lab/blob/main/ui.js): `ui.js`

### Trigonometry workspace

- [Trigonometry UI](https://github.com/piaochongdeng/quadratic-exact-lab/blob/main/trig-ui.js): `trig-ui.js`
- [Trig solver](https://github.com/piaochongdeng/quadratic-exact-lab/blob/main/trig.js): `trig.js`
- [Trig analysis](https://github.com/piaochongdeng/quadratic-exact-lab/blob/main/trig-report.js): `trig-report.js`
- [Triangle and circle](https://github.com/piaochongdeng/quadratic-exact-lab/blob/main/trig-ui.js): `trig-ui.js`

### Shared math and reports

- [Exact engine](https://github.com/piaochongdeng/quadratic-exact-lab/blob/main/engine.js): `engine.js`
- [Markdown renderer](https://github.com/piaochongdeng/quadratic-exact-lab/blob/main/markdown.js): `markdown.js`
- [Help content](https://github.com/piaochongdeng/quadratic-exact-lab/blob/main/help.js): `help.js`

### Application clients

- [Browser app](https://github.com/piaochongdeng/quadratic-exact-lab/blob/main/index.html): `index.html`
- [Electron client](https://github.com/piaochongdeng/quadratic-exact-lab/blob/main/desktop/main.js): `desktop/main.js`
- [Android WebView](https://github.com/piaochongdeng/quadratic-exact-lab/blob/main/android/app/src/main/java/cn/piaochong/quadraticexactlab/MainActivity.java): `android/app/src/main/java/cn/piaochong/quadraticexactlab/MainActivity.java`

### Other components

- **User**

## Connections

- User → Browser app: opens app (evidence: `README.md`)
- Browser app → Quadratic UI: runs workspace (evidence: `ui.js`)
- Quadratic UI → Quadratic analysis: builds analysis (evidence: `ui.js`)
- Quadratic analysis → Exact engine: uses exact math (evidence: `report.js`)
- Quadratic UI → Quadratic plot: draws results (evidence: `README.md`)
- Quadratic UI → Markdown renderer: renders report (evidence: `ui.js`)
- User → Trigonometry UI: enters trig inputs (evidence: `README.md`)
- Trigonometry UI → Trig analysis: builds analysis (evidence: `trig-ui.js`)
- Trig analysis → Trig solver: solves ratios (evidence: `trig-report.js`)
- Trig analysis → Exact engine: parses exact values (evidence: `trig-report.js`)
- Trigonometry UI → Triangle and circle: draws results (evidence: `trig-ui.js`)
- Trigonometry UI → Markdown renderer: renders report (evidence: `trig-ui.js`)
- User → Electron client: launches desktop (evidence: `README.md`)
- Electron client → Quadratic UI: loads shared page (evidence: `desktop/main.js`)
- User → Android WebView: opens Android app (evidence: `README.md`)
- Android WebView → Browser app: loads web app (evidence: `android/app/src/main/java/cn/piaochong/quadraticexactlab/MainActivity.java`)
- Quadratic UI → Help content: opens instructions
