Custom UI Guide
Use this sequence to build a custom interface that behaves like apps/ui without copying its product-specific layout.
Minimum Flow
Section titled “Minimum Flow”- Fetch network configs from
/api/v1/network/schemas. - Select a network by env, user choice, or first returned config.
- Resolve JSON Schema
$refvalues before rendering. - Render create/edit forms from
domains[].item_schemas. - Hide public fields with the
private: trueconvention. - Fetch user-owned local items from
/api/v1/item/fetch. - Fetch target browsing items from
/api/v1/network/item/fetch. - Derive allowed actions from
actions[<action_type>].interactions. - Render action requirement forms from
requirement_schema. - Submit actions with source item, target item, and validated
requirements_snapshot.
What To Reuse
Section titled “What To Reuse”For fastest implementation, reuse or extract:
src/engine/schema/*src/engine/map/map-registry.tssrc/lib/api-config.tssrc/lib/api-client.tssrc/lib/network-api.tssrc/lib/item-api.tssrc/lib/auth-api.tsSchemaFormCardFieldsFromSchemaActionHandlerActionModalMapView
What To Replace
Section titled “What To Replace”Replace these for your own product:
- page layout
- visual component library
- action naming and labels
- domain icons
- title-field heuristics
- profile wording
- default map center
- login screens if you do not use phone OTP
Multiple Actions
Section titled “Multiple Actions”The current UI focuses on connect. A general UI should do:
for (const [actionType, action] of Object.entries(network.actions)) { for (const interaction of action.interactions) { // render actionType when from/to domains match the active source and target }}Use each interaction’s requirement_schema to render the form and submit the selected actionType to the API.
Multiple Item Types
Section titled “Multiple Item Types”The current UI picks the first item schema for a domain. A generic UI should show an item type selector when Object.keys(domain.item_schemas).length > 1.
When creating an item, submit:
item_networkitem_domain- selected
item_type - form data as
item_state - optional coordinates
The backend derives item_instance_url, item_schema_url, and ownership.