RustyCMS: File-based headless CMS with REST API, admin UI, multilingual support

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
Peter Meier
2026-02-16 09:30:30 +01:00
commit aad93d145f
224 changed files with 19225 additions and 0 deletions

View File

@@ -0,0 +1,9 @@
{
title: "Mein erster Post",
body: "Hallo Welt! Das ist **RustyCMS** ein file-basiertes Headless CMS geschrieben in Rust.",
excerpt: "Ein Einstieg in RustyCMS",
author: "Peter",
tags: ["rust", "cms", "open-source"],
published: true,
created_at: "2026-02-12T10:00:00Z",
}

View File

@@ -0,0 +1,9 @@
{
title: "Warum Rust so toll ist",
body: "Rust bietet Memory Safety ohne Garbage Collector, ein starkes Typsystem und exzellente Performance.",
excerpt: "Eine Liebeserklaerung an Rust",
author: "Peter",
tags: ["rust", "programming"],
published: true,
created_at: "2026-02-12T14:30:00Z",
}

View File

@@ -0,0 +1,11 @@
{
"author": "string",
"body": "string",
"created_at": "2026-02-12T14:54:13.233374+00:00",
"excerpt": "string",
"published": false,
"tags": [
"string"
],
"title": "string"
}

View File

@@ -0,0 +1,13 @@
{
_slug: "default",
id: "navigation-footer",
row1JustifyContent: "center",
row1AlignItems: "stretch",
row1Content: [],
row2JustifyContent: "start",
row2AlignItems: "stretch",
row2Content: [],
row3JustifyContent: "start",
row3AlignItems: "stretch",
row3Content: [],
}

View File

@@ -0,0 +1,8 @@
{
name: "Hero Banner About",
variant: "light",
headline: "Ueber uns",
subheadline: "Open Source seit 2026",
text: "RustyCMS ist ein Open-Source-Projekt.",
image: [],
}

View File

@@ -0,0 +1,8 @@
{
name: "Hero Banner Startseite",
variant: "dark",
headline: "RustyCMS",
subheadline: "Das file-basierte Headless CMS",
text: "Typen definieren. Content ablegen. API nutzen.",
image: ["https://example.com/images/hero-bg.jpg"],
}

View File

@@ -0,0 +1,13 @@
{
_slug: "headline-referenz",
internal: "headline-ref",
text: "Headline-Komponente (Referenz)",
tag: "h2",
align: "center",
layout: {
mobile: "12",
tablet: "10",
desktop: "8",
spaceBottom: 1,
},
}

View File

@@ -0,0 +1,11 @@
{
_slug: "html-referenz",
id: "html-component-referenz",
html: "<p>CF_HTML <strong>HTML</strong>-Block mit Layout.</p>",
layout: {
mobile: "12",
tablet: "10",
desktop: "8",
spaceBottom: 1,
},
}

View File

@@ -0,0 +1,13 @@
{
_slug: "iframe-referenz",
name: "Iframe-Komponente (Referenz)",
content: "Eingebetteter Inhalt von einer externen URL z. B. Karte, Formular oder Video.",
iframe: "https://example.com/embed",
overlayImage: "",
layout: {
mobile: "12",
tablet: "10",
desktop: "8",
spaceBottom: 1,
},
}

View File

@@ -0,0 +1,14 @@
{
_slug: "image-referenz",
name: "Bild-Komponente (Referenz)",
image: "referenz-bild",
caption: "Bildunterschrift: CF_ComponentImage mit Layout und optionaler Caption.",
layout: {
mobile: "12",
tablet: "8",
desktop: "6",
spaceBottom: 1,
},
maxWidth: 800,
aspectRatio: 1.333,
}

View File

@@ -0,0 +1,12 @@
{
_slug: "gallery-referenz",
name: "Bildgalerie (Referenz)",
images: ["referenz-bild"],
layout: {
mobile: "12",
tablet: "12",
desktop: "12",
spaceBottom: 1.5,
},
description: "CF_ImageGallery mehrere Bilder mit gemeinsamem Layout.",
}

View File

@@ -0,0 +1,16 @@
{
"description": "Platzhalter für Bild-Komponenten und Galerien",
"file": {
"contentType": "image/jpeg",
"details": {
"image": {
"height": 600,
"width": 800
},
"size": 12345
},
"fileName": "referenz-bild.jpg",
"url": "https://placehold.co/800x600?text=Referenzbild"
},
"title": "Referenzbild für Komponenten-Test"
}

View File

@@ -0,0 +1,13 @@
{
_slug: "docs",
name: "Dokumentation",
internal: "link-docs",
linkName: "Dokumentation",
url: "https://example.com/docs",
icon: "book",
external: false,
newTab: false,
author: "RustyCMS",
date: "2026-02-01",
source: "RustyCMS",
}

View File

@@ -0,0 +1,14 @@
{
_slug: "gitlab",
name: "GitLab",
internal: "link-gitlab",
linkName: "GitLab",
url: "https://gitlab.com/example/rustycms",
icon: "gitlab",
external: true,
newTab: true,
description: "Projekt-Repository auf GitLab",
author: "RustyCMS",
date: "2026-02-01",
source: "GitLab",
}

View File

@@ -0,0 +1,5 @@
{
_slug: "link-list-referenz",
headline: "Weitere Links",
links: ["gitlab", "docs"],
}

View File

@@ -0,0 +1,9 @@
{
_slug: "list-referenz",
internal: "list-ref",
item: [
"Erster Punkt",
"Zweiter Punkt",
"Dritter Punkt",
],
}

View File

@@ -0,0 +1,11 @@
{
name: "Intro-Text Startseite",
content: "Dieser Block entspricht dem Typ **Markdown** (CF_Markdown). Du kannst hier *Markdown* oder Fließtext eingeben. Die Row auf der Page referenziert diese Komponente.",
layout: {
mobile: "12",
tablet: "10",
desktop: "8",
spaceBottom: 1,
},
alignment: "center",
}

View File

@@ -0,0 +1,12 @@
{
_slug: "komponenten-referenz-intro",
name: "Komponenten-Referenz (Intro)",
content: "Diese Seite bindet **jede verfügbare Komponente** einmal ein als Referenz und zum Testen. Enthalten: Fullwidth-Banner (oben), Markdown, Iframe, Bild, Bildgalerie.",
layout: {
mobile: "12",
tablet: "10",
desktop: "8",
spaceBottom: 1.5,
},
alignment: "center",
}

View File

@@ -0,0 +1,11 @@
{
name: "Kontakt-Text",
content: "Schreib uns eine E-Mail oder nutze das Projekt auf GitLab. RustyCMS ist Open Source Beiträge und Ideen sind willkommen.",
layout: {
mobile: "12",
tablet: "8",
desktop: "6",
spaceBottom: 1.5,
},
alignment: "center",
}

View File

@@ -0,0 +1,12 @@
{
"internal": "navigation-header",
"links": [
"about",
"home",
"kontakt",
"docs",
"komponenten-referenz",
"gitlab"
],
"name": "Hauptnavigation"
}

View File

@@ -0,0 +1,20 @@
{
slug: "about",
name: "Ueber uns",
linkName: "About",
headline: "Ueber RustyCMS",
subheadline: "Open Source. File-basiert. Schnell.",
topFullwidthBanner: "about-hero",
seoTitle: "Ueber uns RustyCMS",
seoMetaRobots: "index, follow",
seoDescription: "Erfahre mehr ueber das RustyCMS-Projekt.",
row1JustifyContent: "start",
row1AlignItems: "stretch",
row1Content: [],
row2JustifyContent: "start",
row2AlignItems: "stretch",
row2Content: [],
row3JustifyContent: "start",
row3AlignItems: "stretch",
row3Content: [],
}

View File

@@ -0,0 +1,26 @@
{
// ── Page-eigene Felder ─────────────────────────────────
slug: "home",
name: "Startseite",
linkName: "Home",
icon: "home",
headline: "Willkommen bei RustyCMS",
subheadline: "Das file-basierte Headless CMS geschrieben in Rust",
topFullwidthBanner: "hero", // → referenziert fullwidth_banner/hero.json5
// ── SEO-Felder (geerbt von seo) ───────────────────────
seoTitle: "RustyCMS Startseite",
seoMetaRobots: "index, follow",
seoDescription: "Willkommen bei RustyCMS, dem file-basierten Headless CMS.",
// ── Content-Layout (geerbt von content_layout) ────────
row1JustifyContent: "center",
row1AlignItems: "center",
row1Content: [
"intro"
],
row2JustifyContent: "start",
row2AlignItems: "stretch",
row2Content: [],
row3JustifyContent: "start",
row3AlignItems: "start",
row3Content: [],
}

View File

@@ -0,0 +1,44 @@
{
// ── Testseite: jede Komponente eingebunden (Referenz) ───
_slug: "komponenten-referenz",
slug: "komponenten-referenz",
name: "Komponenten-Referenz",
linkName: "Komponenten",
icon: "grid",
headline: "Komponenten-Referenz",
subheadline: "Alle Komponenten auf einer Seite zum Testen und als Referenz",
// Fullwidth-Banner (oben)
topFullwidthBanner: "hero",
// ── SEO ───────────────────────────────────────────────
seoTitle: "Komponenten-Referenz RustyCMS",
seoMetaRobots: "index, follow",
seoDescription: "Übersicht aller Komponenten: Banner, Headline, List, Link-Liste, Markdown, Iframe, Bild, YouTube, Quote, HTML, Galerie, SearchableText.",
// ── Row 1: Markdown-Komponenten ──────────────────────
row1JustifyContent: "center",
row1AlignItems: "stretch",
row1Content: [
"komponenten-referenz-intro",
"headline-referenz",
"intro",
"kontakt-text",
"list-referenz",
"link-list-referenz",
],
// ── Row 2: Iframe + Bild + YouTube ─────────────────────
row2JustifyContent: "start",
row2AlignItems: "stretch",
row2Content: [
"iframe-referenz",
"image-referenz",
"youtube-referenz",
"quote-referenz",
"html-referenz",
],
// ── Row 3: Bildgalerie + SearchableText ─────────────────
row3JustifyContent: "start",
row3AlignItems: "stretch",
row3Content: [
"gallery-referenz",
"search-referenz",
],
}

View File

@@ -0,0 +1,23 @@
{
slug: "kontakt",
name: "Kontakt",
linkName: "Kontakt",
icon: "mail",
headline: "Kontakt",
subheadline: "So erreichst du uns.",
topFullwidthBanner: "about-hero",
seoTitle: "Kontakt RustyCMS",
seoMetaRobots: "index, follow",
seoDescription: "Kontakt und Ansprechpartner für RustyCMS.",
row1JustifyContent: "center",
row1AlignItems: "stretch",
row1Content: [
"kontakt-text"
],
row2JustifyContent: "start",
row2AlignItems: "stretch",
row2Content: [],
row3JustifyContent: "start",
row3AlignItems: "stretch",
row3Content: [],
}

View File

@@ -0,0 +1,11 @@
{
_slug: "default",
logo: "referenz-bild",
footerText1: "© 2026 RustyCMS. Open Source.",
seoTitle: "RustyCMS File-basiertes Headless CMS",
seoDescription: "RustyCMS: Typen definieren, Content ablegen, API nutzen.",
blogTagPageHeadline: "Beiträge zum Tag",
blogPostsPageHeadline: "Blog",
blogPostsPageSubHeadline: "Alle Beiträge im Überblick",
website: "https://example.com",
}

View File

@@ -0,0 +1,34 @@
{
// Entry identifier (URL slug / filename without extension)
_slug: "beispielpost",
// ── Post-eigene Felder ─────────────────────────────────
slug: "beispielpost",
linkName: "Beispielpost",
icon: "article",
headline: "Ein Beispielpost",
subheadline: "Mit allen erweiterten Feldern",
excerpt: "Kurze Vorschau für Listen und Teaser.",
postImage: "", // Referenz auf img-Entry (Slug)
postTag: [
"rust",
"cms"
],
important: false,
date: "2026-02-15",
content: "# Einleitung\n\nHier steht der **Hauptinhalt** des Posts in Markdown. Absätze und _Formatierung_ werden unterstützt.\n\n## Überschriften und Listen\n\n- Erster Listenpunkt\n- Zweiter mit **Fett** und _Kursiv_\n- Dritter Punkt\n\n## Code und Zitate\n\n`Rust` eignet sich gut für sichere Systeme. Ein kurzer Code-Schnipsel:\n\n```\nfn main() {\n println!(\"Hallo von RustyCMS!\");\n}\n```\n\n> Ein Blockzitat passt gut für Hervorhebungen oder Zitate aus anderen Quellen.\n\n## Abschluss\n\nWeitere Absätze mit normalem Fließtext. [Links](https://example.com) und Bilder sind ebenfalls möglich.",
showCommentSection: true,
// ── SEO (geerbt von seo) ──────────────────────────────
seoTitle: "Beispielpost RustyCMS",
seoMetaRobots: "index, follow",
seoDescription: "Ein Beispielpost mit allen Feldern des erweiterten Post-Schemas.",
// ── Content-Layout (geerbt von content_layout) ────────
row1JustifyContent: "start",
row1AlignItems: "stretch",
row1Content: [],
row2JustifyContent: "start",
row2AlignItems: "stretch",
row2Content: [],
row3JustifyContent: "start",
row3AlignItems: "stretch",
row3Content: [],
}

View File

@@ -0,0 +1,10 @@
{
"category": "electronics",
"created_at": "2026-02-12T10:00:00Z",
"images": [
"img.jpg"
],
"price": 1299,
"sku": "EL-1001",
"title": "Laptop Pro 16 (Updated)"
}

View File

@@ -0,0 +1,12 @@
{
_slug: "quote-referenz",
quote: "Dies ist ein Beispielzitat für die Komponenten-Referenz. CF_Quote mit variant left/right.",
author: "RustyCMS",
variant: "left",
layout: {
mobile: "12",
tablet: "8",
desktop: "6",
spaceBottom: 1,
},
}

View File

@@ -0,0 +1,14 @@
{
_slug: "search-referenz",
id: "searchable-text-referenz",
title: "Durchsuchbare Texte (Referenz)",
description: "CF_ComponentSearchableText durchsuchbare Textfragmente mit optionaler Tag-Filterung.",
tagWhitelist: ["rust", "cms"],
textFragments: ["intro-suchbar", "faq-suchbar"],
layout: {
mobile: "12",
tablet: "10",
desktop: "8",
spaceBottom: 1,
},
}

View File

@@ -0,0 +1,3 @@
{
"name": "Auth Test"
}

3
content/de/tag/cms.json5 Normal file
View File

@@ -0,0 +1,3 @@
{
name: "CMS",
}

View File

@@ -0,0 +1,3 @@
{
name: "Rust",
}

View File

@@ -0,0 +1,7 @@
{
_slug: "faq-suchbar",
id: "fragment-faq",
title: "FAQ Häufige Fragen",
text: "Wie starte ich? Lege Typen in types/ an, Content in content/<collection>/. Die REST-API liefert die Daten.",
tags: ["cms"],
}

View File

@@ -0,0 +1,7 @@
{
_slug: "intro-suchbar",
id: "fragment-intro",
title: "Intro-Text",
text: "RustyCMS ist ein file-basiertes Headless CMS. Typen definieren, Content ablegen, API nutzen.",
tags: ["rust", "cms"],
}

View File

@@ -0,0 +1,5 @@
{
_slug: "banner-referenz",
id: "top-banner-ref",
text: "Hinweis: Dies ist ein Top-Banner (CF_TopBanner).",
}

View File

@@ -0,0 +1,13 @@
{
_slug: "youtube-referenz",
youtubeId: "dQw4w9WgXcQ",
params: "rel=0",
title: "YouTube-Video (Referenz)",
description: "CF_YoutubeVideo eingebettetes Video mit Layout.",
layout: {
mobile: "12",
tablet: "10",
desktop: "8",
spaceBottom: 1,
},
}

View File

@@ -0,0 +1,9 @@
{
title: "Mein erster Post",
body: "Hallo Welt! Das ist **RustyCMS** ein file-basiertes Headless CMS geschrieben in Rust.",
excerpt: "Ein Einstieg in RustyCMS",
author: "Peter",
tags: ["rust", "cms", "open-source"],
published: true,
created_at: "2026-02-12T10:00:00Z",
}

View File

@@ -0,0 +1,9 @@
{
title: "Warum Rust so toll ist",
body: "Rust bietet Memory Safety ohne Garbage Collector, ein starkes Typsystem und exzellente Performance.",
excerpt: "Eine Liebeserklaerung an Rust",
author: "Peter",
tags: ["rust", "programming"],
published: true,
created_at: "2026-02-12T14:30:00Z",
}

View File

@@ -0,0 +1,11 @@
{
"author": "string",
"body": "string",
"created_at": "2026-02-12T14:54:13.233374+00:00",
"excerpt": "string",
"published": false,
"tags": [
"string"
],
"title": "string"
}

View File

@@ -0,0 +1,13 @@
{
_slug: "default",
id: "navigation-footer",
row1JustifyContent: "center",
row1AlignItems: "stretch",
row1Content: [],
row2JustifyContent: "start",
row2AlignItems: "stretch",
row2Content: [],
row3JustifyContent: "start",
row3AlignItems: "stretch",
row3Content: [],
}

View File

@@ -0,0 +1,8 @@
{
name: "Hero Banner About",
variant: "light",
headline: "Ueber uns",
subheadline: "Open Source seit 2026",
text: "RustyCMS ist ein Open-Source-Projekt.",
image: [],
}

View File

@@ -0,0 +1,8 @@
{
name: "Hero Banner Startseite",
variant: "dark",
headline: "RustyCMS",
subheadline: "Das file-basierte Headless CMS",
text: "Typen definieren. Content ablegen. API nutzen.",
image: ["https://example.com/images/hero-bg.jpg"],
}

View File

@@ -0,0 +1,13 @@
{
_slug: "headline-referenz",
internal: "headline-ref",
text: "Headline-Komponente (Referenz)",
tag: "h2",
align: "center",
layout: {
mobile: "12",
tablet: "10",
desktop: "8",
spaceBottom: 1,
},
}

View File

@@ -0,0 +1,11 @@
{
_slug: "html-referenz",
id: "html-component-referenz",
html: "<p>CF_HTML <strong>HTML</strong>-Block mit Layout.</p>",
layout: {
mobile: "12",
tablet: "10",
desktop: "8",
spaceBottom: 1,
},
}

View File

@@ -0,0 +1,13 @@
{
_slug: "iframe-referenz",
name: "Iframe-Komponente (Referenz)",
content: "Eingebetteter Inhalt von einer externen URL z. B. Karte, Formular oder Video.",
iframe: "https://example.com/embed",
overlayImage: "",
layout: {
mobile: "12",
tablet: "10",
desktop: "8",
spaceBottom: 1,
},
}

View File

@@ -0,0 +1,14 @@
{
_slug: "image-referenz",
name: "Bild-Komponente (Referenz)",
image: "referenz-bild",
caption: "Bildunterschrift: CF_ComponentImage mit Layout und optionaler Caption.",
layout: {
mobile: "12",
tablet: "8",
desktop: "6",
spaceBottom: 1,
},
maxWidth: 800,
aspectRatio: 1.333,
}

View File

@@ -0,0 +1,12 @@
{
_slug: "gallery-referenz",
name: "Bildgalerie (Referenz)",
images: ["referenz-bild"],
layout: {
mobile: "12",
tablet: "12",
desktop: "12",
spaceBottom: 1.5,
},
description: "CF_ImageGallery mehrere Bilder mit gemeinsamem Layout.",
}

View File

@@ -0,0 +1,14 @@
{
_slug: "referenz-bild",
title: "Referenzbild für Komponenten-Test",
description: "Platzhalter für Bild-Komponenten und Galerien",
file: {
url: "https://placehold.co/800x600?text=Referenzbild",
fileName: "referenz-bild.jpg",
contentType: "image/jpeg",
details: {
size: 12345,
image: { width: 800, height: 600 },
},
},
}

View File

@@ -0,0 +1,13 @@
{
_slug: "docs",
name: "Dokumentation",
internal: "link-docs",
linkName: "Dokumentation",
url: "https://example.com/docs",
icon: "book",
external: false,
newTab: false,
author: "RustyCMS",
date: "2026-02-01",
source: "RustyCMS",
}

View File

@@ -0,0 +1,14 @@
{
_slug: "gitlab",
name: "GitLab",
internal: "link-gitlab",
linkName: "GitLab",
url: "https://gitlab.com/example/rustycms",
icon: "gitlab",
external: true,
newTab: true,
description: "Projekt-Repository auf GitLab",
author: "RustyCMS",
date: "2026-02-01",
source: "GitLab",
}

View File

@@ -0,0 +1,5 @@
{
_slug: "link-list-referenz",
headline: "Weitere Links",
links: ["gitlab", "docs"],
}

View File

@@ -0,0 +1,9 @@
{
_slug: "list-referenz",
internal: "list-ref",
item: [
"Erster Punkt",
"Zweiter Punkt",
"Dritter Punkt",
],
}

View File

@@ -0,0 +1,11 @@
{
name: "Intro (Home)",
content: "This block uses the **Markdown** type (CF_Markdown). You can enter *Markdown* or plain text here. The page row references this component.",
layout: {
mobile: "12",
tablet: "10",
desktop: "8",
spaceBottom: 1,
},
alignment: "center",
}

View File

@@ -0,0 +1,12 @@
{
_slug: "komponenten-referenz-intro",
name: "Komponenten-Referenz (Intro)",
content: "Diese Seite bindet **jede verfügbare Komponente** einmal ein als Referenz und zum Testen. Enthalten: Fullwidth-Banner (oben), Markdown, Iframe, Bild, Bildgalerie.",
layout: {
mobile: "12",
tablet: "10",
desktop: "8",
spaceBottom: 1.5,
},
alignment: "center",
}

View File

@@ -0,0 +1,11 @@
{
name: "Kontakt-Text",
content: "Schreib uns eine E-Mail oder nutze das Projekt auf GitLab. RustyCMS ist Open Source Beiträge und Ideen sind willkommen.",
layout: {
mobile: "12",
tablet: "8",
desktop: "6",
spaceBottom: 1.5,
},
alignment: "center",
}

View File

@@ -0,0 +1,14 @@
{
_slug: "header",
name: "Hauptnavigation",
internal: "navigation-header",
// Slugs aus page (home, about, kontakt, komponenten-referenz) oder post oder link
links: [
"home",
"about",
"kontakt",
"komponenten-referenz",
"gitlab",
"docs",
],
}

View File

@@ -0,0 +1,20 @@
{
slug: "about",
name: "Ueber uns",
linkName: "About",
headline: "Ueber RustyCMS",
subheadline: "Open Source. File-basiert. Schnell.",
topFullwidthBanner: "about-hero",
seoTitle: "Ueber uns RustyCMS",
seoMetaRobots: "index, follow",
seoDescription: "Erfahre mehr ueber das RustyCMS-Projekt.",
row1JustifyContent: "start",
row1AlignItems: "stretch",
row1Content: [],
row2JustifyContent: "start",
row2AlignItems: "stretch",
row2Content: [],
row3JustifyContent: "start",
row3AlignItems: "stretch",
row3Content: [],
}

View File

@@ -0,0 +1,25 @@
{
// ── Page (EN) ──────────────────────────────────────────
slug: "home",
name: "Home",
linkName: "Home",
icon: "home",
headline: "Welcome to RustyCMS",
subheadline: "The file-based Headless CMS written in Rust",
topFullwidthBanner: "hero",
seoTitle: "RustyCMS Home",
seoMetaRobots: "index, follow",
seoDescription: "Welcome to RustyCMS, the file-based Headless CMS.",
// ── Content-Layout (geerbt von content_layout) ────────
row1JustifyContent: "center",
row1AlignItems: "center",
row1Content: [
"intro"
],
row2JustifyContent: "start",
row2AlignItems: "stretch",
row2Content: [],
row3JustifyContent: "start",
row3AlignItems: "start",
row3Content: [],
}

View File

@@ -0,0 +1,44 @@
{
// ── Testseite: jede Komponente eingebunden (Referenz) ───
_slug: "komponenten-referenz",
slug: "komponenten-referenz",
name: "Komponenten-Referenz",
linkName: "Komponenten",
icon: "grid",
headline: "Komponenten-Referenz",
subheadline: "Alle Komponenten auf einer Seite zum Testen und als Referenz",
// Fullwidth-Banner (oben)
topFullwidthBanner: "hero",
// ── SEO ───────────────────────────────────────────────
seoTitle: "Komponenten-Referenz RustyCMS",
seoMetaRobots: "index, follow",
seoDescription: "Übersicht aller Komponenten: Banner, Headline, List, Link-Liste, Markdown, Iframe, Bild, YouTube, Quote, HTML, Galerie, SearchableText.",
// ── Row 1: Markdown-Komponenten ──────────────────────
row1JustifyContent: "center",
row1AlignItems: "stretch",
row1Content: [
"komponenten-referenz-intro",
"headline-referenz",
"intro",
"kontakt-text",
"list-referenz",
"link-list-referenz",
],
// ── Row 2: Iframe + Bild + YouTube ─────────────────────
row2JustifyContent: "start",
row2AlignItems: "stretch",
row2Content: [
"iframe-referenz",
"image-referenz",
"youtube-referenz",
"quote-referenz",
"html-referenz",
],
// ── Row 3: Bildgalerie + SearchableText ─────────────────
row3JustifyContent: "start",
row3AlignItems: "stretch",
row3Content: [
"gallery-referenz",
"search-referenz",
],
}

View File

@@ -0,0 +1,23 @@
{
slug: "kontakt",
name: "Kontakt",
linkName: "Kontakt",
icon: "mail",
headline: "Kontakt",
subheadline: "So erreichst du uns.",
topFullwidthBanner: "about-hero",
seoTitle: "Kontakt RustyCMS",
seoMetaRobots: "index, follow",
seoDescription: "Kontakt und Ansprechpartner für RustyCMS.",
row1JustifyContent: "center",
row1AlignItems: "stretch",
row1Content: [
"kontakt-text"
],
row2JustifyContent: "start",
row2AlignItems: "stretch",
row2Content: [],
row3JustifyContent: "start",
row3AlignItems: "stretch",
row3Content: [],
}

View File

@@ -0,0 +1,11 @@
{
_slug: "default",
logo: "referenz-bild",
footerText1: "© 2026 RustyCMS. Open Source.",
seoTitle: "RustyCMS File-basiertes Headless CMS",
seoDescription: "RustyCMS: Typen definieren, Content ablegen, API nutzen.",
blogTagPageHeadline: "Beiträge zum Tag",
blogPostsPageHeadline: "Blog",
blogPostsPageSubHeadline: "Alle Beiträge im Überblick",
website: "https://example.com",
}

View File

@@ -0,0 +1,34 @@
{
// Entry identifier (URL slug / filename without extension)
_slug: "beispielpost",
// ── Post-eigene Felder ─────────────────────────────────
slug: "beispielpost",
linkName: "Beispielpost",
icon: "article",
headline: "Ein Beispielpost",
subheadline: "Mit allen erweiterten Feldern",
excerpt: "Kurze Vorschau für Listen und Teaser.",
postImage: "", // Referenz auf img-Entry (Slug)
postTag: [
"rust",
"cms"
],
important: false,
date: "2026-02-15",
content: "# Einleitung\n\nHier steht der **Hauptinhalt** des Posts in Markdown. Absätze und _Formatierung_ werden unterstützt.\n\n## Überschriften und Listen\n\n- Erster Listenpunkt\n- Zweiter mit **Fett** und _Kursiv_\n- Dritter Punkt\n\n## Code und Zitate\n\n`Rust` eignet sich gut für sichere Systeme. Ein kurzer Code-Schnipsel:\n\n```\nfn main() {\n println!(\"Hallo von RustyCMS!\");\n}\n```\n\n> Ein Blockzitat passt gut für Hervorhebungen oder Zitate aus anderen Quellen.\n\n## Abschluss\n\nWeitere Absätze mit normalem Fließtext. [Links](https://example.com) und Bilder sind ebenfalls möglich.",
showCommentSection: true,
// ── SEO (geerbt von seo) ──────────────────────────────
seoTitle: "Beispielpost RustyCMS",
seoMetaRobots: "index, follow",
seoDescription: "Ein Beispielpost mit allen Feldern des erweiterten Post-Schemas.",
// ── Content-Layout (geerbt von content_layout) ────────
row1JustifyContent: "start",
row1AlignItems: "stretch",
row1Content: [],
row2JustifyContent: "start",
row2AlignItems: "stretch",
row2Content: [],
row3JustifyContent: "start",
row3AlignItems: "stretch",
row3Content: [],
}

View File

@@ -0,0 +1,10 @@
{
"category": "electronics",
"created_at": "2026-02-12T10:00:00Z",
"images": [
"img.jpg"
],
"price": 1299,
"sku": "EL-1001",
"title": "Laptop Pro 16 (Updated)"
}

View File

@@ -0,0 +1,12 @@
{
_slug: "quote-referenz",
quote: "Dies ist ein Beispielzitat für die Komponenten-Referenz. CF_Quote mit variant left/right.",
author: "RustyCMS",
variant: "left",
layout: {
mobile: "12",
tablet: "8",
desktop: "6",
spaceBottom: 1,
},
}

View File

@@ -0,0 +1,14 @@
{
_slug: "search-referenz",
id: "searchable-text-referenz",
title: "Durchsuchbare Texte (Referenz)",
description: "CF_ComponentSearchableText durchsuchbare Textfragmente mit optionaler Tag-Filterung.",
tagWhitelist: ["rust", "cms"],
textFragments: ["intro-suchbar", "faq-suchbar"],
layout: {
mobile: "12",
tablet: "10",
desktop: "8",
spaceBottom: 1,
},
}

View File

@@ -0,0 +1,3 @@
{
"name": "Auth Test"
}

3
content/en/tag/cms.json5 Normal file
View File

@@ -0,0 +1,3 @@
{
name: "CMS",
}

View File

@@ -0,0 +1,3 @@
{
name: "Rust",
}

View File

@@ -0,0 +1,7 @@
{
_slug: "faq-suchbar",
id: "fragment-faq",
title: "FAQ Häufige Fragen",
text: "Wie starte ich? Lege Typen in types/ an, Content in content/<collection>/. Die REST-API liefert die Daten.",
tags: ["cms"],
}

View File

@@ -0,0 +1,7 @@
{
_slug: "intro-suchbar",
id: "fragment-intro",
title: "Intro-Text",
text: "RustyCMS ist ein file-basiertes Headless CMS. Typen definieren, Content ablegen, API nutzen.",
tags: ["rust", "cms"],
}

View File

@@ -0,0 +1,5 @@
{
_slug: "banner-referenz",
id: "top-banner-ref",
text: "Hinweis: Dies ist ein Top-Banner (CF_TopBanner).",
}

View File

@@ -0,0 +1,13 @@
{
_slug: "youtube-referenz",
youtubeId: "dQw4w9WgXcQ",
params: "rel=0",
title: "YouTube-Video (Referenz)",
description: "CF_YoutubeVideo eingebettetes Video mit Layout.",
layout: {
mobile: "12",
tablet: "10",
desktop: "8",
spaceBottom: 1,
},
}