# rzazademurad/venn-diagrams architecture

> Architecture diagram of the GitHub repository rzazademurad/venn-diagrams, 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/rzazademurad/venn-diagrams
- Repository: https://github.com/rzazademurad/venn-diagrams

## Overview

This is a browser-based propositional-logic compiler and arbitrary-N Venn diagram generator. A user enters a formula; the app analyzes it into a truth table, then sends construction work to a Web Worker. Geometry maps truth-table rows to regions, fills them, and returns a snapshot for interactive display and export. The graph preserves both geometry engines, rendering, sharing, and table exports. Some links are supported by the SOURCE INDEX or README rather than full excerpts; unsampled implementation details are not inferred.

Main entry points: [`src/app/analyze.ts`](https://github.com/rzazademurad/venn-diagrams/blob/main/src/app/analyze.ts) (Statement analysis), [`src/geometry/VennsConstruction.ts`](https://github.com/rzazademurad/venn-diagrams/blob/main/src/geometry/VennsConstruction.ts) (Venn construction), [`src/components/VennCanvas.tsx`](https://github.com/rzazademurad/venn-diagrams/blob/main/src/components/VennCanvas.tsx) (Diagram canvas), [`src/App.tsx`](https://github.com/rzazademurad/venn-diagrams/blob/main/src/App.tsx) (Application)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_interface["Application interface"]
  node_app["Application<br/>[App.tsx]"]
  node_formula["Formula input<br/>[FormulaBar.tsx]"]
  node_venncanvas["Diagram canvas<br/>[VennCanvas.tsx]"]
  node_tablepanel["Truth table panel"]
end

subgraph group_logic["Logic compilation"]
  node_analyze["Statement analysis<br/>[analyze.ts]"]
  node_scanner["Formula scanner<br/>[Scanner.ts]"]
  node_parser["AST parser<br/>[Parser.ts]"]
  node_tokens["Tokens and operators<br/>[tokens.ts]"]
  node_errors["Logic errors<br/>[exceptions.ts]"]
  node_truthvalue["Truth values<br/>[TruthValue.ts]"]
  node_truthtable["Truth table evaluator<br/>[TruthTable.ts]"]
end

subgraph group_geometry["Diagram geometry"]
  node_maininterface["Construction coordinator<br/>[MainInterface.ts]"]
  node_venn["Venn construction"]
  node_smooth["Smooth engine"]
  node_mapper["Region mapper<br/>[Mapper.ts]"]
end

subgraph group_rendering["Rendering and worker"]
  node_workerhook["Worker controller<br/>[useVennWorker.ts]"]
  node_worker["Geometry worker<br/>[vennWorker.ts]"]
  node_snapshot["Diagram snapshot<br/>[snapshot.ts]"]
  node_mirror["Diagram mirror<br/>[DiagramMirror.ts]"]
  node_raster["Pixel raster<br/>[Raster.ts]"]
  node_floodfill["Region filling<br/>[FloodFill.ts]"]
  node_canvasrenderer["Canvas renderer<br/>[CanvasRenderer.ts]"]
  node_overlays["Diagram overlays<br/>[overlays.ts]"]
end

subgraph group_results["Sharing and exports"]
  node_exports["Table and image exports<br/>[exporters.ts]"]
  node_share["Share and persistence<br/>[share.ts]"]
end

node_user(("User"))

node_user -->|"enters formula"| node_formula
node_formula -->|"updates input"| node_app
node_app -->|"analyzes formula"| node_analyze
node_analyze -->|"tokenizes"| node_scanner
node_analyze -->|"parses tokens"| node_parser
node_analyze -->|"builds table"| node_truthtable
node_scanner -->|"creates tokens"| node_tokens
node_parser -->|"reads tokens"| node_tokens
node_parser -->|"raises syntax errors"| node_errors
node_analyze -->|"handles scan errors"| node_errors
node_truthtable -->|"evaluates operators"| node_tokens
node_truthtable -->|"formats values"| node_truthvalue
node_app -->|"requests construction"| node_workerhook
node_workerhook -->|"dispatches jobs"| node_worker
node_worker -->|"runs construction"| node_maininterface
node_maininterface -->|"analyzes statement"| node_analyze
node_maininterface -->|"constructs and fills"| node_venn
node_venn -->|"selects smooth engine"| node_smooth
node_venn -->|"draws into buffer"| node_raster
node_venn -->|"fills regions"| node_floodfill
node_venn -->|"maps region seeds"| node_mapper
node_worker -->|"returns diagram state"| node_snapshot
node_workerhook -->|"updates completed state"| node_mirror
node_mirror -->|"restores snapshot"| node_snapshot
node_venncanvas -->|"renders diagram"| node_canvasrenderer
node_venncanvas -->|"renders overlays"| node_overlays
node_venncanvas -->|"reads diagram state"| node_mirror
node_tablepanel -->|"displays table"| node_truthtable
node_tablepanel -->|"exports table"| node_exports
node_venncanvas -->|"exports diagram"| node_exports
node_app -->|"loads and saves state"| node_share

click node_app "https://github.com/rzazademurad/venn-diagrams/blob/main/src/App.tsx"
click node_formula "https://github.com/rzazademurad/venn-diagrams/blob/main/src/components/FormulaBar.tsx"
click node_venncanvas "https://github.com/rzazademurad/venn-diagrams/blob/main/src/components/VennCanvas.tsx"
click node_tablepanel "https://github.com/rzazademurad/venn-diagrams/blob/main/src/components/TruthTablePanel.tsx"
click node_analyze "https://github.com/rzazademurad/venn-diagrams/blob/main/src/app/analyze.ts"
click node_scanner "https://github.com/rzazademurad/venn-diagrams/blob/main/src/logic/Scanner.ts"
click node_parser "https://github.com/rzazademurad/venn-diagrams/blob/main/src/logic/Parser.ts"
click node_tokens "https://github.com/rzazademurad/venn-diagrams/blob/main/src/logic/tokens.ts"
click node_errors "https://github.com/rzazademurad/venn-diagrams/blob/main/src/logic/exceptions.ts"
click node_truthvalue "https://github.com/rzazademurad/venn-diagrams/blob/main/src/logic/TruthValue.ts"
click node_truthtable "https://github.com/rzazademurad/venn-diagrams/blob/main/src/logic/TruthTable.ts"
click node_maininterface "https://github.com/rzazademurad/venn-diagrams/blob/main/src/app/MainInterface.ts"
click node_venn "https://github.com/rzazademurad/venn-diagrams/blob/main/src/geometry/VennsConstruction.ts"
click node_smooth "https://github.com/rzazademurad/venn-diagrams/blob/main/src/geometry/SmoothConstruction.ts"
click node_mapper "https://github.com/rzazademurad/venn-diagrams/blob/main/src/geometry/Mapper.ts"
click node_workerhook "https://github.com/rzazademurad/venn-diagrams/blob/main/src/hooks/useVennWorker.ts"
click node_worker "https://github.com/rzazademurad/venn-diagrams/blob/main/src/worker/vennWorker.ts"
click node_snapshot "https://github.com/rzazademurad/venn-diagrams/blob/main/src/app/snapshot.ts"
click node_mirror "https://github.com/rzazademurad/venn-diagrams/blob/main/src/app/DiagramMirror.ts"
click node_raster "https://github.com/rzazademurad/venn-diagrams/blob/main/src/renderer/Raster.ts"
click node_floodfill "https://github.com/rzazademurad/venn-diagrams/blob/main/src/renderer/FloodFill.ts"
click node_canvasrenderer "https://github.com/rzazademurad/venn-diagrams/blob/main/src/renderer/CanvasRenderer.ts"
click node_overlays "https://github.com/rzazademurad/venn-diagrams/blob/main/src/renderer/overlays.ts"
click node_exports "https://github.com/rzazademurad/venn-diagrams/blob/main/src/exports/exporters.ts"
click node_share "https://github.com/rzazademurad/venn-diagrams/blob/main/src/app/share.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_app,node_formula,node_venncanvas,node_tablepanel,node_user toneBlue
class node_analyze,node_scanner,node_parser,node_tokens,node_errors,node_truthvalue,node_truthtable toneAmber
class node_maininterface,node_venn,node_smooth,node_mapper toneMint
class node_workerhook,node_worker,node_snapshot,node_mirror,node_raster,node_floodfill,node_canvasrenderer,node_overlays toneRose
class node_exports,node_share toneIndigo
```

## Components

### Application interface

- [Application](https://github.com/rzazademurad/venn-diagrams/blob/main/src/App.tsx): `src/App.tsx`
- [Formula input](https://github.com/rzazademurad/venn-diagrams/blob/main/src/components/FormulaBar.tsx): `src/components/FormulaBar.tsx`
- [Diagram canvas](https://github.com/rzazademurad/venn-diagrams/blob/main/src/components/VennCanvas.tsx): `src/components/VennCanvas.tsx`
- [Truth table panel](https://github.com/rzazademurad/venn-diagrams/blob/main/src/components/TruthTablePanel.tsx): `src/components/TruthTablePanel.tsx`

### Logic compilation

- [Statement analysis](https://github.com/rzazademurad/venn-diagrams/blob/main/src/app/analyze.ts): `src/app/analyze.ts`
- [Formula scanner](https://github.com/rzazademurad/venn-diagrams/blob/main/src/logic/Scanner.ts): `src/logic/Scanner.ts`
- [AST parser](https://github.com/rzazademurad/venn-diagrams/blob/main/src/logic/Parser.ts): `src/logic/Parser.ts`
- [Tokens and operators](https://github.com/rzazademurad/venn-diagrams/blob/main/src/logic/tokens.ts): `src/logic/tokens.ts`
- [Logic errors](https://github.com/rzazademurad/venn-diagrams/blob/main/src/logic/exceptions.ts): `src/logic/exceptions.ts`
- [Truth values](https://github.com/rzazademurad/venn-diagrams/blob/main/src/logic/TruthValue.ts): `src/logic/TruthValue.ts`
- [Truth table evaluator](https://github.com/rzazademurad/venn-diagrams/blob/main/src/logic/TruthTable.ts): `src/logic/TruthTable.ts`

### Diagram geometry

- [Construction coordinator](https://github.com/rzazademurad/venn-diagrams/blob/main/src/app/MainInterface.ts): `src/app/MainInterface.ts`
- [Venn construction](https://github.com/rzazademurad/venn-diagrams/blob/main/src/geometry/VennsConstruction.ts): `src/geometry/VennsConstruction.ts`
- [Smooth engine](https://github.com/rzazademurad/venn-diagrams/blob/main/src/geometry/SmoothConstruction.ts): `src/geometry/SmoothConstruction.ts`
- [Region mapper](https://github.com/rzazademurad/venn-diagrams/blob/main/src/geometry/Mapper.ts): `src/geometry/Mapper.ts`

### Rendering and worker

- [Worker controller](https://github.com/rzazademurad/venn-diagrams/blob/main/src/hooks/useVennWorker.ts): `src/hooks/useVennWorker.ts`
- [Geometry worker](https://github.com/rzazademurad/venn-diagrams/blob/main/src/worker/vennWorker.ts): `src/worker/vennWorker.ts`
- [Diagram snapshot](https://github.com/rzazademurad/venn-diagrams/blob/main/src/app/snapshot.ts): `src/app/snapshot.ts`
- [Diagram mirror](https://github.com/rzazademurad/venn-diagrams/blob/main/src/app/DiagramMirror.ts): `src/app/DiagramMirror.ts`
- [Pixel raster](https://github.com/rzazademurad/venn-diagrams/blob/main/src/renderer/Raster.ts): `src/renderer/Raster.ts`
- [Region filling](https://github.com/rzazademurad/venn-diagrams/blob/main/src/renderer/FloodFill.ts): `src/renderer/FloodFill.ts`
- [Canvas renderer](https://github.com/rzazademurad/venn-diagrams/blob/main/src/renderer/CanvasRenderer.ts): `src/renderer/CanvasRenderer.ts`
- [Diagram overlays](https://github.com/rzazademurad/venn-diagrams/blob/main/src/renderer/overlays.ts): `src/renderer/overlays.ts`

### Sharing and exports

- [Table and image exports](https://github.com/rzazademurad/venn-diagrams/blob/main/src/exports/exporters.ts): `src/exports/exporters.ts`
- [Share and persistence](https://github.com/rzazademurad/venn-diagrams/blob/main/src/app/share.ts): `src/app/share.ts`

### Other components

- **User**

## Connections

- User → Formula input: enters formula (evidence: `src/components/FormulaBar.tsx`)
- Formula input → Application: updates input (evidence: `src/App.tsx`)
- Application → Statement analysis: analyzes formula (evidence: `src/App.tsx`)
- Statement analysis → Formula scanner: tokenizes (evidence: `src/app/analyze.ts`)
- Statement analysis → AST parser: parses tokens (evidence: `src/app/analyze.ts`)
- Statement analysis → Truth table evaluator: builds table (evidence: `src/app/analyze.ts`)
- Formula scanner → Tokens and operators: creates tokens (evidence: `src/logic/Scanner.ts`)
- AST parser → Tokens and operators: reads tokens (evidence: `src/logic/Parser.ts`)
- AST parser → Logic errors: raises syntax errors (evidence: `src/logic/Parser.ts`)
- Statement analysis → Logic errors: handles scan errors (evidence: `src/app/analyze.ts`)
- Truth table evaluator → Tokens and operators: evaluates operators (evidence: `src/logic/TruthTable.ts`)
- Truth table evaluator → Truth values: formats values (evidence: `src/logic/TruthTable.ts`)
- Application → Worker controller: requests construction (evidence: `src/App.tsx`)
- Worker controller → Geometry worker: dispatches jobs (evidence: `src/hooks/useVennWorker.ts`)
- Geometry worker → Construction coordinator: runs construction (evidence: `src/worker/vennWorker.ts`)
- Construction coordinator → Statement analysis: analyzes statement (evidence: `src/app/MainInterface.ts`)
- Construction coordinator → Venn construction: constructs and fills (evidence: `src/app/MainInterface.ts`)
- Venn construction → Smooth engine: selects smooth engine (evidence: `src/geometry/VennsConstruction.ts`)
- Venn construction → Pixel raster: draws into buffer (evidence: `src/geometry/VennsConstruction.ts`)
- Venn construction → Region filling: fills regions (evidence: `src/geometry/VennsConstruction.ts`)
- Venn construction → Region mapper: maps region seeds (evidence: `src/geometry/VennsConstruction.ts`)
- Geometry worker → Diagram snapshot: returns diagram state (evidence: `src/worker/vennWorker.ts`)
- Worker controller → Diagram mirror: updates completed state (evidence: `src/hooks/useVennWorker.ts`)
- Diagram mirror → Diagram snapshot: restores snapshot (evidence: `src/app/DiagramMirror.ts`)
- Diagram canvas → Canvas renderer: renders diagram (evidence: `src/components/VennCanvas.tsx`)
- Diagram canvas → Diagram overlays: renders overlays (evidence: `src/components/VennCanvas.tsx`)
- Diagram canvas → Diagram mirror: reads diagram state (evidence: `src/components/VennCanvas.tsx`)
- Truth table panel → Truth table evaluator: displays table (evidence: `src/components/TruthTablePanel.tsx`)
- Truth table panel → Table and image exports: exports table (evidence: `src/components/TruthTablePanel.tsx`)
- Diagram canvas → Table and image exports: exports diagram (evidence: `src/components/VennCanvas.tsx`)
- Application → Share and persistence: loads and saves state (evidence: `src/App.tsx`)
