# germanbisurgi/jedison architecture

> Architecture diagram of the GitHub repository germanbisurgi/jedison, 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/germanbisurgi/jedison
- Repository: https://github.com/germanbisurgi/jedison

## Overview

Jedison is a framework-agnostic JSON Schema form generator and validator. Its principal workflow accepts a schema and initial data, resolves references, builds a form from schema-shaped instances, renders controls with a selected theme, and reports validation errors as users edit. It also supports headless validation and schema generation. The README documents these capabilities; sampled source confirms the validator’s draft and constraint dispatch, reference fetching, and object-child creation, but does not expose all runtime orchestration, so uncertain call links are omitted.

Main entry points: [`src/jedison.js`](https://github.com/germanbisurgi/jedison/blob/main/src/jedison.js) (Jedison Create), [`src/ref-parser/ref-parser.js`](https://github.com/germanbisurgi/jedison/blob/main/src/ref-parser/ref-parser.js) (Reference Parser), [`src/validation/validator.js`](https://github.com/germanbisurgi/jedison/blob/main/src/validation/validator.js) (Validator), [`src/editors/editor.js`](https://github.com/germanbisurgi/jedison/blob/main/src/editors/editor.js) (Schema Editors)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_entry["Public API"]
  node_jedison["Jedison Create<br/>[jedison.js]"]
  node_public_api["Library Exports<br/>[index.js]"]
end

subgraph group_schema["Schema Processing"]
  node_ref_parser["Reference Parser<br/>[ref-parser.js]"]
  node_json_walker["JSON Walker<br/>[json-walker.js]"]
  node_schema_helpers["Schema Helpers<br/>[schema.js]"]
  node_schema_generator["Schema Generator"]
end

subgraph group_form["Form Runtime"]
  node_instances["Typed Instances<br/>[instance.js]"]
  node_object_instance["Object Instance<br/>[object.js]"]
  node_editors["Schema Editors<br/>[editor.js]"]
  node_ui_resolver["UI Resolver<br/>[ui-resolver.js]"]
end

subgraph group_validation["Validation"]
  node_validator["Validator<br/>[validator.js]"]
  node_drafts["Schema Drafts<br/>[draft-2020-12.js]"]
  node_constraints["Constraint Rules<br/>[type.js]"]
  node_translations["Translations<br/>[translations.js]"]
end

subgraph group_presentation["Presentation"]
  node_theme["Theme Renderer<br/>[theme.js]"]
  node_bootstrap_themes["Bootstrap Themes<br/>[bootstrap5.js]"]
end

node_developer(("Integrating App"))
node_schema_input["JSON Schema"]
node_remote_schema(("External Schema"))
node_form_user(("Form User"))
node_form_result["Interactive Form"]
node_validation_result["Errors And Value"]

node_developer -->|"imports"| node_public_api
node_developer -->|"creates"| node_jedison
node_schema_input -->|"configures"| node_jedison
node_jedison -->|"renders"| node_form_result
node_ref_parser -->|"fetches references"| node_remote_schema
node_ref_parser -->|"traverses schema"| node_json_walker
node_ref_parser -->|"merges schemas"| node_schema_helpers
node_object_instance -->|"creates children"| node_instances
node_ui_resolver -->|"selects editor"| node_editors
node_editors -->|"renders controls"| node_theme
node_bootstrap_themes -->|"extends"| node_theme
node_form_user -->|"edits"| node_form_result
node_validator -->|"loads rules"| node_drafts
node_validator -->|"dispatches constraints"| node_constraints
node_validator -->|"returns errors"| node_validation_result
node_jedison -->|"exposes generation"| node_schema_generator
node_translations -->|"localizes messages"| node_validation_result

click node_jedison "https://github.com/germanbisurgi/jedison/blob/main/src/jedison.js"
click node_public_api "https://github.com/germanbisurgi/jedison/blob/main/src/index.js"
click node_ref_parser "https://github.com/germanbisurgi/jedison/blob/main/src/ref-parser/ref-parser.js"
click node_json_walker "https://github.com/germanbisurgi/jedison/blob/main/src/json-walker.js"
click node_schema_helpers "https://github.com/germanbisurgi/jedison/blob/main/src/helpers/schema.js"
click node_schema_generator "https://github.com/germanbisurgi/jedison/blob/main/src/schema-generator/schema-generator.js"
click node_instances "https://github.com/germanbisurgi/jedison/blob/main/src/instances/instance.js"
click node_object_instance "https://github.com/germanbisurgi/jedison/blob/main/src/instances/object.js"
click node_editors "https://github.com/germanbisurgi/jedison/blob/main/src/editors/editor.js"
click node_ui_resolver "https://github.com/germanbisurgi/jedison/blob/main/src/ui-resolver.js"
click node_validator "https://github.com/germanbisurgi/jedison/blob/main/src/validation/validator.js"
click node_drafts "https://github.com/germanbisurgi/jedison/blob/main/src/validation/drafts/draft-2020-12.js"
click node_constraints "https://github.com/germanbisurgi/jedison/blob/main/src/validation/constrains/type.js"
click node_translations "https://github.com/germanbisurgi/jedison/blob/main/src/i18n/translations.js"
click node_theme "https://github.com/germanbisurgi/jedison/blob/main/src/themes/theme.js"
click node_bootstrap_themes "https://github.com/germanbisurgi/jedison/blob/main/src/themes/bootstrap5.js"

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_jedison,node_public_api,node_form_user toneBlue
class node_ref_parser,node_json_walker,node_schema_helpers,node_schema_generator toneAmber
class node_instances,node_object_instance,node_editors,node_ui_resolver toneMint
class node_validator,node_drafts,node_constraints,node_translations toneRose
class node_theme,node_bootstrap_themes,node_developer,node_schema_input,node_remote_schema,node_form_result,node_validation_result toneIndigo
```

## Components

### Public API

- [Jedison Create](https://github.com/germanbisurgi/jedison/blob/main/src/jedison.js): `src/jedison.js`
- [Library Exports](https://github.com/germanbisurgi/jedison/blob/main/src/index.js): `src/index.js`

### Schema Processing

- [Reference Parser](https://github.com/germanbisurgi/jedison/blob/main/src/ref-parser/ref-parser.js): `src/ref-parser/ref-parser.js`
- [JSON Walker](https://github.com/germanbisurgi/jedison/blob/main/src/json-walker.js): `src/json-walker.js`
- [Schema Helpers](https://github.com/germanbisurgi/jedison/blob/main/src/helpers/schema.js): `src/helpers/schema.js`
- [Schema Generator](https://github.com/germanbisurgi/jedison/blob/main/src/schema-generator/schema-generator.js): `src/schema-generator/schema-generator.js`

### Form Runtime

- [Typed Instances](https://github.com/germanbisurgi/jedison/blob/main/src/instances/instance.js): `src/instances/instance.js`
- [Object Instance](https://github.com/germanbisurgi/jedison/blob/main/src/instances/object.js): `src/instances/object.js`
- [Schema Editors](https://github.com/germanbisurgi/jedison/blob/main/src/editors/editor.js): `src/editors/editor.js`
- [UI Resolver](https://github.com/germanbisurgi/jedison/blob/main/src/ui-resolver.js): `src/ui-resolver.js`

### Validation

- [Validator](https://github.com/germanbisurgi/jedison/blob/main/src/validation/validator.js): `src/validation/validator.js`
- [Schema Drafts](https://github.com/germanbisurgi/jedison/blob/main/src/validation/drafts/draft-2020-12.js): `src/validation/drafts/draft-2020-12.js`
- [Constraint Rules](https://github.com/germanbisurgi/jedison/blob/main/src/validation/constrains/type.js): `src/validation/constrains/type.js`
- [Translations](https://github.com/germanbisurgi/jedison/blob/main/src/i18n/translations.js): `src/i18n/translations.js`

### Presentation

- [Theme Renderer](https://github.com/germanbisurgi/jedison/blob/main/src/themes/theme.js): `src/themes/theme.js`
- [Bootstrap Themes](https://github.com/germanbisurgi/jedison/blob/main/src/themes/bootstrap5.js): `src/themes/bootstrap5.js`

### Other components

- **Integrating App**
- **JSON Schema**
- **External Schema**
- **Form User**
- **Interactive Form**
- **Errors And Value**

## Connections

- Integrating App → Library Exports: imports
- Integrating App → Jedison Create: creates
- JSON Schema → Jedison Create: configures
- Jedison Create → Interactive Form: renders
- Reference Parser → External Schema: fetches references
- Reference Parser → JSON Walker: traverses schema
- Reference Parser → Schema Helpers: merges schemas
- Object Instance → Typed Instances: creates children
- UI Resolver → Schema Editors: selects editor
- Schema Editors → Theme Renderer: renders controls
- Bootstrap Themes → Theme Renderer: extends
- Form User → Interactive Form: edits
- Validator → Schema Drafts: loads rules
- Validator → Constraint Rules: dispatches constraints
- Validator → Errors And Value: returns errors
- Jedison Create → Schema Generator: exposes generation
- Translations → Errors And Value: localizes messages
