# bashalarmistalt/decimen-optical-transfer architecture

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

- Interactive diagram: https://gitdiagram.com/bashalarmistalt/decimen-optical-transfer
- Repository: https://github.com/bashalarmistalt/decimen-optical-transfer

## Overview

Decimen Optical Transfer moves a file or text snippet from one device’s screen to another device’s camera without networking. The sender packs and fountain-encodes payload blocks, renders self-describing QR frames, and displays an endless stream or exports an animation. The receiver captures video, dispatches frames to WASM QR workers, parses and peels the fountain stream, verifies the hash, then offers or plays the result. The graph also shows localization and live diagnostics. Build, test, and PWA infrastructure is omitted; several unsampled integrations are therefore not expanded.

Main entry points: [`receive/main.ts`](https://github.com/bashalarmistalt/decimen-optical-transfer/blob/main/receive/main.ts) (Receive Controller), [`send/main.ts`](https://github.com/bashalarmistalt/decimen-optical-transfer/blob/main/send/main.ts) (Send Controller), [`send/export.ts`](https://github.com/bashalarmistalt/decimen-optical-transfer/blob/main/send/export.ts) (Animation Exporter), [`shared/protocol.ts`](https://github.com/bashalarmistalt/decimen-optical-transfer/blob/main/shared/protocol.ts) (Frame Protocol)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_entry["User Entry"]
  node_send_controller["Send Controller<br/>[main.ts]"]
  node_receive_controller["Receive Controller<br/>[main.ts]"]
end

subgraph group_sender["Sender Pipeline"]
  node_payload_input["File Or Snippet<br/>[main.ts]"]
  node_fountain_encoder["Fountain Encoder<br/>[fountain.ts]"]
  node_qr_renderer["QR Renderer<br/>[qr-frame.ts]"]
  node_live_stream["Live QR Stream<br/>[main.ts]"]
  node_animation_exporter["Animation Exporter<br/>[export.ts]"]
  node_export_artifact["Animation Artifact<br/>[export.ts]"]
end

subgraph group_protocol["Transfer Protocol"]
  node_frame_protocol["Frame Protocol<br/>[protocol.ts]"]
end

subgraph group_receiver["Receiver Pipeline"]
  node_camera_capture["Camera Capture<br/>[main.ts]"]
  node_worker_pool["Decode Worker Pool<br/>[worker-pool.ts]"]
  node_worker_factory["Worker Factory<br/>[worker-factory.ts]"]
  node_wasm_decoder["WASM QR Decoder<br/>[worker.ts]"]
  node_fountain_decoder["Fountain Decoder<br/>[fountain.ts]"]
  node_verified_file["Verified File<br/>[main.ts]"]
  node_media_display["Media Display<br/>[display.ts]"]
end

subgraph group_shared["Shared Runtime"]
  node_localization["Localization Runtime<br/>[index.ts]"]
  node_status_runtime["Status Diagnostics<br/>[status-line.ts]"]
end

node_sender_user(("Sender User"))
node_receiver_user(("Receiving User"))

node_sender_user -->|"selects payload"| node_send_controller
node_send_controller -->|"reads input"| node_payload_input
node_send_controller -->|"packs payload"| node_frame_protocol
node_send_controller -->|"encodes blocks"| node_fountain_encoder
node_send_controller -->|"renders frames"| node_qr_renderer
node_send_controller -->|"displays stream"| node_live_stream
node_send_controller -.->|"starts export"| node_animation_exporter
node_animation_exporter -->|"encodes frames"| node_fountain_encoder
node_animation_exporter -->|"packs frames"| node_frame_protocol
node_animation_exporter -->|"renders frames"| node_qr_renderer
node_animation_exporter -->|"writes animation"| node_export_artifact
node_live_stream -->|"transfers light"| node_camera_capture
node_export_artifact -.->|"transfers light"| node_camera_capture
node_receiver_user -->|"starts camera"| node_receive_controller
node_camera_capture -->|"supplies frames"| node_receive_controller
node_receive_controller -->|"submits frames"| node_worker_pool
node_receive_controller -->|"creates workers"| node_worker_factory
node_worker_factory -->|"loads decoder"| node_wasm_decoder
node_worker_pool -->|"dispatches frames"| node_wasm_decoder
node_receive_controller -->|"parses frames"| node_frame_protocol
node_receive_controller -->|"peels blocks"| node_fountain_decoder
node_receive_controller -->|"unpacks verifies"| node_frame_protocol
node_receive_controller -->|"offers result"| node_verified_file
node_receive_controller -->|"plays media"| node_media_display
node_send_controller -->|"loads language"| node_localization
node_receive_controller -->|"loads language"| node_localization
node_send_controller -->|"reports status"| node_status_runtime
node_receive_controller -->|"reports status"| node_status_runtime

click node_send_controller "https://github.com/bashalarmistalt/decimen-optical-transfer/blob/main/send/main.ts"
click node_receive_controller "https://github.com/bashalarmistalt/decimen-optical-transfer/blob/main/receive/main.ts"
click node_payload_input "https://github.com/bashalarmistalt/decimen-optical-transfer/blob/main/send/main.ts"
click node_fountain_encoder "https://github.com/bashalarmistalt/decimen-optical-transfer/blob/main/shared/fountain.ts"
click node_qr_renderer "https://github.com/bashalarmistalt/decimen-optical-transfer/blob/main/send/qr-frame.ts"
click node_live_stream "https://github.com/bashalarmistalt/decimen-optical-transfer/blob/main/send/main.ts"
click node_animation_exporter "https://github.com/bashalarmistalt/decimen-optical-transfer/blob/main/send/export.ts"
click node_export_artifact "https://github.com/bashalarmistalt/decimen-optical-transfer/blob/main/send/export.ts"
click node_frame_protocol "https://github.com/bashalarmistalt/decimen-optical-transfer/blob/main/shared/protocol.ts"
click node_camera_capture "https://github.com/bashalarmistalt/decimen-optical-transfer/blob/main/receive/main.ts"
click node_worker_pool "https://github.com/bashalarmistalt/decimen-optical-transfer/blob/main/shared/worker-pool.ts"
click node_worker_factory "https://github.com/bashalarmistalt/decimen-optical-transfer/blob/main/receive/worker-factory.ts"
click node_wasm_decoder "https://github.com/bashalarmistalt/decimen-optical-transfer/blob/main/receive/worker.ts"
click node_fountain_decoder "https://github.com/bashalarmistalt/decimen-optical-transfer/blob/main/shared/fountain.ts"
click node_verified_file "https://github.com/bashalarmistalt/decimen-optical-transfer/blob/main/receive/main.ts"
click node_media_display "https://github.com/bashalarmistalt/decimen-optical-transfer/blob/main/shared/display.ts"
click node_localization "https://github.com/bashalarmistalt/decimen-optical-transfer/blob/main/shared/i18n/index.ts"
click node_status_runtime "https://github.com/bashalarmistalt/decimen-optical-transfer/blob/main/shared/status-line.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_send_controller,node_receive_controller,node_sender_user,node_receiver_user toneBlue
class node_payload_input,node_fountain_encoder,node_qr_renderer,node_live_stream,node_animation_exporter,node_export_artifact toneAmber
class node_frame_protocol toneMint
class node_camera_capture,node_worker_pool,node_worker_factory,node_wasm_decoder,node_fountain_decoder,node_verified_file,node_media_display toneRose
class node_localization,node_status_runtime toneIndigo
```

## Components

### User Entry

- [Send Controller](https://github.com/bashalarmistalt/decimen-optical-transfer/blob/main/send/main.ts): `send/main.ts`
- [Receive Controller](https://github.com/bashalarmistalt/decimen-optical-transfer/blob/main/receive/main.ts): `receive/main.ts`

### Sender Pipeline

- [File Or Snippet](https://github.com/bashalarmistalt/decimen-optical-transfer/blob/main/send/main.ts): `send/main.ts`
- [Fountain Encoder](https://github.com/bashalarmistalt/decimen-optical-transfer/blob/main/shared/fountain.ts): `shared/fountain.ts`
- [QR Renderer](https://github.com/bashalarmistalt/decimen-optical-transfer/blob/main/send/qr-frame.ts): `send/qr-frame.ts`
- [Live QR Stream](https://github.com/bashalarmistalt/decimen-optical-transfer/blob/main/send/main.ts): `send/main.ts`
- [Animation Exporter](https://github.com/bashalarmistalt/decimen-optical-transfer/blob/main/send/export.ts): `send/export.ts`
- [Animation Artifact](https://github.com/bashalarmistalt/decimen-optical-transfer/blob/main/send/export.ts): `send/export.ts`

### Transfer Protocol

- [Frame Protocol](https://github.com/bashalarmistalt/decimen-optical-transfer/blob/main/shared/protocol.ts): `shared/protocol.ts`

### Receiver Pipeline

- [Camera Capture](https://github.com/bashalarmistalt/decimen-optical-transfer/blob/main/receive/main.ts): `receive/main.ts`
- [Decode Worker Pool](https://github.com/bashalarmistalt/decimen-optical-transfer/blob/main/shared/worker-pool.ts): `shared/worker-pool.ts`
- [Worker Factory](https://github.com/bashalarmistalt/decimen-optical-transfer/blob/main/receive/worker-factory.ts): `receive/worker-factory.ts`
- [WASM QR Decoder](https://github.com/bashalarmistalt/decimen-optical-transfer/blob/main/receive/worker.ts): `receive/worker.ts`
- [Fountain Decoder](https://github.com/bashalarmistalt/decimen-optical-transfer/blob/main/shared/fountain.ts): `shared/fountain.ts`
- [Verified File](https://github.com/bashalarmistalt/decimen-optical-transfer/blob/main/receive/main.ts): `receive/main.ts`
- [Media Display](https://github.com/bashalarmistalt/decimen-optical-transfer/blob/main/shared/display.ts): `shared/display.ts`

### Shared Runtime

- [Localization Runtime](https://github.com/bashalarmistalt/decimen-optical-transfer/blob/main/shared/i18n/index.ts): `shared/i18n/index.ts`
- [Status Diagnostics](https://github.com/bashalarmistalt/decimen-optical-transfer/blob/main/shared/status-line.ts): `shared/status-line.ts`

### Other components

- **Sender User**
- **Receiving User**

## Connections

- Sender User → Send Controller: selects payload
- Send Controller → File Or Snippet: reads input
- Send Controller → Frame Protocol: packs payload
- Send Controller → Fountain Encoder: encodes blocks
- Send Controller → QR Renderer: renders frames
- Send Controller → Live QR Stream: displays stream
- Send Controller → Animation Exporter: starts export
- Animation Exporter → Fountain Encoder: encodes frames
- Animation Exporter → Frame Protocol: packs frames
- Animation Exporter → QR Renderer: renders frames
- Animation Exporter → Animation Artifact: writes animation
- Live QR Stream → Camera Capture: transfers light
- Animation Artifact → Camera Capture: transfers light
- Receiving User → Receive Controller: starts camera
- Camera Capture → Receive Controller: supplies frames
- Receive Controller → Decode Worker Pool: submits frames
- Receive Controller → Worker Factory: creates workers
- Worker Factory → WASM QR Decoder: loads decoder
- Decode Worker Pool → WASM QR Decoder: dispatches frames
- Receive Controller → Frame Protocol: parses frames
- Receive Controller → Fountain Decoder: peels blocks
- Receive Controller → Frame Protocol: unpacks verifies
- Receive Controller → Verified File: offers result
- Receive Controller → Media Display: plays media
- Send Controller → Localization Runtime: loads language
- Receive Controller → Localization Runtime: loads language
- Send Controller → Status Diagnostics: reports status
- Receive Controller → Status Diagnostics: reports status
