# ofb77/base64-cockpit architecture

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

- Interactive diagram: https://gitdiagram.com/ofb77/base64-cockpit
- Repository: https://github.com/ofb77/base64-cockpit

## Overview

Base64 Cockpit is a local Tauri desktop app for converting files to Base64 and restoring files from Base64. Users select or provide input, run a conversion, then preview, copy, or save the result; restoration recognizes formats from metadata, signatures, containers, or structured text and rejects unknown types. The React workbench also exposes batch jobs, conversion history, format recognition, and engine settings. The excerpts show the UI-to-command bridge and Rust runtime in part; relationships for unsampled command internals are limited to documented capabilities.

Main entry points: [`src/App.tsx`](https://github.com/ofb77/base64-cockpit/blob/main/src/App.tsx) (React Workbench), [`src/tauri.ts`](https://github.com/ofb77/base64-cockpit/blob/main/src/tauri.ts) (Tauri Bridge), [`src-tauri/src/lib.rs`](https://github.com/ofb77/base64-cockpit/blob/main/src-tauri/src/lib.rs) (Rust Runtime), [`src/lib/workbenchView.ts`](https://github.com/ofb77/base64-cockpit/blob/main/src/lib/workbenchView.ts) (Preview Logic)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_workbench["Workbench"]
  node_app["React Workbench<br/>[App.tsx]"]
  node_ui_logic["Preview Logic<br/>[workbenchView.ts]"]
  node_output_preview["Output Preview<br/>[outputPreview.ts]"]
  node_native_dialog["File Dialogs<br/>[tauri.ts]"]
  node_preview_io["File Previews<br/>[lib.rs]"]
  node_batch_jobs["Batch Jobs<br/>[App.tsx]"]
  node_result_actions["Result Actions<br/>[App.tsx]"]
end

subgraph group_conversion["Conversion"]
  node_encode["File Encoding<br/>[lib.rs]"]
  node_base64_stage["Base64 Staging<br/>[lib.rs]"]
  node_format_recognition["Format Recognition<br/>[lib.rs]"]
  node_file_decode["File Decoding<br/>[lib.rs]"]
end

subgraph group_local_runtime["Local Runtime"]
  node_tauri_bridge["Tauri Bridge<br/>[tauri.ts]"]
  node_rust_runtime["Rust Runtime<br/>[lib.rs]"]
  node_operation_control["Operation Control<br/>[lib.rs]"]
end

subgraph group_support["Supporting Features"]
  node_history["Conversion History<br/>[lib.rs]"]
end

node_user(("Desktop User"))
node_local_files[("Local Files")]
node_clipboard["System Clipboard"]

node_user -->|"operates"| node_app
node_app -->|"selects files"| node_native_dialog
node_native_dialog -->|"returns paths"| node_tauri_bridge
node_app -->|"invokes commands"| node_tauri_bridge
node_tauri_bridge -->|"dispatches commands"| node_rust_runtime
node_rust_runtime -->|"runs encoding"| node_encode
node_rust_runtime -->|"stages input"| node_base64_stage
node_rust_runtime -->|"recognizes formats"| node_format_recognition
node_rust_runtime -->|"runs decoding"| node_file_decode
node_rust_runtime -->|"reads previews"| node_preview_io
node_app -->|"runs batch tasks"| node_batch_jobs
node_batch_jobs -->|"invokes conversions"| node_tauri_bridge
node_app -->|"pauses or cancels"| node_operation_control
node_tauri_bridge -->|"sends controls"| node_operation_control
node_app -->|"loads and saves"| node_history
node_tauri_bridge -->|"invokes history"| node_history
node_app -->|"derives preview"| node_ui_logic
node_app -->|"truncates output"| node_output_preview
node_app -->|"offers result actions"| node_result_actions
node_result_actions -->|"saves or opens"| node_tauri_bridge
node_app -->|"copies text"| node_clipboard
node_rust_runtime -->|"reads and writes"| node_local_files
node_preview_io -->|"reads preview data"| node_local_files
node_history -->|"persists history files"| node_local_files
node_tauri_bridge -->|"stages or copies text"| node_clipboard

click node_app "https://github.com/ofb77/base64-cockpit/blob/main/src/App.tsx"
click node_ui_logic "https://github.com/ofb77/base64-cockpit/blob/main/src/lib/workbenchView.ts"
click node_output_preview "https://github.com/ofb77/base64-cockpit/blob/main/src/lib/outputPreview.ts"
click node_tauri_bridge "https://github.com/ofb77/base64-cockpit/blob/main/src/tauri.ts"
click node_native_dialog "https://github.com/ofb77/base64-cockpit/blob/main/src/tauri.ts"
click node_rust_runtime "https://github.com/ofb77/base64-cockpit/blob/main/src-tauri/src/lib.rs"
click node_encode "https://github.com/ofb77/base64-cockpit/blob/main/src-tauri/src/lib.rs"
click node_base64_stage "https://github.com/ofb77/base64-cockpit/blob/main/src-tauri/src/lib.rs"
click node_format_recognition "https://github.com/ofb77/base64-cockpit/blob/main/src-tauri/src/lib.rs"
click node_file_decode "https://github.com/ofb77/base64-cockpit/blob/main/src-tauri/src/lib.rs"
click node_preview_io "https://github.com/ofb77/base64-cockpit/blob/main/src-tauri/src/lib.rs"
click node_batch_jobs "https://github.com/ofb77/base64-cockpit/blob/main/src/App.tsx"
click node_operation_control "https://github.com/ofb77/base64-cockpit/blob/main/src-tauri/src/lib.rs"
click node_history "https://github.com/ofb77/base64-cockpit/blob/main/src-tauri/src/lib.rs"
click node_result_actions "https://github.com/ofb77/base64-cockpit/blob/main/src/App.tsx"

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_ui_logic,node_output_preview,node_native_dialog,node_preview_io,node_batch_jobs,node_result_actions,node_user toneBlue
class node_encode,node_base64_stage,node_format_recognition,node_file_decode,node_local_files toneAmber
class node_tauri_bridge,node_rust_runtime,node_operation_control toneMint
class node_history toneRose
class node_clipboard toneIndigo
```

## Components

### Workbench

- [React Workbench](https://github.com/ofb77/base64-cockpit/blob/main/src/App.tsx): `src/App.tsx`
- [Preview Logic](https://github.com/ofb77/base64-cockpit/blob/main/src/lib/workbenchView.ts): `src/lib/workbenchView.ts`
- [Output Preview](https://github.com/ofb77/base64-cockpit/blob/main/src/lib/outputPreview.ts): `src/lib/outputPreview.ts`
- [File Dialogs](https://github.com/ofb77/base64-cockpit/blob/main/src/tauri.ts): `src/tauri.ts`
- [File Previews](https://github.com/ofb77/base64-cockpit/blob/main/src-tauri/src/lib.rs): `src-tauri/src/lib.rs`
- [Batch Jobs](https://github.com/ofb77/base64-cockpit/blob/main/src/App.tsx): `src/App.tsx`
- [Result Actions](https://github.com/ofb77/base64-cockpit/blob/main/src/App.tsx): `src/App.tsx`

### Conversion

- [File Encoding](https://github.com/ofb77/base64-cockpit/blob/main/src-tauri/src/lib.rs): `src-tauri/src/lib.rs`
- [Base64 Staging](https://github.com/ofb77/base64-cockpit/blob/main/src-tauri/src/lib.rs): `src-tauri/src/lib.rs`
- [Format Recognition](https://github.com/ofb77/base64-cockpit/blob/main/src-tauri/src/lib.rs): `src-tauri/src/lib.rs`
- [File Decoding](https://github.com/ofb77/base64-cockpit/blob/main/src-tauri/src/lib.rs): `src-tauri/src/lib.rs`

### Local Runtime

- [Tauri Bridge](https://github.com/ofb77/base64-cockpit/blob/main/src/tauri.ts): `src/tauri.ts`
- [Rust Runtime](https://github.com/ofb77/base64-cockpit/blob/main/src-tauri/src/lib.rs): `src-tauri/src/lib.rs`
- [Operation Control](https://github.com/ofb77/base64-cockpit/blob/main/src-tauri/src/lib.rs): `src-tauri/src/lib.rs`

### Supporting Features

- [Conversion History](https://github.com/ofb77/base64-cockpit/blob/main/src-tauri/src/lib.rs): `src-tauri/src/lib.rs`

### Other components

- **Desktop User**
- **Local Files**
- **System Clipboard**

## Connections

- Desktop User → React Workbench: operates
- React Workbench → File Dialogs: selects files
- File Dialogs → Tauri Bridge: returns paths
- React Workbench → Tauri Bridge: invokes commands
- Tauri Bridge → Rust Runtime: dispatches commands
- Rust Runtime → File Encoding: runs encoding
- Rust Runtime → Base64 Staging: stages input
- Rust Runtime → Format Recognition: recognizes formats
- Rust Runtime → File Decoding: runs decoding
- Rust Runtime → File Previews: reads previews
- React Workbench → Batch Jobs: runs batch tasks
- Batch Jobs → Tauri Bridge: invokes conversions
- React Workbench → Operation Control: pauses or cancels
- Tauri Bridge → Operation Control: sends controls
- React Workbench → Conversion History: loads and saves
- Tauri Bridge → Conversion History: invokes history
- React Workbench → Preview Logic: derives preview
- React Workbench → Output Preview: truncates output
- React Workbench → Result Actions: offers result actions
- Result Actions → Tauri Bridge: saves or opens
- React Workbench → System Clipboard: copies text
- Rust Runtime → Local Files: reads and writes
- File Previews → Local Files: reads preview data
- Conversion History → Local Files: persists history files
- Tauri Bridge → System Clipboard: stages or copies text
