# blog-content Specification ## Purpose TBD - created by archiving change add-blog-section. Update Purpose after archive. ## Requirements ### Requirement: Blog Section Organization Blog posts SHALL be organized in a dedicated `content/blog/` directory following Hugo's content organization conventions. #### Scenario: Blog section exists in content directory **Given** the Hugo site structure **When** examining the content directory **Then** a `content/blog/` directory SHALL exist **And** section index files `_index.de.md` and `_index.en.md` SHALL exist in `content/blog/` **And** these index files SHALL contain appropriate front matter (title, description) #### Scenario: Blog posts use page bundles **Given** a blog post to be published **When** adding the post to the site **Then** the post SHALL be organized as a page bundle (directory with `index.de.md` or `index.en.md`) **And** the bundle directory name SHALL be URL-friendly (lowercase, hyphens, no special characters) **And** any post-specific assets (images, files) CAN be stored within the bundle directory --- ### Requirement: Blog Post Front Matter Each blog post SHALL include properly structured front matter with essential metadata. #### Scenario: Blog post front matter is complete **Given** a blog post markdown file **When** the post is processed by Hugo **Then** the front matter SHALL include a `title` field **And** the front matter SHALL include a `date` field in ISO 8601 format (YYYY-MM-DD) **And** the front matter MAY include a `description` or `summary` field for excerpts **And** the front matter MAY include a `draft` field to control publication status #### Scenario: First blog post is ready **Given** the Notion article "KI Generierte Website - ein Praxisbeispiel" **When** converting it to Hugo format **Then** a blog post SHALL exist at `content/blog/ki-generierte-website-praxisbeispiel/index.de.md` **And** the post SHALL contain the full article content from Notion **And** the front matter SHALL include title "KI Generierte Website - ein Praxisbeispiel" **And** the front matter SHALL include an appropriate publication date --- ### Requirement: Multilingual Blog Support Blog content SHALL support both German and English following the site's internationalization pattern. #### Scenario: Blog section metadata is multilingual **Given** the blog section **When** accessing the blog in different languages **Then** `content/blog/_index.de.md` SHALL exist with German metadata **And** `content/blog/_index.en.md` SHALL exist with English metadata **And** both SHALL have appropriate translated titles and descriptions #### Scenario: Blog posts can exist in multiple languages **Given** a blog post **When** translations are available **Then** the post MAY have both `index.de.md` and `index.en.md` in the same bundle **And** Hugo SHALL serve the appropriate language version based on the URL path **And** language switching SHALL work between translated blog posts --- ### Requirement: Content Formatting Blog post content SHALL be written in Markdown with proper formatting support. #### Scenario: Markdown content renders correctly **Given** a blog post with Markdown content **When** Hugo processes the post **Then** headings (H1-H6) SHALL be rendered correctly **And** paragraphs, lists, and emphasis SHALL be formatted properly **And** code blocks with syntax highlighting SHALL be supported **And** links and images SHALL be rendered correctly **And** HTML content SHALL be allowed (Hugo's unsafe renderer is enabled in config) #### Scenario: Special characters and formatting are preserved **Given** blog post content with German special characters (ä, ö, ü, ß) **When** the post is rendered **Then** all special characters SHALL display correctly **And** quotation marks and em dashes SHALL be preserved **And** UTF-8 encoding SHALL be maintained throughout