# infinitedim/justui architecture

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

- Interactive diagram: https://gitdiagram.com/infinitedim/justui
- Repository: https://github.com/infinitedim/justui

## Overview

JustUI is a Flutter UI component source generator: developers use its Rust CLI to configure a project, discover registry components, and copy selected source into their own codebase. The add flow resolves registry metadata and dependencies, rewrites imports, optionally adapts Dart constructors, verifies integrity, and writes files and declared dependencies. The repository also contains reusable component implementations, theme and token libraries, and visual presets. Command wiring and several subsystems are inferred from README and tree where excerpts were unavailable.

Main entry points: [`packages/cli/src/commands/add.rs`](https://github.com/infinitedim/justui/blob/main/packages/cli/src/commands/add.rs) (Add Components), [`packages/cli/src/main.rs`](https://github.com/infinitedim/justui/blob/main/packages/cli/src/main.rs) (CLI Entry), [`packages/cli/src/registry.rs`](https://github.com/infinitedim/justui/blob/main/packages/cli/src/registry.rs) (Registry Client), [`packages/cli/src/commands`](https://github.com/infinitedim/justui/tree/main/packages/cli/src/commands) (Project Setup)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_cli["Rust CLI"]
  node_cli_entry["CLI Entry<br/>[main.rs]"]
  node_setup["Project Setup"]
  node_add["Add Components<br/>[add.rs]"]
  node_discovery["Discovery &amp; Inspection"]
  node_lifecycle["Component Lifecycle"]
  node_config["Project Config<br/>[config.rs]"]
  node_registry_client["Registry Client<br/>[registry.rs]"]
  node_rewriter["Import Rewriter<br/>[import_rewriter.rs]"]
  node_transpiler["Dart Transpiler"]
  node_pubspec["Dependency Editor<br/>[pubspec_editor.rs]"]
end

subgraph group_registry["Component Registry"]
  node_registry_service[("Component Registry")]
  node_component_sources["Component Sources"]
  node_presets["Visual Presets"]
end

subgraph group_design["UI Design System"]
  node_core_components["Flutter Components"]
  node_theme_engine["Theme Engine"]
  node_design_tokens["Design Tokens"]
end

subgraph group_project["Target Project"]
  node_project_files["Project Files"]
  node_project_pubspec["Project Pubspec"]
end

node_developer(("Developer"))

node_developer -->|"runs commands"| node_cli_entry
node_cli_entry -->|"dispatches"| node_setup
node_cli_entry -->|"dispatches"| node_add
node_cli_entry -->|"dispatches"| node_discovery
node_cli_entry -->|"dispatches"| node_lifecycle
node_setup -->|"writes config"| node_config
node_setup -->|"generates theme"| node_project_files
node_discovery -->|"reads settings"| node_config
node_discovery -->|"fetches metadata"| node_registry_client
node_lifecycle -->|"checks registry"| node_registry_client
node_add -->|"reads settings"| node_config
node_add -->|"fetches sources"| node_registry_client
node_registry_client -->|"reads index and files"| node_registry_service
node_add -->|"rewrites imports"| node_rewriter
node_add -->|"adapts constructors"| node_transpiler
node_add -->|"writes components"| node_project_files
node_add -->|"adds dependencies"| node_pubspec
node_pubspec -->|"edits"| node_project_pubspec
node_component_sources -.->|"provides implementations"| node_core_components
node_presets -.->|"provides theme variants"| node_theme_engine
node_theme_engine -->|"uses tokens"| node_design_tokens

click node_cli_entry "https://github.com/infinitedim/justui/blob/main/packages/cli/src/main.rs"
click node_setup "https://github.com/infinitedim/justui/tree/main/packages/cli/src/commands"
click node_add "https://github.com/infinitedim/justui/blob/main/packages/cli/src/commands/add.rs"
click node_discovery "https://github.com/infinitedim/justui/tree/main/packages/cli/src/commands"
click node_lifecycle "https://github.com/infinitedim/justui/tree/main/packages/cli/src/commands"
click node_config "https://github.com/infinitedim/justui/blob/main/packages/cli/src/config.rs"
click node_registry_client "https://github.com/infinitedim/justui/blob/main/packages/cli/src/registry.rs"
click node_rewriter "https://github.com/infinitedim/justui/blob/main/packages/cli/src/utils/import_rewriter.rs"
click node_transpiler "https://github.com/infinitedim/justui/blob/main/packages/cli/src/utils/constructor_transpiler.rs"
click node_pubspec "https://github.com/infinitedim/justui/blob/main/packages/cli/src/utils/pubspec_editor.rs"
click node_registry_service "https://github.com/infinitedim/justui/tree/main/registry"
click node_component_sources "https://github.com/infinitedim/justui/tree/main/registry/components"
click node_core_components "https://github.com/infinitedim/justui/tree/main/packages/core/lib/src/components"
click node_theme_engine "https://github.com/infinitedim/justui/tree/main/packages/core/lib/src/theme"
click node_design_tokens "https://github.com/infinitedim/justui/tree/main/packages/tokens/lib/src"
click node_presets "https://github.com/infinitedim/justui/tree/main/registry/components"

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_cli_entry,node_setup,node_add,node_discovery,node_lifecycle,node_config,node_registry_client,node_rewriter,node_transpiler,node_pubspec toneBlue
class node_registry_service,node_component_sources,node_presets toneAmber
class node_core_components,node_theme_engine,node_design_tokens toneMint
class node_project_files,node_project_pubspec toneRose
class node_developer toneIndigo
```

## Components

### Rust CLI

- [CLI Entry](https://github.com/infinitedim/justui/blob/main/packages/cli/src/main.rs): `packages/cli/src/main.rs`
- [Project Setup](https://github.com/infinitedim/justui/tree/main/packages/cli/src/commands): `packages/cli/src/commands`
- [Add Components](https://github.com/infinitedim/justui/blob/main/packages/cli/src/commands/add.rs): `packages/cli/src/commands/add.rs`
- [Discovery & Inspection](https://github.com/infinitedim/justui/tree/main/packages/cli/src/commands): `packages/cli/src/commands`
- [Component Lifecycle](https://github.com/infinitedim/justui/tree/main/packages/cli/src/commands): `packages/cli/src/commands`
- [Project Config](https://github.com/infinitedim/justui/blob/main/packages/cli/src/config.rs): `packages/cli/src/config.rs`
- [Registry Client](https://github.com/infinitedim/justui/blob/main/packages/cli/src/registry.rs): `packages/cli/src/registry.rs`
- [Import Rewriter](https://github.com/infinitedim/justui/blob/main/packages/cli/src/utils/import_rewriter.rs): `packages/cli/src/utils/import_rewriter.rs`
- [Dart Transpiler](https://github.com/infinitedim/justui/blob/main/packages/cli/src/utils/constructor_transpiler.rs): `packages/cli/src/utils/constructor_transpiler.rs`
- [Dependency Editor](https://github.com/infinitedim/justui/blob/main/packages/cli/src/utils/pubspec_editor.rs): `packages/cli/src/utils/pubspec_editor.rs`

### Component Registry

- [Component Registry](https://github.com/infinitedim/justui/tree/main/registry): `registry`
- [Component Sources](https://github.com/infinitedim/justui/tree/main/registry/components): `registry/components`
- [Visual Presets](https://github.com/infinitedim/justui/tree/main/registry/components): `registry/components`

### UI Design System

- [Flutter Components](https://github.com/infinitedim/justui/tree/main/packages/core/lib/src/components): `packages/core/lib/src/components`
- [Theme Engine](https://github.com/infinitedim/justui/tree/main/packages/core/lib/src/theme): `packages/core/lib/src/theme`
- [Design Tokens](https://github.com/infinitedim/justui/tree/main/packages/tokens/lib/src): `packages/tokens/lib/src`

### Target Project

- **Project Files**
- **Project Pubspec**

### Other components

- **Developer**

## Connections

- Developer → CLI Entry: runs commands
- CLI Entry → Project Setup: dispatches
- CLI Entry → Add Components: dispatches
- CLI Entry → Discovery & Inspection: dispatches
- CLI Entry → Component Lifecycle: dispatches
- Project Setup → Project Config: writes config
- Project Setup → Project Files: generates theme
- Discovery & Inspection → Project Config: reads settings
- Discovery & Inspection → Registry Client: fetches metadata
- Component Lifecycle → Registry Client: checks registry
- Add Components → Project Config: reads settings
- Add Components → Registry Client: fetches sources
- Registry Client → Component Registry: reads index and files
- Add Components → Import Rewriter: rewrites imports
- Add Components → Dart Transpiler: adapts constructors
- Add Components → Project Files: writes components
- Add Components → Dependency Editor: adds dependencies
- Dependency Editor → Project Pubspec: edits
- Component Sources → Flutter Components: provides implementations
- Visual Presets → Theme Engine: provides theme variants
- Theme Engine → Design Tokens: uses tokens
