# flutterindiadev1/sdui_flutter architecture

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

- Interactive diagram: https://gitdiagram.com/flutterindiadev1/sdui_flutter
- Repository: https://github.com/flutterindiadev1/sdui_flutter

## Overview

SDUI Flutter Sanity lets an app request a screen by slug, retrieve its Sanity-authored component tree, render it as Flutter widgets, and keep it current with realtime updates and cached configuration. Sanity Studio supplies page and component schemas; the Flutter runtime provides configuration, fetching, caching, component/action extension points, and rendering. The README also documents CLI generation of components, actions, and seed data. Runtime source excerpts were not provided, so uncertain internal call wiring is omitted; links reflect documented behavior and sampled schema structure.

Main entry points: [`lib/sdui_core/view/sdui_view.dart`](https://github.com/flutterindiadev1/sdui_flutter/blob/main/lib/sdui_core/view/sdui_view.dart) (Screen view), [`lib/sdui_core/sdui_engine.dart`](https://github.com/flutterindiadev1/sdui_flutter/blob/main/lib/sdui_core/sdui_engine.dart) (SDUI engine), [`bin/generate.dart`](https://github.com/flutterindiadev1/sdui_flutter/blob/main/bin/generate.dart) (Generator entry), [`sanity_studio/schemas/components/uiElements.ts`](https://github.com/flutterindiadev1/sdui_flutter/blob/main/sanity_studio/schemas/components/uiElements.ts) (UI schemas)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_authoring["Content authoring"]
  node_studio["Sanity Studio<br/>[sanity.config.js]"]
  node_page_schema["Page schema<br/>[pageConfig.ts]"]
  node_element_schemas["UI schemas<br/>[uiElements.ts]"]
  node_schema_index["Schema registry<br/>[index.ts]"]
end

subgraph group_runtime["Flutter runtime"]
  node_engine["SDUI engine<br/>[sdui_engine.dart]"]
  node_config["SDUI config<br/>[sdui_config.dart]"]
  node_view["Screen view<br/>[sdui_view.dart]"]
  node_controller["Config controller"]
  node_client["Sanity client<br/>[sanity_client.dart]"]
  node_realtime["Realtime listener"]
  node_cache[("Config cache<br/>[config_cache.dart]")]
  node_node["UI node<br/>[ui_node.dart]"]
end

subgraph group_extensions["Extensions"]
  node_registry["Component registry"]
  node_component["Custom components"]
  node_action["Action model<br/>[sdui_action.dart]"]
  node_handler["Action handlers"]
end

subgraph group_generation["CLI generation"]
  node_cli["Generator entry<br/>[generate.dart]"]
  node_component_gen["Component generator"]
  node_action_gen["Action generator"]
  node_seed_gen["Seed generator"]
end

node_app(("Flutter app"))
node_sanity[("Sanity CMS")]

node_studio -->|"authors pages"| node_page_schema
node_studio -->|"authors components"| node_element_schemas
node_schema_index -->|"registers"| node_page_schema
node_schema_index -->|"registers"| node_element_schemas
node_page_schema -->|"defines page content"| node_sanity
node_element_schemas -->|"defines UI content"| node_sanity
node_app -->|"initializes"| node_engine
node_app -->|"requests screen"| node_view
node_view -->|"loads config"| node_controller
node_controller -->|"fetches config"| node_client
node_client -->|"queries GROQ"| node_sanity
node_view -->|"caches config"| node_cache
node_view -->|"subscribes updates"| node_realtime
node_realtime -->|"receives SSE"| node_sanity
node_view -->|"renders tree"| node_node
node_engine -->|"uses settings"| node_config
node_engine -->|"registers components"| node_registry
node_registry -->|"resolves types"| node_component
node_engine -->|"registers handlers"| node_handler
node_component -->|"builds from node"| node_node
node_handler -->|"handles actions"| node_action
node_app -->|"runs generator"| node_cli
node_cli -->|"dispatches component"| node_component_gen
node_cli -->|"dispatches action"| node_action_gen
node_cli -->|"dispatches seed"| node_seed_gen
node_component_gen -.->|"generates schema"| node_element_schemas

click node_studio "https://github.com/flutterindiadev1/sdui_flutter/blob/main/sanity_studio/sanity.config.js"
click node_page_schema "https://github.com/flutterindiadev1/sdui_flutter/blob/main/sanity_studio/schemas/pageConfig.ts"
click node_element_schemas "https://github.com/flutterindiadev1/sdui_flutter/blob/main/sanity_studio/schemas/components/uiElements.ts"
click node_schema_index "https://github.com/flutterindiadev1/sdui_flutter/blob/main/sanity_studio/schemas/index.ts"
click node_engine "https://github.com/flutterindiadev1/sdui_flutter/blob/main/lib/sdui_core/sdui_engine.dart"
click node_config "https://github.com/flutterindiadev1/sdui_flutter/blob/main/lib/sdui_core/config/sdui_config.dart"
click node_view "https://github.com/flutterindiadev1/sdui_flutter/blob/main/lib/sdui_core/view/sdui_view.dart"
click node_controller "https://github.com/flutterindiadev1/sdui_flutter/blob/main/lib/sdui_core/controller/config_controller.dart"
click node_client "https://github.com/flutterindiadev1/sdui_flutter/blob/main/lib/sdui_core/client/sanity_client.dart"
click node_realtime "https://github.com/flutterindiadev1/sdui_flutter/blob/main/lib/sdui_core/client/realtime_listener.dart"
click node_cache "https://github.com/flutterindiadev1/sdui_flutter/blob/main/lib/sdui_core/cache/config_cache.dart"
click node_node "https://github.com/flutterindiadev1/sdui_flutter/blob/main/lib/sdui_core/models/ui_node.dart"
click node_registry "https://github.com/flutterindiadev1/sdui_flutter/blob/main/lib/sdui_core/registry/component_registry.dart"
click node_component "https://github.com/flutterindiadev1/sdui_flutter/blob/main/lib/sdui_core/registry/sdui_component.dart"
click node_action "https://github.com/flutterindiadev1/sdui_flutter/blob/main/lib/sdui_core/registry/sdui_action.dart"
click node_handler "https://github.com/flutterindiadev1/sdui_flutter/blob/main/lib/sdui_core/registry/sdui_action_handler.dart"
click node_cli "https://github.com/flutterindiadev1/sdui_flutter/blob/main/bin/generate.dart"
click node_component_gen "https://github.com/flutterindiadev1/sdui_flutter/blob/main/lib/sdui_cli/component_generator.dart"
click node_action_gen "https://github.com/flutterindiadev1/sdui_flutter/blob/main/lib/sdui_cli/action_generator.dart"
click node_seed_gen "https://github.com/flutterindiadev1/sdui_flutter/blob/main/lib/sdui_cli/seed_generator.dart"

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_studio,node_page_schema,node_element_schemas,node_schema_index toneBlue
class node_engine,node_config,node_view,node_controller,node_client,node_realtime,node_cache,node_node,node_sanity toneAmber
class node_registry,node_component,node_action,node_handler toneMint
class node_cli,node_component_gen,node_action_gen,node_seed_gen toneRose
class node_app toneIndigo
```

## Components

### Content authoring

- [Sanity Studio](https://github.com/flutterindiadev1/sdui_flutter/blob/main/sanity_studio/sanity.config.js): `sanity_studio/sanity.config.js`
- [Page schema](https://github.com/flutterindiadev1/sdui_flutter/blob/main/sanity_studio/schemas/pageConfig.ts): `sanity_studio/schemas/pageConfig.ts`
- [UI schemas](https://github.com/flutterindiadev1/sdui_flutter/blob/main/sanity_studio/schemas/components/uiElements.ts): `sanity_studio/schemas/components/uiElements.ts`
- [Schema registry](https://github.com/flutterindiadev1/sdui_flutter/blob/main/sanity_studio/schemas/index.ts): `sanity_studio/schemas/index.ts`

### Flutter runtime

- [SDUI engine](https://github.com/flutterindiadev1/sdui_flutter/blob/main/lib/sdui_core/sdui_engine.dart): `lib/sdui_core/sdui_engine.dart`
- [SDUI config](https://github.com/flutterindiadev1/sdui_flutter/blob/main/lib/sdui_core/config/sdui_config.dart): `lib/sdui_core/config/sdui_config.dart`
- [Screen view](https://github.com/flutterindiadev1/sdui_flutter/blob/main/lib/sdui_core/view/sdui_view.dart): `lib/sdui_core/view/sdui_view.dart`
- [Config controller](https://github.com/flutterindiadev1/sdui_flutter/blob/main/lib/sdui_core/controller/config_controller.dart): `lib/sdui_core/controller/config_controller.dart`
- [Sanity client](https://github.com/flutterindiadev1/sdui_flutter/blob/main/lib/sdui_core/client/sanity_client.dart): `lib/sdui_core/client/sanity_client.dart`
- [Realtime listener](https://github.com/flutterindiadev1/sdui_flutter/blob/main/lib/sdui_core/client/realtime_listener.dart): `lib/sdui_core/client/realtime_listener.dart`
- [Config cache](https://github.com/flutterindiadev1/sdui_flutter/blob/main/lib/sdui_core/cache/config_cache.dart): `lib/sdui_core/cache/config_cache.dart`
- [UI node](https://github.com/flutterindiadev1/sdui_flutter/blob/main/lib/sdui_core/models/ui_node.dart): `lib/sdui_core/models/ui_node.dart`

### Extensions

- [Component registry](https://github.com/flutterindiadev1/sdui_flutter/blob/main/lib/sdui_core/registry/component_registry.dart): `lib/sdui_core/registry/component_registry.dart`
- [Custom components](https://github.com/flutterindiadev1/sdui_flutter/blob/main/lib/sdui_core/registry/sdui_component.dart): `lib/sdui_core/registry/sdui_component.dart`
- [Action model](https://github.com/flutterindiadev1/sdui_flutter/blob/main/lib/sdui_core/registry/sdui_action.dart): `lib/sdui_core/registry/sdui_action.dart`
- [Action handlers](https://github.com/flutterindiadev1/sdui_flutter/blob/main/lib/sdui_core/registry/sdui_action_handler.dart): `lib/sdui_core/registry/sdui_action_handler.dart`

### CLI generation

- [Generator entry](https://github.com/flutterindiadev1/sdui_flutter/blob/main/bin/generate.dart): `bin/generate.dart`
- [Component generator](https://github.com/flutterindiadev1/sdui_flutter/blob/main/lib/sdui_cli/component_generator.dart): `lib/sdui_cli/component_generator.dart`
- [Action generator](https://github.com/flutterindiadev1/sdui_flutter/blob/main/lib/sdui_cli/action_generator.dart): `lib/sdui_cli/action_generator.dart`
- [Seed generator](https://github.com/flutterindiadev1/sdui_flutter/blob/main/lib/sdui_cli/seed_generator.dart): `lib/sdui_cli/seed_generator.dart`

### Other components

- **Flutter app**
- **Sanity CMS**

## Connections

- Sanity Studio → Page schema: authors pages
- Sanity Studio → UI schemas: authors components
- Schema registry → Page schema: registers
- Schema registry → UI schemas: registers
- Page schema → Sanity CMS: defines page content
- UI schemas → Sanity CMS: defines UI content
- Flutter app → SDUI engine: initializes
- Flutter app → Screen view: requests screen
- Screen view → Config controller: loads config
- Config controller → Sanity client: fetches config
- Sanity client → Sanity CMS: queries GROQ
- Screen view → Config cache: caches config
- Screen view → Realtime listener: subscribes updates
- Realtime listener → Sanity CMS: receives SSE
- Screen view → UI node: renders tree
- SDUI engine → SDUI config: uses settings
- SDUI engine → Component registry: registers components
- Component registry → Custom components: resolves types
- SDUI engine → Action handlers: registers handlers
- Custom components → UI node: builds from node
- Action handlers → Action model: handles actions
- Flutter app → Generator entry: runs generator
- Generator entry → Component generator: dispatches component
- Generator entry → Action generator: dispatches action
- Generator entry → Seed generator: dispatches seed
- Component generator → UI schemas: generates schema
