VS Code extension that previews Archify diagrams from their JSON sources (live, as you type) and opens rendered Archify HTML in a viewer tab. Bundles the Archify 3.0.1 renderer and runs it on VS Code's Node runtime. Adds validation diagnostics, JSON schema help, source-link navigation, export saving, render-to-file and open-in-browser commands. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
153 lines
5.9 KiB
JSON
153 lines
5.9 KiB
JSON
{
|
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
"$id": "https://github.com/tt-a1i/archify/schemas/architecture.schema.json",
|
|
"title": "Archify Architecture Diagram",
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"required": ["schema_version", "diagram_type", "meta", "components"],
|
|
"properties": {
|
|
"schema_version": { "const": 1 },
|
|
"diagram_type": { "const": "architecture" },
|
|
"meta": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"required": ["title", "output"],
|
|
"properties": {
|
|
"title": { "type": "string", "minLength": 1 },
|
|
"locale": { "$ref": "common.schema.json#/$defs/locale" },
|
|
"translations": { "$ref": "common.schema.json#/$defs/translations" },
|
|
"subtitle": { "type": "string" },
|
|
"output": { "$ref": "common.schema.json#/$defs/portableOutputPath" },
|
|
"animation": { "$ref": "common.schema.json#/$defs/animation" },
|
|
"visual_preset": { "$ref": "common.schema.json#/$defs/visualPreset" },
|
|
"quality_profile": { "$ref": "common.schema.json#/$defs/qualityProfile" },
|
|
"engineering_profile": { "enum": ["deployment-ownership"] },
|
|
"repository": { "$ref": "common.schema.json#/$defs/repository" },
|
|
"views": { "$ref": "common.schema.json#/$defs/guidedViews" },
|
|
"legend": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"properties": {
|
|
"mode": { "$ref": "common.schema.json#/$defs/legendMode" },
|
|
"entries": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"properties": {
|
|
"frontend": { "$ref": "common.schema.json#/$defs/legendEntry" },
|
|
"backend": { "$ref": "common.schema.json#/$defs/legendEntry" },
|
|
"database": { "$ref": "common.schema.json#/$defs/legendEntry" },
|
|
"cloud": { "$ref": "common.schema.json#/$defs/legendEntry" },
|
|
"security": { "$ref": "common.schema.json#/$defs/legendEntry" },
|
|
"messagebus": { "$ref": "common.schema.json#/$defs/legendEntry" },
|
|
"external": { "$ref": "common.schema.json#/$defs/legendEntry" }
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"viewBox": {
|
|
"type": "array",
|
|
"prefixItems": [
|
|
{ "type": "number", "minimum": 320 },
|
|
{ "type": "number", "minimum": 240 }
|
|
],
|
|
"items": false,
|
|
"minItems": 2,
|
|
"maxItems": 2
|
|
}
|
|
}
|
|
},
|
|
"layout": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"required": ["mode"],
|
|
"properties": {
|
|
"mode": { "enum": ["grid"] },
|
|
"origin": { "$ref": "common.schema.json#/$defs/point" },
|
|
"cols": { "type": "integer", "minimum": 1, "maximum": 12 },
|
|
"gapX": { "type": "number", "minimum": 0 },
|
|
"gapY": { "type": "number", "minimum": 0 },
|
|
"cellW": { "type": "number", "minimum": 40 },
|
|
"cellH": { "type": "number", "minimum": 24 }
|
|
}
|
|
},
|
|
"components": {
|
|
"type": "array",
|
|
"minItems": 1,
|
|
"items": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"required": ["id", "type", "label"],
|
|
"properties": {
|
|
"id": { "$ref": "common.schema.json#/$defs/id" },
|
|
"type": { "$ref": "common.schema.json#/$defs/componentType" },
|
|
"label": { "type": "string", "minLength": 1 },
|
|
"sublabel": { "type": "string" },
|
|
"tag": { "type": "string" },
|
|
"icon": { "$ref": "common.schema.json#/$defs/nodeIcon" },
|
|
"brand": { "$ref": "common.schema.json#/$defs/brandMark" },
|
|
"sources": { "$ref": "common.schema.json#/$defs/sourceReferences" },
|
|
"row": { "type": "integer", "minimum": 0 },
|
|
"col": { "type": "integer", "minimum": 0 },
|
|
"pos": { "$ref": "common.schema.json#/$defs/point" },
|
|
"size": {
|
|
"type": "array",
|
|
"prefixItems": [
|
|
{ "type": "number", "exclusiveMinimum": 0 },
|
|
{ "type": "number", "exclusiveMinimum": 0 }
|
|
],
|
|
"items": false,
|
|
"minItems": 2,
|
|
"maxItems": 2
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"boundaries": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"required": ["kind", "label", "wraps"],
|
|
"properties": {
|
|
"kind": { "enum": ["region", "security-group"] },
|
|
"label": { "type": "string", "minLength": 1 },
|
|
"wraps": {
|
|
"type": "array",
|
|
"minItems": 1,
|
|
"items": { "$ref": "common.schema.json#/$defs/id" }
|
|
},
|
|
"pad": { "type": "number", "minimum": 0 }
|
|
}
|
|
}
|
|
},
|
|
"connections": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"required": ["from", "to"],
|
|
"properties": {
|
|
"id": { "$ref": "common.schema.json#/$defs/id" },
|
|
"from": { "$ref": "common.schema.json#/$defs/id" },
|
|
"to": { "$ref": "common.schema.json#/$defs/id" },
|
|
"label": { "type": "string" },
|
|
"variant": { "$ref": "common.schema.json#/$defs/variant" },
|
|
"fromSide": { "$ref": "common.schema.json#/$defs/side" },
|
|
"toSide": { "$ref": "common.schema.json#/$defs/side" },
|
|
"route": { "enum": ["auto", "straight", "orthogonal-h", "orthogonal-v"] },
|
|
"via": {
|
|
"type": "array",
|
|
"items": { "$ref": "common.schema.json#/$defs/point" }
|
|
},
|
|
"labelAt": { "$ref": "common.schema.json#/$defs/point" },
|
|
"labelDx": { "type": "number" },
|
|
"labelDy": { "type": "number" },
|
|
"labelSegment": { "type": "integer", "minimum": 0 },
|
|
"width": { "$ref": "common.schema.json#/$defs/relationshipWidth" }
|
|
}
|
|
}
|
|
},
|
|
"cards": { "$ref": "common.schema.json#/$defs/cards" }
|
|
}
|
|
}
|