The blog's build pipeline converts markdown files to static HTML pages using Next.js static generation.
MarkdownService reads all .md files from markdown/posts/gray-matter parses YAML frontmatter into metadata objectsremark processes markdown through a plugin chain:
remarkGfm: GitHub Flavored Markdown (tables, strikethrough, tasklists)remarkSlug: adds ID attributes to headings for anchor linksremarkToc: generates table of contents from ### Table of contentsremarkMermaidToHtml: converts mermaid code blocks to renderable HTMLremarkHtml: final HTML conversionYYYY-MM-DD strings using UTC methodsgetStaticPaths() generates routes for all posts, categories, tags,
and paginated index pagesgetStaticProps() provides page-specific data (content, metadata,
sidebar counts)[...route].js handles all paths| Field | Required | Description |
|---|---|---|
| title | Yes | Page title |
| slug | Auto | Generated from filename |
| category | Yes | Single category (dev, ai) |
| tags | Yes | Comma-separated |
| date | Yes | YYYY-MM-DD |
| status | Yes | published or draft |
| summary | No | One-sentence description |
| modified | No | Last modified date |
| image | No | Header image filename |
| thumbnail | No | 75x75 index thumbnail |
| imgprompt | No | AI image generation prompt |
blog/utils/MarkdownService.js: singleton service, computed once at
build time, with dev-mode file watcher for hot reload.