# nrusimhavadrevu/promptcraft architecture

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

- Interactive diagram: https://gitdiagram.com/nrusimhavadrevu/promptcraft
- Repository: https://github.com/nrusimhavadrevu/promptcraft

## Overview

PromptLab is a browser-based prompt-improvement workshop: users enter a request, tune its intended role and response style, choose target models, and receive optimized prompt variants with comparison and quality feedback. The sampled code establishes the main App-to-engine flow and input variable detection; the README is only a Vite template, so it documents no product capabilities. Other branches are represented from component names and the supplied component excerpts, with uncertain wiring omitted.

Main entry points: [`src/App.tsx`](https://github.com/nrusimhavadrevu/promptcraft/blob/main/src/App.tsx) (Workshop app), [`src/components/PromptInputArea.tsx`](https://github.com/nrusimhavadrevu/promptcraft/blob/main/src/components/PromptInputArea.tsx) (Prompt input), [`src/components/TemplateLibraryModal.tsx`](https://github.com/nrusimhavadrevu/promptcraft/blob/main/src/components/TemplateLibraryModal.tsx) (Template library), [`src/utils/optimizerEngine.ts`](https://github.com/nrusimhavadrevu/promptcraft/blob/main/src/utils/optimizerEngine.ts) (Optimizer engine)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_workflow["Prompt workflow"]
  node_app["Workshop app<br/>[App.tsx]"]
  node_input["Prompt input"]
  node_tuning["Tuning controls<br/>[TuningPanel.tsx]"]
  node_engine["Optimizer engine<br/>[optimizerEngine.ts]"]
  node_header["Header controls<br/>[Header.tsx]"]
end

subgraph group_results["Review and export"]
  node_outputs["Model outputs"]
  node_score["Quality feedback<br/>[ScoreCard.tsx]"]
  node_matrix["Model comparison"]
  node_diff["Prompt diff<br/>[DiffViewer.tsx]"]
  node_export["Export dialog<br/>[ExportModal.tsx]"]
  node_expand["Expanded output<br/>[ExpandModal.tsx]"]
end

subgraph group_support["Workshop support"]
  node_templates["Template library"]
  node_template_data["Prompt templates<br/>[templates.ts]"]
  node_history["History drawer<br/>[HistoryDrawer.tsx]"]
  node_guide["Walkthrough guide"]
  node_ruler["Workshop ruler<br/>[WorkshopRuler.tsx]"]
end

subgraph group_core["Application core"]
  node_types["Prompt data types<br/>[prompt.ts]"]
  node_runtime["React entry<br/>[main.tsx]"]
end

node_user(("Prompt author"))

node_user -->|"enters request"| node_input
node_runtime -->|"renders"| node_app
node_app -->|"renders"| node_input
node_app -->|"renders"| node_header
node_app -->|"renders"| node_ruler
node_app -->|"optimizes request"| node_engine
node_input -->|"detects variables"| node_engine
node_app -->|"shows variants"| node_outputs
node_app -->|"shows evaluation"| node_score
node_app -->|"shows comparison"| node_matrix
node_app -->|"shows changes"| node_diff
node_app -->|"opens library"| node_templates
node_templates -->|"uses examples"| node_template_data
node_app -->|"opens history"| node_history
node_app -->|"opens guide"| node_guide
node_app -->|"shows settings"| node_tuning
node_app -->|"opens export"| node_export
node_app -->|"opens output"| node_expand

click node_app "https://github.com/nrusimhavadrevu/promptcraft/blob/main/src/App.tsx"
click node_input "https://github.com/nrusimhavadrevu/promptcraft/blob/main/src/components/PromptInputArea.tsx"
click node_tuning "https://github.com/nrusimhavadrevu/promptcraft/blob/main/src/components/TuningPanel.tsx"
click node_engine "https://github.com/nrusimhavadrevu/promptcraft/blob/main/src/utils/optimizerEngine.ts"
click node_types "https://github.com/nrusimhavadrevu/promptcraft/blob/main/src/types/prompt.ts"
click node_templates "https://github.com/nrusimhavadrevu/promptcraft/blob/main/src/components/TemplateLibraryModal.tsx"
click node_template_data "https://github.com/nrusimhavadrevu/promptcraft/blob/main/src/data/templates.ts"
click node_history "https://github.com/nrusimhavadrevu/promptcraft/blob/main/src/components/HistoryDrawer.tsx"
click node_guide "https://github.com/nrusimhavadrevu/promptcraft/blob/main/src/components/WalkthroughGuide.tsx"
click node_header "https://github.com/nrusimhavadrevu/promptcraft/blob/main/src/components/Header.tsx"
click node_outputs "https://github.com/nrusimhavadrevu/promptcraft/blob/main/src/components/ModelOutputCard.tsx"
click node_score "https://github.com/nrusimhavadrevu/promptcraft/blob/main/src/components/ScoreCard.tsx"
click node_matrix "https://github.com/nrusimhavadrevu/promptcraft/blob/main/src/components/ComparisonMatrix.tsx"
click node_diff "https://github.com/nrusimhavadrevu/promptcraft/blob/main/src/components/DiffViewer.tsx"
click node_export "https://github.com/nrusimhavadrevu/promptcraft/blob/main/src/components/ExportModal.tsx"
click node_expand "https://github.com/nrusimhavadrevu/promptcraft/blob/main/src/components/ExpandModal.tsx"
click node_ruler "https://github.com/nrusimhavadrevu/promptcraft/blob/main/src/components/WorkshopRuler.tsx"
click node_runtime "https://github.com/nrusimhavadrevu/promptcraft/blob/main/src/main.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_input,node_tuning,node_engine,node_header toneBlue
class node_outputs,node_score,node_matrix,node_diff,node_export,node_expand toneAmber
class node_templates,node_template_data,node_history,node_guide,node_ruler toneMint
class node_types,node_runtime toneRose
class node_user toneIndigo
```

## Components

### Prompt workflow

- [Workshop app](https://github.com/nrusimhavadrevu/promptcraft/blob/main/src/App.tsx): `src/App.tsx`
- [Prompt input](https://github.com/nrusimhavadrevu/promptcraft/blob/main/src/components/PromptInputArea.tsx): `src/components/PromptInputArea.tsx`
- [Tuning controls](https://github.com/nrusimhavadrevu/promptcraft/blob/main/src/components/TuningPanel.tsx): `src/components/TuningPanel.tsx`
- [Optimizer engine](https://github.com/nrusimhavadrevu/promptcraft/blob/main/src/utils/optimizerEngine.ts): `src/utils/optimizerEngine.ts`
- [Header controls](https://github.com/nrusimhavadrevu/promptcraft/blob/main/src/components/Header.tsx): `src/components/Header.tsx`

### Review and export

- [Model outputs](https://github.com/nrusimhavadrevu/promptcraft/blob/main/src/components/ModelOutputCard.tsx): `src/components/ModelOutputCard.tsx`
- [Quality feedback](https://github.com/nrusimhavadrevu/promptcraft/blob/main/src/components/ScoreCard.tsx): `src/components/ScoreCard.tsx`
- [Model comparison](https://github.com/nrusimhavadrevu/promptcraft/blob/main/src/components/ComparisonMatrix.tsx): `src/components/ComparisonMatrix.tsx`
- [Prompt diff](https://github.com/nrusimhavadrevu/promptcraft/blob/main/src/components/DiffViewer.tsx): `src/components/DiffViewer.tsx`
- [Export dialog](https://github.com/nrusimhavadrevu/promptcraft/blob/main/src/components/ExportModal.tsx): `src/components/ExportModal.tsx`
- [Expanded output](https://github.com/nrusimhavadrevu/promptcraft/blob/main/src/components/ExpandModal.tsx): `src/components/ExpandModal.tsx`

### Workshop support

- [Template library](https://github.com/nrusimhavadrevu/promptcraft/blob/main/src/components/TemplateLibraryModal.tsx): `src/components/TemplateLibraryModal.tsx`
- [Prompt templates](https://github.com/nrusimhavadrevu/promptcraft/blob/main/src/data/templates.ts): `src/data/templates.ts`
- [History drawer](https://github.com/nrusimhavadrevu/promptcraft/blob/main/src/components/HistoryDrawer.tsx): `src/components/HistoryDrawer.tsx`
- [Walkthrough guide](https://github.com/nrusimhavadrevu/promptcraft/blob/main/src/components/WalkthroughGuide.tsx): `src/components/WalkthroughGuide.tsx`
- [Workshop ruler](https://github.com/nrusimhavadrevu/promptcraft/blob/main/src/components/WorkshopRuler.tsx): `src/components/WorkshopRuler.tsx`

### Application core

- [Prompt data types](https://github.com/nrusimhavadrevu/promptcraft/blob/main/src/types/prompt.ts): `src/types/prompt.ts`
- [React entry](https://github.com/nrusimhavadrevu/promptcraft/blob/main/src/main.tsx): `src/main.tsx`

### Other components

- **Prompt author**

## Connections

- Prompt author → Prompt input: enters request
- React entry → Workshop app: renders
- Workshop app → Prompt input: renders
- Workshop app → Header controls: renders
- Workshop app → Workshop ruler: renders
- Workshop app → Optimizer engine: optimizes request
- Prompt input → Optimizer engine: detects variables
- Workshop app → Model outputs: shows variants
- Workshop app → Quality feedback: shows evaluation
- Workshop app → Model comparison: shows comparison
- Workshop app → Prompt diff: shows changes
- Workshop app → Template library: opens library
- Template library → Prompt templates: uses examples
- Workshop app → History drawer: opens history
- Workshop app → Walkthrough guide: opens guide
- Workshop app → Tuning controls: shows settings
- Workshop app → Export dialog: opens export
- Workshop app → Expanded output: opens output
