-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathtemplate.schema.json
More file actions
81 lines (81 loc) · 2.75 KB
/
Copy pathtemplate.schema.json
File metadata and controls
81 lines (81 loc) · 2.75 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://koine.dev/templates/template.schema.json",
"title": "Koine template manifest",
"description": "Metadata for a Koine example-domain template. One template.json sits next to the template's .koi source files. The template id must equal its folder name, and entryFile must name a .koi file present in the folder.",
"type": "object",
"required": [
"id",
"name",
"tagline",
"description",
"difficulty",
"tags",
"contexts",
"coreAggregate",
"entryFile",
"teaches",
"icon"
],
"additionalProperties": false,
"properties": {
"id": {
"type": "string",
"minLength": 1,
"description": "Stable identifier for the template. MUST equal the template's folder name."
},
"name": {
"type": "string",
"minLength": 1,
"description": "Human-readable display name (e.g. \"Billing\")."
},
"tagline": {
"type": "string",
"minLength": 1,
"description": "One-line summary shown in template listings."
},
"description": {
"type": "string",
"minLength": 1,
"description": "A paragraph describing what the template models and demonstrates."
},
"difficulty": {
"type": "string",
"enum": ["starter", "beginner", "intermediate", "advanced"],
"description": "Relative complexity, used to order and badge templates."
},
"tags": {
"type": "array",
"minItems": 1,
"items": { "type": "string", "minLength": 1 },
"description": "Free-form keywords for search and filtering."
},
"contexts": {
"type": "array",
"minItems": 1,
"items": { "type": "string", "minLength": 1 },
"description": "Names of the bounded contexts the template defines."
},
"coreAggregate": {
"type": "string",
"minLength": 1,
"description": "The declared aggregate that anchors the template — its name, e.g. \"Sales\" for `aggregate Sales root Order`. For a template that declares no aggregate, the headline entity instead. Must name a real aggregate (or, when none is declared, a real entity) in the compiled model — enforced by TemplatesValidationTests."
},
"entryFile": {
"type": "string",
"minLength": 1,
"description": "The primary .koi file to open first. MUST name a file present in the template folder."
},
"teaches": {
"type": "array",
"minItems": 1,
"items": { "type": "string", "minLength": 1 },
"description": "The Koine concepts or DDD patterns a learner picks up from this template."
},
"icon": {
"type": "string",
"minLength": 1,
"description": "An icon identifier (e.g. an emoji or icon name) for the template card."
}
}
}