Dynamic JSON Form Renderer
A reusable React and TypeScript library for generating accessible, terminology-aware forms with metadata support.
Schema Studio is an open-source visual platform for creating, validating, previewing, versioning, and publishing JSON Schema-based metadata models for FAIR research data.
Schema Studio is an open-source visual schema engineering platform for creating, editing, validating, organizing, reviewing, versioning, and publishing metadata schemas through an interactive graphical interface.
Developed as part of the SEPIA (Sample Essentials, Persistent Identifiers & Attributes) ecosystem at the Helmholtz-Zentrum Berlin für Materialien und Energie GmbH (HZB), Schema Studio supports the development of type-specific metadata models for research data infrastructures. It promotes FAIR metadata principles, reusable schema components, terminology integration, transparent schema lifecycles, and long-term interoperability.
Schema Studio enables metadata engineers to design complex schemas without manually editing large schema documents. Changes made in the visual workspace are transformed into standards-compliant schemas and can immediately be inspected through an integrated dynamic form preview.
The platform currently supports JSON Schema Draft 2020-12 and provides:
additionalPropertiespropertyNames.patternx-schema-studio-orderSchema Studio integrates @hzb-rdm/dynamic-json-form-renderer 2.1.1, which is built on React JSONSchema Form (RJSF) v6. The integration provides standard RJSF callback contracts, read-only rendering, improved submission and schema-error handling, accessible validation feedback, terminology-aware metadata presentation, and runtime color customization.
A renderer color selector allows users to apply one of 22 supported Tailwind CSS color families across live and saved-schema previews. Theme and color changes are applied immediately without requiring a page refresh.
Version 1.2.0 is a backward-compatible feature, correctness, testing, and quality-assurance release. It adds configurable object constraints, automatic property-name normalization, improved validation, stable root-field ordering, broader automated regression testing, and improved GitLab CI/CD reporting.
Object-level additionalProperties can now be enabled or disabled through the field configurator. The default value is false, while explicitly imported or configured values are preserved during normalization, saving, and reloading. This behavior is supported for root objects, nested objects, and object schemas inside array items.
Schema authors can also configure propertyNames.pattern. The default expression is ^[a-z][a-z0-9_-]*$, allowing lowercase letters, numbers, underscores, and hyphens while requiring property names to begin with a lowercase letter. Invalid regular expressions are highlighted in the interface, and imported property names that violate the configured expression can be identified.
User-entered property names are normalized automatically. For example, Title names becomes title_names, while Sample-Name becomes sample-name. Names that do not start with a letter receive a field_ prefix. When normalization changes a name, the user receives a notification and the original text remains available as the human-readable field label. Normalized keys are checked against the configured pattern, and duplicate property names are rejected.
The release fixes a normalization issue that could remove legitimate properties named id. Schema-level legacy identifier handling is now kept separate from ordinary fields defined under properties.id, ensuring that these properties survive normalization, saving, and reloading.
Root-field ordering has also been corrected. The schema tree now respects the root x-schema-studio-order, and newly created root fields are appended without alphabetically reordering existing fields. Root order is no longer reconstructed from the physical order of JSON object keys.
Nested objects and object schemas inside arrays continue using their own local x-schema-studio-order. Root ordering is not propagated into nested structures, and no additional nonstandard ordering keyword has been introduced. This preserves compatibility with Dynamic JSON Form Renderer, SEPIA, and existing Schema Studio schemas.
Application theme management has been integrated with next-themes, improving light and dark theme synchronization and removing redundant manual theme-state handling. React state initialization and synchronization were also improved to comply with current hook and linting recommendations without changing existing functionality.
Automated regression testing now covers important backend and frontend behavior, including schema normalization, preservation of id properties, object constraints, property-name normalization, root and nested ordering, builder state, runtime schema generation, saved-schema output, registry APIs, vocabulary routes, and schema-tree construction.
GitLab CI/CD can publish JUnit test reports for display in pipeline and merge-request test summaries. Coverage extraction and Cobertura reports provide dynamic coverage information and merge-request coverage visualization.
At release verification, all 33 automated tests passed, frontend statement coverage was approximately 77.9%, frontend linting and formatting checks passed, TypeScript validation succeeded, the optimized Next.js production build completed successfully, and backend regression tests passed.
Version 1.2.0 does not introduce breaking changes to existing schemas, registry data, exported schema formats, Dynamic JSON Form Renderer integrations, or SEPIA workflows.
The frontend uses React 19, Next.js 16, TypeScript, Tailwind CSS, next-themes, Vitest, and pnpm 11.17.0. The backend provides modular Python services for parsing, normalization, schema storage, registry management, manifest generation, and export.
Schema Studio is licensed under the Apache License, Version 2.0.
Source code: https://codebase.helmholtz.cloud/hzb/research_data_management/schema-studio
Helmholtz Software Directory: https://helmholtz.software/software/schema-studio
Concept DOI for all versions: https://doi.org/10.5281/zenodo.21486684
A reusable React and TypeScript library for generating accessible, terminology-aware forms with metadata support.
Reusable TypeScript Utilities for Schema Studio JSON Schema Packages, Manifests, and Schema-Version Data Migration