# zevarix/cryptography-playground architecture

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

- Interactive diagram: https://gitdiagram.com/zevarix/cryptography-playground
- Repository: https://github.com/zevarix/cryptography-playground

## Overview

Cryptography Playground is a Tauri desktop notebook for experimenting with configurable toy-cipher recipes and document transformations. Users configure or select a recipe, run it on text or a UTF-8 file, inspect intermediate stages and decoding results, and optionally save output with recipe metadata. Lossy decoding can expose speculative English readings without replacing the exact surviving text. The graph reflects documented capabilities and indexed module references; several native command and document internals were not excerpted, so uncertain wiring is omitted or shown as unverified.

Main entry points: [`src-tauri/src/recipes.rs`](https://github.com/zevarix/cryptography-playground/blob/main/src-tauri/src/recipes.rs) (Recipe rules), [`src/DocumentPanel.tsx`](https://github.com/zevarix/cryptography-playground/blob/main/src/DocumentPanel.tsx) (File panel), [`src-tauri/src/documents/reconstruct.rs`](https://github.com/zevarix/cryptography-playground/blob/main/src-tauri/src/documents/reconstruct.rs) (English readings), [`src/App.tsx`](https://github.com/zevarix/cryptography-playground/blob/main/src/App.tsx) (Workbench shell)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_ui["Desktop notebook"]
  node_app["Workbench shell<br/>[App.tsx]"]
  node_recipe_ui["Recipe editor<br/>[RecipePage.tsx]"]
  node_document_ui["File panel<br/>[DocumentPanel.tsx]"]
  node_recipe_types["Recipe types<br/>[recipeTypes.ts]"]
  node_document_types["Document types<br/>[documentTypes.ts]"]
end

subgraph group_recipes["Recipe management"]
  node_recipe_catalog["Recipe rules<br/>[recipes.rs]"]
  node_recipe_store[("Local recipe store<br/>[store.rs]")]
  node_fingerprints["Recipe fingerprints<br/>[fingerprint.rs]"]
  node_recipe_lookup["Fingerprint lookup<br/>[lookup.rs]"]
end

subgraph group_cipher["Cipher and recovery"]
  node_cipher_engine["Cipher engine<br/>[engine.rs]"]
  node_classical["Classical ciphers<br/>[classical.rs]"]
  node_phonetic_recovery["Phonetic recovery<br/>[recovery.rs]"]
  node_recovery_document["Candidate search<br/>[document.rs]"]
end

subgraph group_documents["Document processing"]
  node_document_commands["Document commands<br/>[commands.rs]"]
  node_document_jobs["Processing jobs<br/>[jobs.rs]"]
  node_document_storage[("File snapshots<br/>[storage.rs]")]
  node_document_transform["Text transforms<br/>[transform.rs]"]
  node_document_stream["Artifact streams<br/>[stream.rs]"]
  node_document_reconstruct["English readings<br/>[reconstruct.rs]"]
  node_document_export["Save As export<br/>[export.rs]"]
  node_document_activities["Document activities<br/>[activities.rs]"]
end

node_user(("Notebook user"))
node_file_system[("Local files")]

node_user -->|"uses"| node_app
node_app -->|"renders"| node_recipe_ui
node_app -->|"renders"| node_document_ui
node_recipe_ui -->|"uses types"| node_recipe_types
node_document_ui -->|"uses types"| node_document_types
node_document_ui -->|"uses types"| node_recipe_types
node_recipe_ui -.->|"edits recipes"| node_recipe_catalog
node_app -.->|"manages saved recipes"| node_recipe_store
node_recipe_catalog -->|"runs phonetic rules"| node_cipher_engine
node_recipe_catalog -->|"decodes readings"| node_phonetic_recovery
node_recipe_catalog -->|"uses adapters"| node_classical
node_recipe_catalog -->|"derives parameters"| node_fingerprints
node_recipe_lookup -->|"checks identifiers"| node_fingerprints
node_document_ui -.->|"requests processing"| node_document_commands
node_document_commands -->|"uses recipes"| node_recipe_catalog
node_document_commands -->|"requests readings"| node_document_reconstruct
node_document_jobs -->|"processes recipes"| node_recipe_catalog
node_document_jobs -->|"supports readings"| node_document_reconstruct
node_document_activities -->|"coordinates readings"| node_document_reconstruct
node_document_reconstruct -->|"searches candidates"| node_recovery_document
node_document_reconstruct -->|"handles skeletons"| node_document_transform
node_document_storage -->|"streams snapshots"| node_document_stream
node_document_export -->|"saves job output"| node_document_jobs
node_document_export -->|"writes new files"| node_file_system
node_document_storage -->|"captures source"| node_file_system
node_document_ui -.->|"opens and saves files"| node_file_system

click node_app "https://github.com/zevarix/cryptography-playground/blob/main/src/App.tsx"
click node_recipe_ui "https://github.com/zevarix/cryptography-playground/blob/main/src/RecipePage.tsx"
click node_document_ui "https://github.com/zevarix/cryptography-playground/blob/main/src/DocumentPanel.tsx"
click node_recipe_types "https://github.com/zevarix/cryptography-playground/blob/main/src/recipeTypes.ts"
click node_document_types "https://github.com/zevarix/cryptography-playground/blob/main/src/documentTypes.ts"
click node_recipe_catalog "https://github.com/zevarix/cryptography-playground/blob/main/src-tauri/src/recipes.rs"
click node_recipe_store "https://github.com/zevarix/cryptography-playground/blob/main/src-tauri/src/recipes/store.rs"
click node_fingerprints "https://github.com/zevarix/cryptography-playground/blob/main/src-tauri/src/recipes/fingerprint.rs"
click node_recipe_lookup "https://github.com/zevarix/cryptography-playground/blob/main/src-tauri/src/recipes/lookup.rs"
click node_cipher_engine "https://github.com/zevarix/cryptography-playground/blob/main/src-tauri/src/engine.rs"
click node_classical "https://github.com/zevarix/cryptography-playground/blob/main/src-tauri/src/recipes/classical.rs"
click node_phonetic_recovery "https://github.com/zevarix/cryptography-playground/blob/main/src-tauri/src/engine/recovery.rs"
click node_recovery_document "https://github.com/zevarix/cryptography-playground/blob/main/src-tauri/src/engine/recovery/document.rs"
click node_document_commands "https://github.com/zevarix/cryptography-playground/blob/main/src-tauri/src/documents/commands.rs"
click node_document_jobs "https://github.com/zevarix/cryptography-playground/blob/main/src-tauri/src/documents/jobs.rs"
click node_document_storage "https://github.com/zevarix/cryptography-playground/blob/main/src-tauri/src/documents/storage.rs"
click node_document_transform "https://github.com/zevarix/cryptography-playground/blob/main/src-tauri/src/documents/transform.rs"
click node_document_stream "https://github.com/zevarix/cryptography-playground/blob/main/src-tauri/src/documents/stream.rs"
click node_document_reconstruct "https://github.com/zevarix/cryptography-playground/blob/main/src-tauri/src/documents/reconstruct.rs"
click node_document_export "https://github.com/zevarix/cryptography-playground/blob/main/src-tauri/src/documents/export.rs"
click node_document_activities "https://github.com/zevarix/cryptography-playground/blob/main/src-tauri/src/documents/activities.rs"

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_recipe_ui,node_document_ui,node_recipe_types,node_document_types,node_user toneBlue
class node_recipe_catalog,node_recipe_store,node_fingerprints,node_recipe_lookup,node_file_system toneAmber
class node_cipher_engine,node_classical,node_phonetic_recovery,node_recovery_document toneMint
class node_document_commands,node_document_jobs,node_document_storage,node_document_transform,node_document_stream,node_document_reconstruct,node_document_export,node_document_activities toneRose
```

## Components

### Desktop notebook

- [Workbench shell](https://github.com/zevarix/cryptography-playground/blob/main/src/App.tsx): `src/App.tsx`
- [Recipe editor](https://github.com/zevarix/cryptography-playground/blob/main/src/RecipePage.tsx): `src/RecipePage.tsx`
- [File panel](https://github.com/zevarix/cryptography-playground/blob/main/src/DocumentPanel.tsx): `src/DocumentPanel.tsx`
- [Recipe types](https://github.com/zevarix/cryptography-playground/blob/main/src/recipeTypes.ts): `src/recipeTypes.ts`
- [Document types](https://github.com/zevarix/cryptography-playground/blob/main/src/documentTypes.ts): `src/documentTypes.ts`

### Recipe management

- [Recipe rules](https://github.com/zevarix/cryptography-playground/blob/main/src-tauri/src/recipes.rs): `src-tauri/src/recipes.rs`
- [Local recipe store](https://github.com/zevarix/cryptography-playground/blob/main/src-tauri/src/recipes/store.rs): `src-tauri/src/recipes/store.rs`
- [Recipe fingerprints](https://github.com/zevarix/cryptography-playground/blob/main/src-tauri/src/recipes/fingerprint.rs): `src-tauri/src/recipes/fingerprint.rs`
- [Fingerprint lookup](https://github.com/zevarix/cryptography-playground/blob/main/src-tauri/src/recipes/lookup.rs): `src-tauri/src/recipes/lookup.rs`

### Cipher and recovery

- [Cipher engine](https://github.com/zevarix/cryptography-playground/blob/main/src-tauri/src/engine.rs): `src-tauri/src/engine.rs`
- [Classical ciphers](https://github.com/zevarix/cryptography-playground/blob/main/src-tauri/src/recipes/classical.rs): `src-tauri/src/recipes/classical.rs`
- [Phonetic recovery](https://github.com/zevarix/cryptography-playground/blob/main/src-tauri/src/engine/recovery.rs): `src-tauri/src/engine/recovery.rs`
- [Candidate search](https://github.com/zevarix/cryptography-playground/blob/main/src-tauri/src/engine/recovery/document.rs): `src-tauri/src/engine/recovery/document.rs`

### Document processing

- [Document commands](https://github.com/zevarix/cryptography-playground/blob/main/src-tauri/src/documents/commands.rs): `src-tauri/src/documents/commands.rs`
- [Processing jobs](https://github.com/zevarix/cryptography-playground/blob/main/src-tauri/src/documents/jobs.rs): `src-tauri/src/documents/jobs.rs`
- [File snapshots](https://github.com/zevarix/cryptography-playground/blob/main/src-tauri/src/documents/storage.rs): `src-tauri/src/documents/storage.rs`
- [Text transforms](https://github.com/zevarix/cryptography-playground/blob/main/src-tauri/src/documents/transform.rs): `src-tauri/src/documents/transform.rs`
- [Artifact streams](https://github.com/zevarix/cryptography-playground/blob/main/src-tauri/src/documents/stream.rs): `src-tauri/src/documents/stream.rs`
- [English readings](https://github.com/zevarix/cryptography-playground/blob/main/src-tauri/src/documents/reconstruct.rs): `src-tauri/src/documents/reconstruct.rs`
- [Save As export](https://github.com/zevarix/cryptography-playground/blob/main/src-tauri/src/documents/export.rs): `src-tauri/src/documents/export.rs`
- [Document activities](https://github.com/zevarix/cryptography-playground/blob/main/src-tauri/src/documents/activities.rs): `src-tauri/src/documents/activities.rs`

### Other components

- **Notebook user**
- **Local files**

## Connections

- Notebook user → Workbench shell: uses (evidence: `README.md`)
- Workbench shell → Recipe editor: renders (evidence: `src/App.tsx`)
- Workbench shell → File panel: renders (evidence: `src/App.tsx`)
- Recipe editor → Recipe types: uses types (evidence: `src/RecipePage.tsx`)
- File panel → Document types: uses types (evidence: `src/DocumentPanel.tsx`)
- File panel → Recipe types: uses types (evidence: `src/DocumentPanel.tsx`)
- Recipe editor → Recipe rules: edits recipes (evidence: `README.md`)
- Workbench shell → Local recipe store: manages saved recipes (evidence: `README.md`)
- Recipe rules → Cipher engine: runs phonetic rules (evidence: `src-tauri/src/recipes.rs`)
- Recipe rules → Phonetic recovery: decodes readings (evidence: `src-tauri/src/recipes.rs`)
- Recipe rules → Classical ciphers: uses adapters (evidence: `src-tauri/src/recipes.rs`)
- Recipe rules → Recipe fingerprints: derives parameters (evidence: `src-tauri/src/recipes.rs`)
- Fingerprint lookup → Recipe fingerprints: checks identifiers (evidence: `src-tauri/src/recipes/lookup.rs`)
- File panel → Document commands: requests processing
- Document commands → Recipe rules: uses recipes (evidence: `src-tauri/src/documents/commands.rs`)
- Document commands → English readings: requests readings (evidence: `src-tauri/src/documents/commands.rs`)
- Processing jobs → Recipe rules: processes recipes (evidence: `src-tauri/src/documents/jobs.rs`)
- Processing jobs → English readings: supports readings (evidence: `src-tauri/src/documents/jobs.rs`)
- Document activities → English readings: coordinates readings (evidence: `src-tauri/src/documents/activities.rs`)
- English readings → Candidate search: searches candidates (evidence: `src-tauri/src/documents/reconstruct.rs`)
- English readings → Text transforms: handles skeletons (evidence: `src-tauri/src/documents/reconstruct.rs`)
- File snapshots → Artifact streams: streams snapshots (evidence: `src-tauri/src/documents/storage.rs`)
- Save As export → Processing jobs: saves job output (evidence: `src-tauri/src/documents/export.rs`)
- Save As export → Local files: writes new files (evidence: `src-tauri/src/documents/export.rs`)
- File snapshots → Local files: captures source (evidence: `src-tauri/src/documents/storage.rs`)
- File panel → Local files: opens and saves files (evidence: `README.md`)
