RustyCMS: file-based headless CMS — API, Admin UI (content, types, assets), Docker/Caddy, image transform; only demo type and demo content in version control

Made-with: Cursor
This commit is contained in:
Peter Meier
2026-03-12 14:21:49 +01:00
parent aad93d145f
commit 7795a238e1
278 changed files with 15551 additions and 4072 deletions

View File

@@ -0,0 +1,258 @@
{
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": true,
"properties": {
"_slug": {
"description": "Entry identifier (URL slug / filename without extension)",
"type": "string"
},
"allPosts": {
"default": false,
"description": "Show all posts (otherwise filter)",
"type": "boolean"
},
"design": {
"description": "Display as cards or list",
"enum": [
"cards",
"list"
],
"type": "string"
},
"filterByTag": {
"description": "Only posts with these tags",
"items": {
"description": "Reference (slug) to collection 'tag'",
"type": "string"
},
"type": "array"
},
"headline": {
"description": "Headline",
"type": "string"
},
"id": {
"description": "Unique post overview ID",
"type": "string"
},
"layout": {
"description": "Column width (grid)",
"properties": {
"breakout": {
"default": false,
"description": "Breakout layout (full width)",
"type": "boolean"
},
"desktop": {
"description": "Width on desktop (optional)",
"enum": [
"1",
"2",
"3",
"4",
"5",
"6",
"7",
"8",
"9",
"10",
"11",
"12"
],
"type": "string"
},
"mobile": {
"default": "12",
"description": "Width on mobile (112)",
"enum": [
"1",
"2",
"3",
"4",
"5",
"6",
"7",
"8",
"9",
"10",
"11",
"12"
],
"type": "string"
},
"spaceBottom": {
"default": 0,
"description": "Space below (rem)",
"enum": [
0,
0.5,
1,
1.5,
2
],
"type": "number"
},
"tablet": {
"description": "Width on tablet (optional)",
"enum": [
"1",
"2",
"3",
"4",
"5",
"6",
"7",
"8",
"9",
"10",
"11",
"12"
],
"type": "string"
}
},
"required": [
"mobile"
],
"type": "object"
},
"numberItems": {
"description": "Max. number of displayed entries",
"type": "integer"
},
"posts": {
"description": "Fixed list of posts (when not allPosts)",
"items": {
"description": "Reference (slug) to collection 'post'",
"type": "string"
},
"type": "array"
},
"row1AlignItems": {
"default": "stretch",
"description": "Align items for row 1",
"enum": [
"start",
"end",
"center",
"baseline",
"stretch"
],
"type": "string"
},
"row1Content": {
"description": "Content components for row 1 (Markdown, Post Overview, HTML, Headline, Image, …)",
"items": {
"description": "Reference (slug) to one of: markdown, post_overview, html, headline, image, quote, youtube_video, image_gallery, iframe, searchable_text, fullwidth_banner, list",
"type": "string"
},
"type": "array"
},
"row1JustifyContent": {
"default": "start",
"description": "Justify content for row 1",
"enum": [
"start",
"end",
"center",
"between",
"around",
"evenly"
],
"type": "string"
},
"row2AlignItems": {
"default": "stretch",
"enum": [
"start",
"end",
"center",
"baseline",
"stretch"
],
"type": "string"
},
"row2Content": {
"description": "Content components for row 2",
"items": {
"description": "Reference (slug) to one of: markdown, post_overview, html, headline, image, quote, youtube_video, image_gallery, iframe, searchable_text, fullwidth_banner, list",
"type": "string"
},
"type": "array"
},
"row2JustifyContent": {
"default": "start",
"enum": [
"start",
"end",
"center",
"between",
"around",
"evenly"
],
"type": "string"
},
"row3AlignItems": {
"default": "stretch",
"enum": [
"start",
"end",
"center",
"baseline",
"stretch"
],
"type": "string"
},
"row3Content": {
"description": "Content components for row 3",
"items": {
"description": "Reference (slug) to one of: markdown, post_overview, html, headline, image, quote, youtube_video, image_gallery, iframe, searchable_text, fullwidth_banner, list",
"type": "string"
},
"type": "array"
},
"row3JustifyContent": {
"default": "start",
"enum": [
"start",
"end",
"center",
"between",
"around",
"evenly"
],
"type": "string"
},
"seoDescription": {
"description": "Meta description for search engines",
"maxLength": 160,
"type": "string"
},
"seoMetaRobots": {
"default": "index, follow",
"description": "Robots meta directive",
"enum": [
"index, follow",
"noindex, follow",
"index, nofollow",
"noindex, nofollow"
],
"type": "string"
},
"seoTitle": {
"description": "SEO page title",
"type": "string"
},
"text": {
"description": "Intro text",
"type": "string"
}
},
"required": [
"_slug",
"seoTitle",
"id",
"headline"
],
"type": "object"
}