diff --git a/src/content/charlie-config.schema.json b/src/content/charlie-config.schema.json new file mode 100644 index 0000000..e97b116 --- /dev/null +++ b/src/content/charlie-config.schema.json @@ -0,0 +1,238 @@ +{ + "definitions": {}, + "$schema": "http://json-schema.org/draft-07/schema#", + "$id": "charlie-config.json", + "type": "object", + "title": "Config for the gallery website", + "required": [ + "title", + "footer", + "artwork", + "artworks" + ], + "properties": { + "title": { + "$id": "#/properties/title", + "type": "object", + "title": "Title of the website", + "required": [ + "text", + "sub", + "height", + "background", + "dim", + "text_color", + "font" + ], + "properties": { + "text": { + "$id": "#/properties/title/properties/text", + "type": "string", + "title": "Title text", + "default": "", + "examples": [ + "Charlie's Gallery" + ], + "pattern": "^(.*)$" + }, + "sub": { + "$id": "#/properties/title/properties/sub", + "type": "string", + "title": "Subtitle text", + "default": "", + "examples": [ + "This is a subtitle" + ], + "pattern": "^(.*)$" + }, + "height": { + "$id": "#/properties/title/properties/height", + "type": "integer", + "title": "Height in percentage", + "default": 0, + "examples": [ + 80 + ] + }, + "background": { + "$id": "#/properties/title/properties/background", + "type": "string", + "title": "Background image / color", + "default": "", + "examples": [ + "title.jpeg" + ], + "pattern": "^(.*)$" + }, + "dim": { + "$id": "#/properties/title/properties/dim", + "type": "integer", + "title": "Darken background by this percent", + "default": 0, + "examples": [ + 60 + ] + }, + "text_color": { + "$id": "#/properties/title/properties/text_color", + "type": "string", + "title": "Text color (name / hex / rgb)", + "default": "", + "examples": [ + "white" + ], + "pattern": "^(.*)$" + }, + "font": { + "$id": "#/properties/title/properties/font", + "type": "string", + "title": "Font family", + "default": "", + "examples": [ + "'Neucha', cursive" + ], + "pattern": "^(.*)$" + } + } + }, + "footer": { + "$id": "#/properties/footer", + "type": "object", + "title": "Footer", + "required": [ + "text", + "height", + "background" + ], + "properties": { + "text": { + "$id": "#/properties/footer/properties/text", + "type": "string", + "title": "Footer text", + "default": "", + "examples": [ + "" + ], + "pattern": "^(.*)$" + }, + "height": { + "$id": "#/properties/footer/properties/height", + "type": "integer", + "title": "Footer height in percentage", + "default": 0, + "examples": [ + 10 + ] + }, + "background": { + "$id": "#/properties/footer/properties/background", + "type": "string", + "title": "Footer background color", + "default": "", + "examples": [ + "lightgray" + ], + "pattern": "^(.*)$" + } + } + }, + "artwork": { + "$id": "#/properties/artwork", + "type": "object", + "title": "Global artwork property", + "required": [ + "default_title", + "default_format", + "author" + ], + "properties": { + "default_title": { + "$id": "#/properties/artwork/properties/default_title", + "type": "string", + "title": "Default title when title is not defined", + "default": "", + "examples": [ + "Untitled" + ], + "pattern": "^(.*)$" + }, + "default_format": { + "$id": "#/properties/artwork/properties/default_format", + "type": "string", + "title": "Default format", + "default": "", + "examples": [ + "jpg" + ], + "pattern": "^(.*)$" + }, + "author": { + "$id": "#/properties/artwork/properties/author", + "type": "string", + "title": "Default Author", + "default": "", + "examples": [ + "Charlie" + ], + "pattern": "^(.*)$" + } + } + }, + "artworks": { + "$id": "#/properties/artworks", + "type": "array", + "title": "Artwork list", + "items": { + "$id": "#/properties/artworks/items", + "type": "object", + "title": "Items", + "required": [ + "date", + "title" + ], + "properties": { + "date": { + "$id": "#/properties/artworks/items/properties/date", + "type": "string", + "title": "Publish date", + "default": "", + "examples": [ + "2019-10-05" + ], + "pattern": "^(.*)$" + }, + "title": { + "$id": "#/properties/artworks/items/properties/title", + "type": "string", + "title": "Title of the artwork", + "default": "", + "examples": [ + "Vibrance" + ], + "pattern": "^(.*)$" + }, + "format": { + "$id": "#/properties/artworks/items/properties/format", + "type": "string", + "title": "Format (file suffix)", + "default": "", + "examples": [ + "png" + ], + "pattern": "^(.*)$" + }, + "description": { + "$id": "#/properties/artworks/items/properties/description", + "type": "string", + "title": "Description", + "default": "", + "examples": [ + "This is a picture" + ], + "pattern": "^(.*)$" + } + } + } + } + } +}