[{"data":1,"prerenderedAt":63},["Reactive",2],{"blog-post-markdown-documentation-site-generators-complete-guide":3},{"slug":4,"title":5,"description":6,"excerpt":7,"date":8,"category":9,"author":10,"keywords":11,"readingMinutes":12,"html":13,"headings":14,"tools":37,"related":38},"markdown-documentation-site-generators-complete-guide","Markdown Documentation Site Generators: Complete Guide for Modern Documentation Workflows and Static Site Generation","Master advanced Markdown documentation site generators including Jekyll, Hugo, MkDocs, and Docusaurus. Learn site generation workflows, theme customization, plugin systems, and deployment strategies for professional documentation platforms.","Advanced Markdown documentation site generators enable sophisticated content management workflows that transform simple Markdown files into comprehensive documentation platforms with professional…","2025-12-02","Tutorial","Matthew Rathbone","markdown documentation generators, jekyll markdown, hugo markdown, mkdocs, docusaurus markdown, static site generators, documentation workflows, markdown site themes, documentation deployment",27,"\u003Cp>Advanced Markdown documentation site generators enable sophisticated content management workflows that transform simple Markdown files into comprehensive documentation platforms with professional themes, interactive features, and powerful deployment capabilities. By mastering modern site generation tools, content management systems, and deployment pipelines, technical teams can build scalable documentation ecosystems that serve diverse audiences while maintaining editorial simplicity and version control integration.\u003C/p>\n\u003Ch2 id=\"why-master-markdown-documentation-site-generators\">Why Master Markdown Documentation Site Generators?\u003C/h2>\n\u003Cp>Professional documentation site generators provide essential benefits for content-driven organizations:\u003C/p>\n\u003Cul>\n\u003Cli>\u003Cstrong>Rapid Development\u003C/strong>: Transform Markdown content into fully-featured websites with minimal configuration\u003C/li>\n\u003Cli>\u003Cstrong>Theme Flexibility\u003C/strong>: Access extensive theme ecosystems with customizable designs and responsive layouts\u003C/li>\n\u003Cli>\u003Cstrong>Plugin Ecosystems\u003C/strong>: Extend functionality through comprehensive plugin systems and custom integrations\u003C/li>\n\u003Cli>\u003Cstrong>Deployment Integration\u003C/strong>: Seamless integration with modern deployment platforms and CI/CD workflows\u003C/li>\n\u003Cli>\u003Cstrong>Performance Optimization\u003C/strong>: Generate fast, SEO-optimized static sites with excellent loading performance\u003C/li>\n\u003C/ul>\n\u003Ch2 id=\"foundation-generator-comparison\">Foundation Generator Comparison\u003C/h2>\n\u003Ch3 id=\"popular-documentation-site-generators\">Popular Documentation Site Generators\u003C/h3>\n\u003Cp>Understanding the strengths and use cases of major Markdown site generators:\u003C/p>\n\u003Cpre>\u003Ccode class=\"hljs language-yaml\">\u003Cspan class=\"hljs-comment\"># Site Generator Comparison Matrix\u003C/span>\n\u003Cspan class=\"hljs-attr\">generators:\u003C/span>\n  \u003Cspan class=\"hljs-attr\">jekyll:\u003C/span>\n    \u003Cspan class=\"hljs-attr\">language:\u003C/span> \u003Cspan class=\"hljs-string\">Ruby\u003C/span>\n    \u003Cspan class=\"hljs-attr\">strengths:\u003C/span>\n      \u003Cspan class=\"hljs-bullet\">-\u003C/span> \u003Cspan class=\"hljs-string\">GitHub\u003C/span> \u003Cspan class=\"hljs-string\">Pages\u003C/span> \u003Cspan class=\"hljs-string\">native\u003C/span> \u003Cspan class=\"hljs-string\">support\u003C/span>\n      \u003Cspan class=\"hljs-bullet\">-\u003C/span> \u003Cspan class=\"hljs-string\">Mature\u003C/span> \u003Cspan class=\"hljs-string\">plugin\u003C/span> \u003Cspan class=\"hljs-string\">ecosystem\u003C/span>\n      \u003Cspan class=\"hljs-bullet\">-\u003C/span> \u003Cspan class=\"hljs-string\">Liquid\u003C/span> \u003Cspan class=\"hljs-string\">templating\u003C/span> \u003Cspan class=\"hljs-string\">system\u003C/span>\n      \u003Cspan class=\"hljs-bullet\">-\u003C/span> \u003Cspan class=\"hljs-string\">Strong\u003C/span> \u003Cspan class=\"hljs-string\">blogging\u003C/span> \u003Cspan class=\"hljs-string\">features\u003C/span>\n    \u003Cspan class=\"hljs-attr\">use_cases:\u003C/span>\n      \u003Cspan class=\"hljs-bullet\">-\u003C/span> \u003Cspan class=\"hljs-string\">GitHub-hosted\u003C/span> \u003Cspan class=\"hljs-string\">documentation\u003C/span>\n      \u003Cspan class=\"hljs-bullet\">-\u003C/span> \u003Cspan class=\"hljs-string\">Blog-style\u003C/span> \u003Cspan class=\"hljs-string\">documentation\u003C/span>\n      \u003Cspan class=\"hljs-bullet\">-\u003C/span> \u003Cspan class=\"hljs-string\">Academic\u003C/span> \u003Cspan class=\"hljs-string\">websites\u003C/span>\n      \u003Cspan class=\"hljs-bullet\">-\u003C/span> \u003Cspan class=\"hljs-string\">Small\u003C/span> \u003Cspan class=\"hljs-string\">to\u003C/span> \u003Cspan class=\"hljs-string\">medium\u003C/span> \u003Cspan class=\"hljs-string\">projects\u003C/span>\n    \u003Cspan class=\"hljs-attr\">learning_curve:\u003C/span> \u003Cspan class=\"hljs-string\">Medium\u003C/span>\n    \u003Cspan class=\"hljs-attr\">build_speed:\u003C/span> \u003Cspan class=\"hljs-string\">Medium\u003C/span>\n    \n  \u003Cspan class=\"hljs-attr\">hugo:\u003C/span>\n    \u003Cspan class=\"hljs-attr\">language:\u003C/span> \u003Cspan class=\"hljs-string\">Go\u003C/span>\n    \u003Cspan class=\"hljs-attr\">strengths:\u003C/span>\n      \u003Cspan class=\"hljs-bullet\">-\u003C/span> \u003Cspan class=\"hljs-string\">Extremely\u003C/span> \u003Cspan class=\"hljs-string\">fast\u003C/span> \u003Cspan class=\"hljs-string\">build\u003C/span> \u003Cspan class=\"hljs-string\">times\u003C/span>\n      \u003Cspan class=\"hljs-bullet\">-\u003C/span> \u003Cspan class=\"hljs-string\">Powerful\u003C/span> \u003Cspan class=\"hljs-string\">templating\u003C/span> \u003Cspan class=\"hljs-string\">system\u003C/span>\n      \u003Cspan class=\"hljs-bullet\">-\u003C/span> \u003Cspan class=\"hljs-string\">Built-in\u003C/span> \u003Cspan class=\"hljs-string\">optimization\u003C/span> \u003Cspan class=\"hljs-string\">features\u003C/span>\n      \u003Cspan class=\"hljs-bullet\">-\u003C/span> \u003Cspan class=\"hljs-string\">Extensive\u003C/span> \u003Cspan class=\"hljs-string\">theme\u003C/span> \u003Cspan class=\"hljs-string\">gallery\u003C/span>\n    \u003Cspan class=\"hljs-attr\">use_cases:\u003C/span>\n      \u003Cspan class=\"hljs-bullet\">-\u003C/span> \u003Cspan class=\"hljs-string\">Large\u003C/span> \u003Cspan class=\"hljs-string\">documentation\u003C/span> \u003Cspan class=\"hljs-string\">sites\u003C/span>\n      \u003Cspan class=\"hljs-bullet\">-\u003C/span> \u003Cspan class=\"hljs-string\">Corporate\u003C/span> \u003Cspan class=\"hljs-string\">websites\u003C/span>\n      \u003Cspan class=\"hljs-bullet\">-\u003C/span> \u003Cspan class=\"hljs-string\">Multi-language\u003C/span> \u003Cspan class=\"hljs-string\">content\u003C/span>\n      \u003Cspan class=\"hljs-bullet\">-\u003C/span> \u003Cspan class=\"hljs-string\">Performance-critical\u003C/span> \u003Cspan class=\"hljs-string\">sites\u003C/span>\n    \u003Cspan class=\"hljs-attr\">learning_curve:\u003C/span> \u003Cspan class=\"hljs-string\">Medium-High\u003C/span>\n    \u003Cspan class=\"hljs-attr\">build_speed:\u003C/span> \u003Cspan class=\"hljs-string\">Very\u003C/span> \u003Cspan class=\"hljs-string\">Fast\u003C/span>\n    \n  \u003Cspan class=\"hljs-attr\">mkdocs:\u003C/span>\n    \u003Cspan class=\"hljs-attr\">language:\u003C/span> \u003Cspan class=\"hljs-string\">Python\u003C/span>\n    \u003Cspan class=\"hljs-attr\">strengths:\u003C/span>\n      \u003Cspan class=\"hljs-bullet\">-\u003C/span> \u003Cspan class=\"hljs-string\">Simple\u003C/span> \u003Cspan class=\"hljs-string\">configuration\u003C/span>\n      \u003Cspan class=\"hljs-bullet\">-\u003C/span> \u003Cspan class=\"hljs-string\">Documentation-focused\u003C/span> \u003Cspan class=\"hljs-string\">design\u003C/span>\n      \u003Cspan class=\"hljs-bullet\">-\u003C/span> \u003Cspan class=\"hljs-string\">Material\u003C/span> \u003Cspan class=\"hljs-string\">Design\u003C/span> \u003Cspan class=\"hljs-string\">theme\u003C/span>\n      \u003Cspan class=\"hljs-bullet\">-\u003C/span> \u003Cspan class=\"hljs-string\">Search\u003C/span> \u003Cspan class=\"hljs-string\">integration\u003C/span>\n    \u003Cspan class=\"hljs-attr\">use_cases:\u003C/span>\n      \u003Cspan class=\"hljs-bullet\">-\u003C/span> \u003Cspan class=\"hljs-string\">Technical\u003C/span> \u003Cspan class=\"hljs-string\">documentation\u003C/span>\n      \u003Cspan class=\"hljs-bullet\">-\u003C/span> \u003Cspan class=\"hljs-string\">API\u003C/span> \u003Cspan class=\"hljs-string\">documentation\u003C/span>\n      \u003Cspan class=\"hljs-bullet\">-\u003C/span> \u003Cspan class=\"hljs-string\">Software\u003C/span> \u003Cspan class=\"hljs-string\">project\u003C/span> \u003Cspan class=\"hljs-string\">docs\u003C/span>\n      \u003Cspan class=\"hljs-bullet\">-\u003C/span> \u003Cspan class=\"hljs-string\">Developer-focused\u003C/span> \u003Cspan class=\"hljs-string\">content\u003C/span>\n    \u003Cspan class=\"hljs-attr\">learning_curve:\u003C/span> \u003Cspan class=\"hljs-string\">Low\u003C/span>\n    \u003Cspan class=\"hljs-attr\">build_speed:\u003C/span> \u003Cspan class=\"hljs-string\">Fast\u003C/span>\n    \n  \u003Cspan class=\"hljs-attr\">docusaurus:\u003C/span>\n    \u003Cspan class=\"hljs-attr\">language:\u003C/span> \u003Cspan class=\"hljs-string\">JavaScript\u003C/span>\n    \u003Cspan class=\"hljs-attr\">strengths:\u003C/span>\n      \u003Cspan class=\"hljs-bullet\">-\u003C/span> \u003Cspan class=\"hljs-string\">React-based\u003C/span> \u003Cspan class=\"hljs-string\">architecture\u003C/span>\n      \u003Cspan class=\"hljs-bullet\">-\u003C/span> \u003Cspan class=\"hljs-string\">Versioned\u003C/span> \u003Cspan class=\"hljs-string\">documentation\u003C/span>\n      \u003Cspan class=\"hljs-bullet\">-\u003C/span> \u003Cspan class=\"hljs-string\">Internationalization\u003C/span> \u003Cspan class=\"hljs-string\">support\u003C/span>\n      \u003Cspan class=\"hljs-bullet\">-\u003C/span> \u003Cspan class=\"hljs-string\">Modern\u003C/span> \u003Cspan class=\"hljs-string\">development\u003C/span> \u003Cspan class=\"hljs-string\">workflow\u003C/span>\n    \u003Cspan class=\"hljs-attr\">use_cases:\u003C/span>\n      \u003Cspan class=\"hljs-bullet\">-\u003C/span> \u003Cspan class=\"hljs-string\">Open\u003C/span> \u003Cspan class=\"hljs-string\">source\u003C/span> \u003Cspan class=\"hljs-string\">projects\u003C/span>\n      \u003Cspan class=\"hljs-bullet\">-\u003C/span> \u003Cspan class=\"hljs-string\">API\u003C/span> \u003Cspan class=\"hljs-string\">documentation\u003C/span>\n      \u003Cspan class=\"hljs-bullet\">-\u003C/span> \u003Cspan class=\"hljs-string\">Multi-version\u003C/span> \u003Cspan class=\"hljs-string\">docs\u003C/span>\n      \u003Cspan class=\"hljs-bullet\">-\u003C/span> \u003Cspan class=\"hljs-string\">React-based\u003C/span> \u003Cspan class=\"hljs-string\">customization\u003C/span>\n    \u003Cspan class=\"hljs-attr\">learning_curve:\u003C/span> \u003Cspan class=\"hljs-string\">Medium\u003C/span>\n    \u003Cspan class=\"hljs-attr\">build_speed:\u003C/span> \u003Cspan class=\"hljs-string\">Fast\u003C/span>\n    \n  \u003Cspan class=\"hljs-attr\">gitbook:\u003C/span>\n    \u003Cspan class=\"hljs-attr\">language:\u003C/span> \u003Cspan class=\"hljs-string\">JavaScript\u003C/span>\n    \u003Cspan class=\"hljs-attr\">strengths:\u003C/span>\n      \u003Cspan class=\"hljs-bullet\">-\u003C/span> \u003Cspan class=\"hljs-string\">User-friendly\u003C/span> \u003Cspan class=\"hljs-string\">interface\u003C/span>\n      \u003Cspan class=\"hljs-bullet\">-\u003C/span> \u003Cspan class=\"hljs-string\">Collaborative\u003C/span> \u003Cspan class=\"hljs-string\">editing\u003C/span>\n      \u003Cspan class=\"hljs-bullet\">-\u003C/span> \u003Cspan class=\"hljs-string\">Built-in\u003C/span> \u003Cspan class=\"hljs-string\">analytics\u003C/span>\n      \u003Cspan class=\"hljs-bullet\">-\u003C/span> \u003Cspan class=\"hljs-string\">Publishing\u003C/span> \u003Cspan class=\"hljs-string\">workflows\u003C/span>\n    \u003Cspan class=\"hljs-attr\">use_cases:\u003C/span>\n      \u003Cspan class=\"hljs-bullet\">-\u003C/span> \u003Cspan class=\"hljs-string\">Team\u003C/span> \u003Cspan class=\"hljs-string\">documentation\u003C/span>\n      \u003Cspan class=\"hljs-bullet\">-\u003C/span> \u003Cspan class=\"hljs-string\">Knowledge\u003C/span> \u003Cspan class=\"hljs-string\">bases\u003C/span>\n      \u003Cspan class=\"hljs-bullet\">-\u003C/span> \u003Cspan class=\"hljs-string\">User\u003C/span> \u003Cspan class=\"hljs-string\">manuals\u003C/span>\n      \u003Cspan class=\"hljs-bullet\">-\u003C/span> \u003Cspan class=\"hljs-string\">Non-technical\u003C/span> \u003Cspan class=\"hljs-string\">users\u003C/span>\n    \u003Cspan class=\"hljs-attr\">learning_curve:\u003C/span> \u003Cspan class=\"hljs-string\">Low\u003C/span>\n    \u003Cspan class=\"hljs-attr\">build_speed:\u003C/span> \u003Cspan class=\"hljs-string\">Medium\u003C/span>\n    \n  \u003Cspan class=\"hljs-attr\">gatsby:\u003C/span>\n    \u003Cspan class=\"hljs-attr\">language:\u003C/span> \u003Cspan class=\"hljs-string\">JavaScript\u003C/span>\n    \u003Cspan class=\"hljs-attr\">strengths:\u003C/span>\n      \u003Cspan class=\"hljs-bullet\">-\u003C/span> \u003Cspan class=\"hljs-string\">GraphQL\u003C/span> \u003Cspan class=\"hljs-string\">data\u003C/span> \u003Cspan class=\"hljs-string\">layer\u003C/span>\n      \u003Cspan class=\"hljs-bullet\">-\u003C/span> \u003Cspan class=\"hljs-string\">React\u003C/span> \u003Cspan class=\"hljs-string\">component\u003C/span> \u003Cspan class=\"hljs-string\">system\u003C/span>\n      \u003Cspan class=\"hljs-bullet\">-\u003C/span> \u003Cspan class=\"hljs-string\">Performance\u003C/span> \u003Cspan class=\"hljs-string\">optimization\u003C/span>\n      \u003Cspan class=\"hljs-bullet\">-\u003C/span> \u003Cspan class=\"hljs-string\">Rich\u003C/span> \u003Cspan class=\"hljs-string\">plugin\u003C/span> \u003Cspan class=\"hljs-string\">ecosystem\u003C/span>\n    \u003Cspan class=\"hljs-attr\">use_cases:\u003C/span>\n      \u003Cspan class=\"hljs-bullet\">-\u003C/span> \u003Cspan class=\"hljs-string\">Complex\u003C/span> \u003Cspan class=\"hljs-string\">documentation\u003C/span> \u003Cspan class=\"hljs-string\">sites\u003C/span>\n      \u003Cspan class=\"hljs-bullet\">-\u003C/span> \u003Cspan class=\"hljs-string\">Data-driven\u003C/span> \u003Cspan class=\"hljs-string\">content\u003C/span>\n      \u003Cspan class=\"hljs-bullet\">-\u003C/span> \u003Cspan class=\"hljs-string\">Custom\u003C/span> \u003Cspan class=\"hljs-string\">functionality\u003C/span>\n      \u003Cspan class=\"hljs-bullet\">-\u003C/span> \u003Cspan class=\"hljs-string\">Advanced\u003C/span> \u003Cspan class=\"hljs-string\">interactivity\u003C/span>\n    \u003Cspan class=\"hljs-attr\">learning_curve:\u003C/span> \u003Cspan class=\"hljs-string\">High\u003C/span>\n    \u003Cspan class=\"hljs-attr\">build_speed:\u003C/span> \u003Cspan class=\"hljs-string\">Medium\u003C/span>\n\u003C/code>\u003C/pre>\u003Ch3 id=\"comprehensive-generator-implementation\">Comprehensive Generator Implementation\u003C/h3>\n\u003Cp>Advanced site generator setup and optimization system:\u003C/p>\n\u003Cpre>\u003Ccode class=\"hljs language-javascript\">\u003Cspan class=\"hljs-comment\">// site-generator-manager.js - Multi-generator management system\u003C/span>\n\u003Cspan class=\"hljs-keyword\">const\u003C/span> fs = \u003Cspan class=\"hljs-built_in\">require\u003C/span>(\u003Cspan class=\"hljs-string\">&#x27;fs&#x27;\u003C/span>).\u003Cspan class=\"hljs-property\">promises\u003C/span>;\n\u003Cspan class=\"hljs-keyword\">const\u003C/span> path = \u003Cspan class=\"hljs-built_in\">require\u003C/span>(\u003Cspan class=\"hljs-string\">&#x27;path&#x27;\u003C/span>);\n\u003Cspan class=\"hljs-keyword\">const\u003C/span> yaml = \u003Cspan class=\"hljs-built_in\">require\u003C/span>(\u003Cspan class=\"hljs-string\">&#x27;js-yaml&#x27;\u003C/span>);\n\u003Cspan class=\"hljs-keyword\">const\u003C/span> { execSync } = \u003Cspan class=\"hljs-built_in\">require\u003C/span>(\u003Cspan class=\"hljs-string\">&#x27;child_process&#x27;\u003C/span>);\n\n\u003Cspan class=\"hljs-keyword\">class\u003C/span> \u003Cspan class=\"hljs-title class_\">DocumentationSiteManager\u003C/span> {\n    \u003Cspan class=\"hljs-title function_\">constructor\u003C/span>(\u003Cspan class=\"hljs-params\">options = {}\u003C/span>) {\n        \u003Cspan class=\"hljs-variable language_\">this\u003C/span>.\u003Cspan class=\"hljs-property\">projectRoot\u003C/span> = options.\u003Cspan class=\"hljs-property\">projectRoot\u003C/span> || process.\u003Cspan class=\"hljs-title function_\">cwd\u003C/span>();\n        \u003Cspan class=\"hljs-variable language_\">this\u003C/span>.\u003Cspan class=\"hljs-property\">generators\u003C/span> = {\n            \u003Cspan class=\"hljs-attr\">jekyll\u003C/span>: \u003Cspan class=\"hljs-keyword\">new\u003C/span> \u003Cspan class=\"hljs-title class_\">JekyllGenerator\u003C/span>(\u003Cspan class=\"hljs-variable language_\">this\u003C/span>),\n            \u003Cspan class=\"hljs-attr\">hugo\u003C/span>: \u003Cspan class=\"hljs-keyword\">new\u003C/span> \u003Cspan class=\"hljs-title class_\">HugoGenerator\u003C/span>(\u003Cspan class=\"hljs-variable language_\">this\u003C/span>),\n            \u003Cspan class=\"hljs-attr\">mkdocs\u003C/span>: \u003Cspan class=\"hljs-keyword\">new\u003C/span> \u003Cspan class=\"hljs-title class_\">MkDocsGenerator\u003C/span>(\u003Cspan class=\"hljs-variable language_\">this\u003C/span>),\n            \u003Cspan class=\"hljs-attr\">docusaurus\u003C/span>: \u003Cspan class=\"hljs-keyword\">new\u003C/span> \u003Cspan class=\"hljs-title class_\">DocusaurusGenerator\u003C/span>(\u003Cspan class=\"hljs-variable language_\">this\u003C/span>)\n        };\n        \n        \u003Cspan class=\"hljs-variable language_\">this\u003C/span>.\u003Cspan class=\"hljs-property\">config\u003C/span> = {\n            \u003Cspan class=\"hljs-attr\">generator\u003C/span>: options.\u003Cspan class=\"hljs-property\">generator\u003C/span> || \u003Cspan class=\"hljs-string\">&#x27;jekyll&#x27;\u003C/span>,\n            \u003Cspan class=\"hljs-attr\">theme\u003C/span>: options.\u003Cspan class=\"hljs-property\">theme\u003C/span>,\n            \u003Cspan class=\"hljs-attr\">plugins\u003C/span>: options.\u003Cspan class=\"hljs-property\">plugins\u003C/span> || [],\n            \u003Cspan class=\"hljs-attr\">deployment\u003C/span>: options.\u003Cspan class=\"hljs-property\">deployment\u003C/span> || {},\n            \u003Cspan class=\"hljs-attr\">optimization\u003C/span>: options.\u003Cspan class=\"hljs-property\">optimization\u003C/span> || {}\n        };\n        \n        \u003Cspan class=\"hljs-variable language_\">this\u003C/span>.\u003Cspan class=\"hljs-property\">contentDirectory\u003C/span> = options.\u003Cspan class=\"hljs-property\">contentDirectory\u003C/span> || \u003Cspan class=\"hljs-string\">&#x27;content&#x27;\u003C/span>;\n        \u003Cspan class=\"hljs-variable language_\">this\u003C/span>.\u003Cspan class=\"hljs-property\">outputDirectory\u003C/span> = options.\u003Cspan class=\"hljs-property\">outputDirectory\u003C/span> || \u003Cspan class=\"hljs-string\">&#x27;dist&#x27;\u003C/span>;\n    }\n    \n    \u003Cspan class=\"hljs-keyword\">async\u003C/span> \u003Cspan class=\"hljs-title function_\">initializeProject\u003C/span>(\u003Cspan class=\"hljs-params\">generatorType, projectConfig = {}\u003C/span>) {\n        \u003Cspan class=\"hljs-variable language_\">console\u003C/span>.\u003Cspan class=\"hljs-title function_\">log\u003C/span>(\u003Cspan class=\"hljs-string\">`Initializing \u003Cspan class=\"hljs-subst\">${generatorType}\u003C/span> documentation site...`\u003C/span>);\n        \n        \u003Cspan class=\"hljs-keyword\">const\u003C/span> generator = \u003Cspan class=\"hljs-variable language_\">this\u003C/span>.\u003Cspan class=\"hljs-property\">generators\u003C/span>[generatorType];\n        \u003Cspan class=\"hljs-keyword\">if\u003C/span> (!generator) {\n            \u003Cspan class=\"hljs-keyword\">throw\u003C/span> \u003Cspan class=\"hljs-keyword\">new\u003C/span> \u003Cspan class=\"hljs-title class_\">Error\u003C/span>(\u003Cspan class=\"hljs-string\">`Unsupported generator: \u003Cspan class=\"hljs-subst\">${generatorType}\u003C/span>`\u003C/span>);\n        }\n        \n        \u003Cspan class=\"hljs-comment\">// Create project structure\u003C/span>\n        \u003Cspan class=\"hljs-keyword\">await\u003C/span> \u003Cspan class=\"hljs-variable language_\">this\u003C/span>.\u003Cspan class=\"hljs-title function_\">createProjectStructure\u003C/span>(generatorType, projectConfig);\n        \n        \u003Cspan class=\"hljs-comment\">// Initialize generator-specific configuration\u003C/span>\n        \u003Cspan class=\"hljs-keyword\">await\u003C/span> generator.\u003Cspan class=\"hljs-title function_\">initialize\u003C/span>(projectConfig);\n        \n        \u003Cspan class=\"hljs-comment\">// Set up theme and plugins\u003C/span>\n        \u003Cspan class=\"hljs-keyword\">if\u003C/span> (projectConfig.\u003Cspan class=\"hljs-property\">theme\u003C/span>) {\n            \u003Cspan class=\"hljs-keyword\">await\u003C/span> generator.\u003Cspan class=\"hljs-title function_\">installTheme\u003C/span>(projectConfig.\u003Cspan class=\"hljs-property\">theme\u003C/span>);\n        }\n        \n        \u003Cspan class=\"hljs-keyword\">if\u003C/span> (projectConfig.\u003Cspan class=\"hljs-property\">plugins\u003C/span> &amp;&amp; projectConfig.\u003Cspan class=\"hljs-property\">plugins\u003C/span>.\u003Cspan class=\"hljs-property\">length\u003C/span> &gt; \u003Cspan class=\"hljs-number\">0\u003C/span>) {\n            \u003Cspan class=\"hljs-keyword\">await\u003C/span> generator.\u003Cspan class=\"hljs-title function_\">installPlugins\u003C/span>(projectConfig.\u003Cspan class=\"hljs-property\">plugins\u003C/span>);\n        }\n        \n        \u003Cspan class=\"hljs-comment\">// Create sample content\u003C/span>\n        \u003Cspan class=\"hljs-keyword\">await\u003C/span> \u003Cspan class=\"hljs-variable language_\">this\u003C/span>.\u003Cspan class=\"hljs-title function_\">createSampleContent\u003C/span>(generatorType);\n        \n        \u003Cspan class=\"hljs-variable language_\">console\u003C/span>.\u003Cspan class=\"hljs-title function_\">log\u003C/span>(\u003Cspan class=\"hljs-string\">`\u003Cspan class=\"hljs-subst\">${generatorType}\u003C/span> project initialized successfully`\u003C/span>);\n        \u003Cspan class=\"hljs-keyword\">return\u003C/span> generator;\n    }\n    \n    \u003Cspan class=\"hljs-keyword\">async\u003C/span> \u003Cspan class=\"hljs-title function_\">createProjectStructure\u003C/span>(\u003Cspan class=\"hljs-params\">generatorType, config\u003C/span>) {\n        \u003Cspan class=\"hljs-keyword\">const\u003C/span> structures = {\n            \u003Cspan class=\"hljs-attr\">jekyll\u003C/span>: {\n                \u003Cspan class=\"hljs-attr\">directories\u003C/span>: [\n                    \u003Cspan class=\"hljs-string\">&#x27;_posts&#x27;\u003C/span>,\n                    \u003Cspan class=\"hljs-string\">&#x27;_pages&#x27;\u003C/span>, \n                    \u003Cspan class=\"hljs-string\">&#x27;_layouts&#x27;\u003C/span>,\n                    \u003Cspan class=\"hljs-string\">&#x27;_includes&#x27;\u003C/span>,\n                    \u003Cspan class=\"hljs-string\">&#x27;_sass&#x27;\u003C/span>,\n                    \u003Cspan class=\"hljs-string\">&#x27;assets/css&#x27;\u003C/span>,\n                    \u003Cspan class=\"hljs-string\">&#x27;assets/js&#x27;\u003C/span>,\n                    \u003Cspan class=\"hljs-string\">&#x27;assets/images&#x27;\u003C/span>\n                ],\n                \u003Cspan class=\"hljs-attr\">files\u003C/span>: {\n                    \u003Cspan class=\"hljs-string\">&#x27;_config.yml&#x27;\u003C/span>: \u003Cspan class=\"hljs-variable language_\">this\u003C/span>.\u003Cspan class=\"hljs-title function_\">generateJekyllConfig\u003C/span>(config),\n                    \u003Cspan class=\"hljs-string\">&#x27;Gemfile&#x27;\u003C/span>: \u003Cspan class=\"hljs-variable language_\">this\u003C/span>.\u003Cspan class=\"hljs-title function_\">generateJekyllGemfile\u003C/span>(config),\n                    \u003Cspan class=\"hljs-string\">&#x27;index.md&#x27;\u003C/span>: \u003Cspan class=\"hljs-variable language_\">this\u003C/span>.\u003Cspan class=\"hljs-title function_\">generateIndexPage\u003C/span>(config),\n                    \u003Cspan class=\"hljs-string\">&#x27;.gitignore&#x27;\u003C/span>: \u003Cspan class=\"hljs-variable language_\">this\u003C/span>.\u003Cspan class=\"hljs-title function_\">generateGitignore\u003C/span>(\u003Cspan class=\"hljs-string\">&#x27;jekyll&#x27;\u003C/span>)\n                }\n            },\n            \n            \u003Cspan class=\"hljs-attr\">hugo\u003C/span>: {\n                \u003Cspan class=\"hljs-attr\">directories\u003C/span>: [\n                    \u003Cspan class=\"hljs-string\">&#x27;content/posts&#x27;\u003C/span>,\n                    \u003Cspan class=\"hljs-string\">&#x27;content/docs&#x27;\u003C/span>,\n                    \u003Cspan class=\"hljs-string\">&#x27;layouts&#x27;\u003C/span>,\n                    \u003Cspan class=\"hljs-string\">&#x27;static/css&#x27;\u003C/span>,\n                    \u003Cspan class=\"hljs-string\">&#x27;static/js&#x27;\u003C/span>,\n                    \u003Cspan class=\"hljs-string\">&#x27;static/images&#x27;\u003C/span>,\n                    \u003Cspan class=\"hljs-string\">&#x27;data&#x27;\u003C/span>,\n                    \u003Cspan class=\"hljs-string\">&#x27;archetypes&#x27;\u003C/span>\n                ],\n                \u003Cspan class=\"hljs-attr\">files\u003C/span>: {\n                    \u003Cspan class=\"hljs-string\">&#x27;config.yaml&#x27;\u003C/span>: \u003Cspan class=\"hljs-variable language_\">this\u003C/span>.\u003Cspan class=\"hljs-title function_\">generateHugoConfig\u003C/span>(config),\n                    \u003Cspan class=\"hljs-string\">&#x27;content/_index.md&#x27;\u003C/span>: \u003Cspan class=\"hljs-variable language_\">this\u003C/span>.\u003Cspan class=\"hljs-title function_\">generateIndexPage\u003C/span>(config),\n                    \u003Cspan class=\"hljs-string\">&#x27;archetypes/default.md&#x27;\u003C/span>: \u003Cspan class=\"hljs-variable language_\">this\u003C/span>.\u003Cspan class=\"hljs-title function_\">generateHugoArchetype\u003C/span>(),\n                    \u003Cspan class=\"hljs-string\">&#x27;.gitignore&#x27;\u003C/span>: \u003Cspan class=\"hljs-variable language_\">this\u003C/span>.\u003Cspan class=\"hljs-title function_\">generateGitignore\u003C/span>(\u003Cspan class=\"hljs-string\">&#x27;hugo&#x27;\u003C/span>)\n                }\n            },\n            \n            \u003Cspan class=\"hljs-attr\">mkdocs\u003C/span>: {\n                \u003Cspan class=\"hljs-attr\">directories\u003C/span>: [\n                    \u003Cspan class=\"hljs-string\">&#x27;docs&#x27;\u003C/span>,\n                    \u003Cspan class=\"hljs-string\">&#x27;docs/assets&#x27;\u003C/span>,\n                    \u003Cspan class=\"hljs-string\">&#x27;docs/stylesheets&#x27;\u003C/span>,\n                    \u003Cspan class=\"hljs-string\">&#x27;docs/javascripts&#x27;\u003C/span>\n                ],\n                \u003Cspan class=\"hljs-attr\">files\u003C/span>: {\n                    \u003Cspan class=\"hljs-string\">&#x27;mkdocs.yml&#x27;\u003C/span>: \u003Cspan class=\"hljs-variable language_\">this\u003C/span>.\u003Cspan class=\"hljs-title function_\">generateMkDocsConfig\u003C/span>(config),\n                    \u003Cspan class=\"hljs-string\">&#x27;docs/index.md&#x27;\u003C/span>: \u003Cspan class=\"hljs-variable language_\">this\u003C/span>.\u003Cspan class=\"hljs-title function_\">generateIndexPage\u003C/span>(config),\n                    \u003Cspan class=\"hljs-string\">&#x27;requirements.txt&#x27;\u003C/span>: \u003Cspan class=\"hljs-variable language_\">this\u003C/span>.\u003Cspan class=\"hljs-title function_\">generateMkDocsRequirements\u003C/span>(config),\n                    \u003Cspan class=\"hljs-string\">&#x27;.gitignore&#x27;\u003C/span>: \u003Cspan class=\"hljs-variable language_\">this\u003C/span>.\u003Cspan class=\"hljs-title function_\">generateGitignore\u003C/span>(\u003Cspan class=\"hljs-string\">&#x27;mkdocs&#x27;\u003C/span>)\n                }\n            },\n            \n            \u003Cspan class=\"hljs-attr\">docusaurus\u003C/span>: {\n                \u003Cspan class=\"hljs-attr\">directories\u003C/span>: [\n                    \u003Cspan class=\"hljs-string\">&#x27;docs&#x27;\u003C/span>,\n                    \u003Cspan class=\"hljs-string\">&#x27;blog&#x27;\u003C/span>,\n                    \u003Cspan class=\"hljs-string\">&#x27;src/components&#x27;\u003C/span>,\n                    \u003Cspan class=\"hljs-string\">&#x27;src/pages&#x27;\u003C/span>,\n                    \u003Cspan class=\"hljs-string\">&#x27;static/img&#x27;\u003C/span>\n                ],\n                \u003Cspan class=\"hljs-attr\">files\u003C/span>: {\n                    \u003Cspan class=\"hljs-string\">&#x27;docusaurus.config.js&#x27;\u003C/span>: \u003Cspan class=\"hljs-variable language_\">this\u003C/span>.\u003Cspan class=\"hljs-title function_\">generateDocusaurusConfig\u003C/span>(config),\n                    \u003Cspan class=\"hljs-string\">&#x27;package.json&#x27;\u003C/span>: \u003Cspan class=\"hljs-variable language_\">this\u003C/span>.\u003Cspan class=\"hljs-title function_\">generateDocusaurusPackageJson\u003C/span>(config),\n                    \u003Cspan class=\"hljs-string\">&#x27;docs/intro.md&#x27;\u003C/span>: \u003Cspan class=\"hljs-variable language_\">this\u003C/span>.\u003Cspan class=\"hljs-title function_\">generateIndexPage\u003C/span>(config),\n                    \u003Cspan class=\"hljs-string\">&#x27;.gitignore&#x27;\u003C/span>: \u003Cspan class=\"hljs-variable language_\">this\u003C/span>.\u003Cspan class=\"hljs-title function_\">generateGitignore\u003C/span>(\u003Cspan class=\"hljs-string\">&#x27;docusaurus&#x27;\u003C/span>)\n                }\n            }\n        };\n        \n        \u003Cspan class=\"hljs-keyword\">const\u003C/span> structure = structures[generatorType];\n        \u003Cspan class=\"hljs-keyword\">if\u003C/span> (!structure) {\n            \u003Cspan class=\"hljs-keyword\">throw\u003C/span> \u003Cspan class=\"hljs-keyword\">new\u003C/span> \u003Cspan class=\"hljs-title class_\">Error\u003C/span>(\u003Cspan class=\"hljs-string\">`No structure defined for \u003Cspan class=\"hljs-subst\">${generatorType}\u003C/span>`\u003C/span>);\n        }\n        \n        \u003Cspan class=\"hljs-comment\">// Create directories\u003C/span>\n        \u003Cspan class=\"hljs-keyword\">for\u003C/span> (\u003Cspan class=\"hljs-keyword\">const\u003C/span> dir \u003Cspan class=\"hljs-keyword\">of\u003C/span> structure.\u003Cspan class=\"hljs-property\">directories\u003C/span>) {\n            \u003Cspan class=\"hljs-keyword\">const\u003C/span> dirPath = path.\u003Cspan class=\"hljs-title function_\">join\u003C/span>(\u003Cspan class=\"hljs-variable language_\">this\u003C/span>.\u003Cspan class=\"hljs-property\">projectRoot\u003C/span>, dir);\n            \u003Cspan class=\"hljs-keyword\">await\u003C/span> fs.\u003Cspan class=\"hljs-title function_\">mkdir\u003C/span>(dirPath, { \u003Cspan class=\"hljs-attr\">recursive\u003C/span>: \u003Cspan class=\"hljs-literal\">true\u003C/span> });\n        }\n        \n        \u003Cspan class=\"hljs-comment\">// Create files\u003C/span>\n        \u003Cspan class=\"hljs-keyword\">for\u003C/span> (\u003Cspan class=\"hljs-keyword\">const\u003C/span> [fileName, content] \u003Cspan class=\"hljs-keyword\">of\u003C/span> \u003Cspan class=\"hljs-title class_\">Object\u003C/span>.\u003Cspan class=\"hljs-title function_\">entries\u003C/span>(structure.\u003Cspan class=\"hljs-property\">files\u003C/span>)) {\n            \u003Cspan class=\"hljs-keyword\">const\u003C/span> filePath = path.\u003Cspan class=\"hljs-title function_\">join\u003C/span>(\u003Cspan class=\"hljs-variable language_\">this\u003C/span>.\u003Cspan class=\"hljs-property\">projectRoot\u003C/span>, fileName);\n            \u003Cspan class=\"hljs-keyword\">await\u003C/span> fs.\u003Cspan class=\"hljs-title function_\">writeFile\u003C/span>(filePath, content);\n        }\n    }\n    \n    \u003Cspan class=\"hljs-title function_\">generateJekyllConfig\u003C/span>(\u003Cspan class=\"hljs-params\">config\u003C/span>) {\n        \u003Cspan class=\"hljs-keyword\">const\u003C/span> jekyllConfig = {\n            \u003Cspan class=\"hljs-attr\">title\u003C/span>: config.\u003Cspan class=\"hljs-property\">title\u003C/span> || \u003Cspan class=\"hljs-string\">&#x27;Documentation Site&#x27;\u003C/span>,\n            \u003Cspan class=\"hljs-attr\">description\u003C/span>: config.\u003Cspan class=\"hljs-property\">description\u003C/span> || \u003Cspan class=\"hljs-string\">&#x27;A comprehensive documentation site built with Jekyll&#x27;\u003C/span>,\n            \u003Cspan class=\"hljs-attr\">baseurl\u003C/span>: config.\u003Cspan class=\"hljs-property\">baseurl\u003C/span> || \u003Cspan class=\"hljs-string\">&#x27;&#x27;\u003C/span>,\n            \u003Cspan class=\"hljs-attr\">url\u003C/span>: config.\u003Cspan class=\"hljs-property\">url\u003C/span> || \u003Cspan class=\"hljs-string\">&#x27;https://example.com&#x27;\u003C/span>,\n            \n            \u003Cspan class=\"hljs-comment\">// Build settings\u003C/span>\n            \u003Cspan class=\"hljs-attr\">markdown\u003C/span>: \u003Cspan class=\"hljs-string\">&#x27;kramdown&#x27;\u003C/span>,\n            \u003Cspan class=\"hljs-attr\">highlighter\u003C/span>: \u003Cspan class=\"hljs-string\">&#x27;rouge&#x27;\u003C/span>,\n            \u003Cspan class=\"hljs-attr\">theme\u003C/span>: config.\u003Cspan class=\"hljs-property\">theme\u003C/span> || \u003Cspan class=\"hljs-string\">&#x27;minima&#x27;\u003C/span>,\n            \n            \u003Cspan class=\"hljs-comment\">// Collections\u003C/span>\n            \u003Cspan class=\"hljs-attr\">collections\u003C/span>: {\n                \u003Cspan class=\"hljs-attr\">docs\u003C/span>: {\n                    \u003Cspan class=\"hljs-attr\">output\u003C/span>: \u003Cspan class=\"hljs-literal\">true\u003C/span>,\n                    \u003Cspan class=\"hljs-attr\">permalink\u003C/span>: \u003Cspan class=\"hljs-string\">&#x27;/:collection/:name/&#x27;\u003C/span>\n                }\n            },\n            \n            \u003Cspan class=\"hljs-comment\">// Plugins\u003C/span>\n            \u003Cspan class=\"hljs-attr\">plugins\u003C/span>: [\n                \u003Cspan class=\"hljs-string\">&#x27;jekyll-feed&#x27;\u003C/span>,\n                \u003Cspan class=\"hljs-string\">&#x27;jekyll-sitemap&#x27;\u003C/span>,\n                \u003Cspan class=\"hljs-string\">&#x27;jekyll-seo-tag&#x27;\u003C/span>,\n                ...(config.\u003Cspan class=\"hljs-property\">plugins\u003C/span> || [])\n            ],\n            \n            \u003Cspan class=\"hljs-comment\">// Kramdown settings\u003C/span>\n            \u003Cspan class=\"hljs-attr\">kramdown\u003C/span>: {\n                \u003Cspan class=\"hljs-attr\">input\u003C/span>: \u003Cspan class=\"hljs-string\">&#x27;GFM&#x27;\u003C/span>,\n                \u003Cspan class=\"hljs-attr\">hard_wrap\u003C/span>: \u003Cspan class=\"hljs-literal\">false\u003C/span>,\n                \u003Cspan class=\"hljs-attr\">syntax_highlighter\u003C/span>: \u003Cspan class=\"hljs-string\">&#x27;rouge&#x27;\u003C/span>,\n                \u003Cspan class=\"hljs-attr\">syntax_highlighter_opts\u003C/span>: {\n                    \u003Cspan class=\"hljs-attr\">css_class\u003C/span>: \u003Cspan class=\"hljs-string\">&#x27;highlight&#x27;\u003C/span>,\n                    \u003Cspan class=\"hljs-attr\">span\u003C/span>: {\n                        \u003Cspan class=\"hljs-attr\">line_numbers\u003C/span>: \u003Cspan class=\"hljs-literal\">false\u003C/span>\n                    },\n                    \u003Cspan class=\"hljs-attr\">block\u003C/span>: {\n                        \u003Cspan class=\"hljs-attr\">line_numbers\u003C/span>: \u003Cspan class=\"hljs-literal\">true\u003C/span>\n                    }\n                }\n            },\n            \n            \u003Cspan class=\"hljs-comment\">// Exclude from processing\u003C/span>\n            \u003Cspan class=\"hljs-attr\">exclude\u003C/span>: [\n                \u003Cspan class=\"hljs-string\">&#x27;Gemfile&#x27;\u003C/span>,\n                \u003Cspan class=\"hljs-string\">&#x27;Gemfile.lock&#x27;\u003C/span>,\n                \u003Cspan class=\"hljs-string\">&#x27;node_modules&#x27;\u003C/span>,\n                \u003Cspan class=\"hljs-string\">&#x27;vendor&#x27;\u003C/span>,\n                \u003Cspan class=\"hljs-string\">&#x27;README.md&#x27;\u003C/span>\n            ]\n        };\n        \n        \u003Cspan class=\"hljs-keyword\">return\u003C/span> yaml.\u003Cspan class=\"hljs-title function_\">dump\u003C/span>(jekyllConfig);\n    }\n    \n    \u003Cspan class=\"hljs-title function_\">generateHugoConfig\u003C/span>(\u003Cspan class=\"hljs-params\">config\u003C/span>) {\n        \u003Cspan class=\"hljs-keyword\">const\u003C/span> hugoConfig = {\n            \u003Cspan class=\"hljs-attr\">title\u003C/span>: config.\u003Cspan class=\"hljs-property\">title\u003C/span> || \u003Cspan class=\"hljs-string\">&#x27;Documentation Site&#x27;\u003C/span>,\n            \u003Cspan class=\"hljs-attr\">description\u003C/span>: config.\u003Cspan class=\"hljs-property\">description\u003C/span> || \u003Cspan class=\"hljs-string\">&#x27;A comprehensive documentation site built with Hugo&#x27;\u003C/span>,\n            \u003Cspan class=\"hljs-attr\">baseURL\u003C/span>: config.\u003Cspan class=\"hljs-property\">baseurl\u003C/span> || \u003Cspan class=\"hljs-string\">&#x27;https://example.com&#x27;\u003C/span>,\n            \u003Cspan class=\"hljs-attr\">languageCode\u003C/span>: config.\u003Cspan class=\"hljs-property\">language\u003C/span> || \u003Cspan class=\"hljs-string\">&#x27;en-us&#x27;\u003C/span>,\n            \n            \u003Cspan class=\"hljs-comment\">// Theme\u003C/span>\n            \u003Cspan class=\"hljs-attr\">theme\u003C/span>: config.\u003Cspan class=\"hljs-property\">theme\u003C/span> || \u003Cspan class=\"hljs-string\">&#x27;docsy&#x27;\u003C/span>,\n            \n            \u003Cspan class=\"hljs-comment\">// Markup\u003C/span>\n            \u003Cspan class=\"hljs-attr\">markup\u003C/span>: {\n                \u003Cspan class=\"hljs-attr\">goldmark\u003C/span>: {\n                    \u003Cspan class=\"hljs-attr\">renderer\u003C/span>: {\n                        \u003Cspan class=\"hljs-attr\">unsafe\u003C/span>: \u003Cspan class=\"hljs-literal\">true\u003C/span>\n                    }\n                },\n                \u003Cspan class=\"hljs-attr\">highlight\u003C/span>: {\n                    \u003Cspan class=\"hljs-attr\">style\u003C/span>: \u003Cspan class=\"hljs-string\">&#x27;github&#x27;\u003C/span>,\n                    \u003Cspan class=\"hljs-attr\">lineNos\u003C/span>: \u003Cspan class=\"hljs-literal\">true\u003C/span>,\n                    \u003Cspan class=\"hljs-attr\">codeFences\u003C/span>: \u003Cspan class=\"hljs-literal\">true\u003C/span>\n                }\n            },\n            \n            \u003Cspan class=\"hljs-comment\">// Parameters\u003C/span>\n            \u003Cspan class=\"hljs-attr\">params\u003C/span>: {\n                \u003Cspan class=\"hljs-attr\">version\u003C/span>: config.\u003Cspan class=\"hljs-property\">version\u003C/span> || \u003Cspan class=\"hljs-string\">&#x27;1.0.0&#x27;\u003C/span>,\n                \u003Cspan class=\"hljs-attr\">github_repo\u003C/span>: config.\u003Cspan class=\"hljs-property\">github_repo\u003C/span> || \u003Cspan class=\"hljs-string\">&#x27;&#x27;\u003C/span>,\n                \u003Cspan class=\"hljs-attr\">edit_page\u003C/span>: \u003Cspan class=\"hljs-literal\">true\u003C/span>,\n                \u003Cspan class=\"hljs-attr\">search\u003C/span>: {\n                    \u003Cspan class=\"hljs-attr\">enabled\u003C/span>: \u003Cspan class=\"hljs-literal\">true\u003C/span>\n                }\n            },\n            \n            \u003Cspan class=\"hljs-comment\">// Menu\u003C/span>\n            \u003Cspan class=\"hljs-attr\">menu\u003C/span>: {\n                \u003Cspan class=\"hljs-attr\">main\u003C/span>: [\n                    {\n                        \u003Cspan class=\"hljs-attr\">name\u003C/span>: \u003Cspan class=\"hljs-string\">&#x27;Documentation&#x27;\u003C/span>,\n                        \u003Cspan class=\"hljs-attr\">url\u003C/span>: \u003Cspan class=\"hljs-string\">&#x27;/docs/&#x27;\u003C/span>,\n                        \u003Cspan class=\"hljs-attr\">weight\u003C/span>: \u003Cspan class=\"hljs-number\">10\u003C/span>\n                    },\n                    {\n                        \u003Cspan class=\"hljs-attr\">name\u003C/span>: \u003Cspan class=\"hljs-string\">&#x27;Blog&#x27;\u003C/span>,\n                        \u003Cspan class=\"hljs-attr\">url\u003C/span>: \u003Cspan class=\"hljs-string\">&#x27;/blog/&#x27;\u003C/span>,\n                        \u003Cspan class=\"hljs-attr\">weight\u003C/span>: \u003Cspan class=\"hljs-number\">20\u003C/span>\n                    }\n                ]\n            },\n            \n            \u003Cspan class=\"hljs-comment\">// Output formats\u003C/span>\n            \u003Cspan class=\"hljs-attr\">outputs\u003C/span>: {\n                \u003Cspan class=\"hljs-attr\">home\u003C/span>: [\u003Cspan class=\"hljs-string\">&#x27;HTML&#x27;\u003C/span>, \u003Cspan class=\"hljs-string\">&#x27;RSS&#x27;\u003C/span>, \u003Cspan class=\"hljs-string\">&#x27;JSON&#x27;\u003C/span>],\n                \u003Cspan class=\"hljs-attr\">page\u003C/span>: [\u003Cspan class=\"hljs-string\">&#x27;HTML&#x27;\u003C/span>],\n                \u003Cspan class=\"hljs-attr\">section\u003C/span>: [\u003Cspan class=\"hljs-string\">&#x27;HTML&#x27;\u003C/span>, \u003Cspan class=\"hljs-string\">&#x27;RSS&#x27;\u003C/span>]\n            }\n        };\n        \n        \u003Cspan class=\"hljs-keyword\">return\u003C/span> yaml.\u003Cspan class=\"hljs-title function_\">dump\u003C/span>(hugoConfig);\n    }\n    \n    \u003Cspan class=\"hljs-title function_\">generateMkDocsConfig\u003C/span>(\u003Cspan class=\"hljs-params\">config\u003C/span>) {\n        \u003Cspan class=\"hljs-keyword\">const\u003C/span> mkdocsConfig = {\n            \u003Cspan class=\"hljs-attr\">site_name\u003C/span>: config.\u003Cspan class=\"hljs-property\">title\u003C/span> || \u003Cspan class=\"hljs-string\">&#x27;Documentation Site&#x27;\u003C/span>,\n            \u003Cspan class=\"hljs-attr\">site_description\u003C/span>: config.\u003Cspan class=\"hljs-property\">description\u003C/span> || \u003Cspan class=\"hljs-string\">&#x27;A comprehensive documentation site built with MkDocs&#x27;\u003C/span>,\n            \u003Cspan class=\"hljs-attr\">site_url\u003C/span>: config.\u003Cspan class=\"hljs-property\">url\u003C/span> || \u003Cspan class=\"hljs-string\">&#x27;https://example.com&#x27;\u003C/span>,\n            \u003Cspan class=\"hljs-attr\">site_author\u003C/span>: config.\u003Cspan class=\"hljs-property\">author\u003C/span> || \u003Cspan class=\"hljs-string\">&#x27;Documentation Team&#x27;\u003C/span>,\n            \n            \u003Cspan class=\"hljs-comment\">// Repository\u003C/span>\n            \u003Cspan class=\"hljs-attr\">repo_url\u003C/span>: config.\u003Cspan class=\"hljs-property\">github_repo\u003C/span> || \u003Cspan class=\"hljs-string\">&#x27;&#x27;\u003C/span>,\n            \u003Cspan class=\"hljs-attr\">repo_name\u003C/span>: config.\u003Cspan class=\"hljs-property\">repo_name\u003C/span> || \u003Cspan class=\"hljs-string\">&#x27;GitHub&#x27;\u003C/span>,\n            \u003Cspan class=\"hljs-attr\">edit_uri\u003C/span>: \u003Cspan class=\"hljs-string\">&#x27;edit/main/docs/&#x27;\u003C/span>,\n            \n            \u003Cspan class=\"hljs-comment\">// Theme\u003C/span>\n            \u003Cspan class=\"hljs-attr\">theme\u003C/span>: {\n                \u003Cspan class=\"hljs-attr\">name\u003C/span>: config.\u003Cspan class=\"hljs-property\">theme\u003C/span> || \u003Cspan class=\"hljs-string\">&#x27;material&#x27;\u003C/span>,\n                \u003Cspan class=\"hljs-attr\">features\u003C/span>: [\n                    \u003Cspan class=\"hljs-string\">&#x27;navigation.tabs&#x27;\u003C/span>,\n                    \u003Cspan class=\"hljs-string\">&#x27;navigation.sections&#x27;\u003C/span>,\n                    \u003Cspan class=\"hljs-string\">&#x27;navigation.expand&#x27;\u003C/span>,\n                    \u003Cspan class=\"hljs-string\">&#x27;navigation.top&#x27;\u003C/span>,\n                    \u003Cspan class=\"hljs-string\">&#x27;search.highlight&#x27;\u003C/span>,\n                    \u003Cspan class=\"hljs-string\">&#x27;search.share&#x27;\u003C/span>,\n                    \u003Cspan class=\"hljs-string\">&#x27;content.code.copy&#x27;\u003C/span>\n                ],\n                \u003Cspan class=\"hljs-attr\">palette\u003C/span>: [\n                    {\n                        \u003Cspan class=\"hljs-attr\">scheme\u003C/span>: \u003Cspan class=\"hljs-string\">&#x27;default&#x27;\u003C/span>,\n                        \u003Cspan class=\"hljs-attr\">primary\u003C/span>: \u003Cspan class=\"hljs-string\">&#x27;blue&#x27;\u003C/span>,\n                        \u003Cspan class=\"hljs-attr\">accent\u003C/span>: \u003Cspan class=\"hljs-string\">&#x27;blue&#x27;\u003C/span>,\n                        \u003Cspan class=\"hljs-attr\">toggle\u003C/span>: {\n                            \u003Cspan class=\"hljs-attr\">icon\u003C/span>: \u003Cspan class=\"hljs-string\">&#x27;material/brightness-7&#x27;\u003C/span>,\n                            \u003Cspan class=\"hljs-attr\">name\u003C/span>: \u003Cspan class=\"hljs-string\">&#x27;Switch to dark mode&#x27;\u003C/span>\n                        }\n                    },\n                    {\n                        \u003Cspan class=\"hljs-attr\">scheme\u003C/span>: \u003Cspan class=\"hljs-string\">&#x27;slate&#x27;\u003C/span>,\n                        \u003Cspan class=\"hljs-attr\">primary\u003C/span>: \u003Cspan class=\"hljs-string\">&#x27;blue&#x27;\u003C/span>,\n                        \u003Cspan class=\"hljs-attr\">accent\u003C/span>: \u003Cspan class=\"hljs-string\">&#x27;blue&#x27;\u003C/span>,\n                        \u003Cspan class=\"hljs-attr\">toggle\u003C/span>: {\n                            \u003Cspan class=\"hljs-attr\">icon\u003C/span>: \u003Cspan class=\"hljs-string\">&#x27;material/brightness-4&#x27;\u003C/span>,\n                            \u003Cspan class=\"hljs-attr\">name\u003C/span>: \u003Cspan class=\"hljs-string\">&#x27;Switch to light mode&#x27;\u003C/span>\n                        }\n                    }\n                ]\n            },\n            \n            \u003Cspan class=\"hljs-comment\">// Plugins\u003C/span>\n            \u003Cspan class=\"hljs-attr\">plugins\u003C/span>: [\n                \u003Cspan class=\"hljs-string\">&#x27;search&#x27;\u003C/span>,\n                \u003Cspan class=\"hljs-string\">&#x27;minify&#x27;\u003C/span>,\n                {\n                    \u003Cspan class=\"hljs-string\">&#x27;git-revision-date-localized&#x27;\u003C/span>: {\n                        \u003Cspan class=\"hljs-attr\">type\u003C/span>: \u003Cspan class=\"hljs-string\">&#x27;date&#x27;\u003C/span>\n                    }\n                }\n            ],\n            \n            \u003Cspan class=\"hljs-comment\">// Markdown extensions\u003C/span>\n            \u003Cspan class=\"hljs-attr\">markdown_extensions\u003C/span>: [\n                \u003Cspan class=\"hljs-string\">&#x27;abbr&#x27;\u003C/span>,\n                \u003Cspan class=\"hljs-string\">&#x27;admonition&#x27;\u003C/span>,\n                \u003Cspan class=\"hljs-string\">&#x27;attr_list&#x27;\u003C/span>,\n                \u003Cspan class=\"hljs-string\">&#x27;codehilite&#x27;\u003C/span>,\n                \u003Cspan class=\"hljs-string\">&#x27;def_list&#x27;\u003C/span>,\n                \u003Cspan class=\"hljs-string\">&#x27;footnotes&#x27;\u003C/span>,\n                \u003Cspan class=\"hljs-string\">&#x27;meta&#x27;\u003C/span>,\n                \u003Cspan class=\"hljs-string\">&#x27;md_in_html&#x27;\u003C/span>,\n                \u003Cspan class=\"hljs-string\">&#x27;tables&#x27;\u003C/span>,\n                \u003Cspan class=\"hljs-string\">&#x27;toc&#x27;\u003C/span>,\n                \u003Cspan class=\"hljs-string\">&#x27;pymdownx.arithmatex&#x27;\u003C/span>,\n                \u003Cspan class=\"hljs-string\">&#x27;pymdownx.betterem&#x27;\u003C/span>,\n                \u003Cspan class=\"hljs-string\">&#x27;pymdownx.caret&#x27;\u003C/span>,\n                \u003Cspan class=\"hljs-string\">&#x27;pymdownx.details&#x27;\u003C/span>,\n                \u003Cspan class=\"hljs-string\">&#x27;pymdownx.highlight&#x27;\u003C/span>,\n                \u003Cspan class=\"hljs-string\">&#x27;pymdownx.inlinehilite&#x27;\u003C/span>,\n                \u003Cspan class=\"hljs-string\">&#x27;pymdownx.keys&#x27;\u003C/span>,\n                \u003Cspan class=\"hljs-string\">&#x27;pymdownx.mark&#x27;\u003C/span>,\n                \u003Cspan class=\"hljs-string\">&#x27;pymdownx.smartsymbols&#x27;\u003C/span>,\n                \u003Cspan class=\"hljs-string\">&#x27;pymdownx.superfences&#x27;\u003C/span>,\n                \u003Cspan class=\"hljs-string\">&#x27;pymdownx.tabbed&#x27;\u003C/span>,\n                \u003Cspan class=\"hljs-string\">&#x27;pymdownx.tasklist&#x27;\u003C/span>,\n                \u003Cspan class=\"hljs-string\">&#x27;pymdownx.tilde&#x27;\u003C/span>\n            ],\n            \n            \u003Cspan class=\"hljs-comment\">// Navigation\u003C/span>\n            \u003Cspan class=\"hljs-attr\">nav\u003C/span>: [\n                {\n                    \u003Cspan class=\"hljs-string\">&#x27;Home&#x27;\u003C/span>: \u003Cspan class=\"hljs-string\">&#x27;index.md&#x27;\u003C/span>\n                },\n                {\n                    \u003Cspan class=\"hljs-string\">&#x27;User Guide&#x27;\u003C/span>: [\n                        \u003Cspan class=\"hljs-string\">&#x27;user-guide/getting-started.md&#x27;\u003C/span>,\n                        \u003Cspan class=\"hljs-string\">&#x27;user-guide/configuration.md&#x27;\u003C/span>\n                    ]\n                },\n                {\n                    \u003Cspan class=\"hljs-string\">&#x27;API Reference&#x27;\u003C/span>: [\n                        \u003Cspan class=\"hljs-string\">&#x27;api/overview.md&#x27;\u003C/span>\n                    ]\n                }\n            ]\n        };\n        \n        \u003Cspan class=\"hljs-keyword\">return\u003C/span> yaml.\u003Cspan class=\"hljs-title function_\">dump\u003C/span>(mkdocsConfig);\n    }\n    \n    \u003Cspan class=\"hljs-title function_\">generateDocusaurusConfig\u003C/span>(\u003Cspan class=\"hljs-params\">config\u003C/span>) {\n        \u003Cspan class=\"hljs-keyword\">return\u003C/span> \u003Cspan class=\"hljs-string\">`// @ts-check\n// Note: type annotations allow type checking and IDEs autocompletion\n\nconst lightCodeTheme = require(&#x27;prism-react-renderer/themes/github&#x27;);\nconst darkCodeTheme = require(&#x27;prism-react-renderer/themes/dracula&#x27;);\n\n/** @type {import(&#x27;@docusaurus/types&#x27;).Config} */\nconst config = {\n  title: &#x27;\u003Cspan class=\"hljs-subst\">${config.title || \u003Cspan class=\"hljs-string\">&#x27;Documentation Site&#x27;\u003C/span>}\u003C/span>&#x27;,\n  tagline: &#x27;\u003Cspan class=\"hljs-subst\">${config.description || \u003Cspan class=\"hljs-string\">&#x27;Comprehensive documentation site&#x27;\u003C/span>}\u003C/span>&#x27;,\n  favicon: &#x27;img/favicon.ico&#x27;,\n\n  // Set the production url of your site here\n  url: &#x27;\u003Cspan class=\"hljs-subst\">${config.url || \u003Cspan class=\"hljs-string\">&#x27;https://example.com&#x27;\u003C/span>}\u003C/span>&#x27;,\n  // Set the /&lt;baseUrl&gt;/ pathname under which your site is served\n  baseUrl: &#x27;\u003Cspan class=\"hljs-subst\">${config.baseurl || \u003Cspan class=\"hljs-string\">&#x27;/&#x27;\u003C/span>}\u003C/span>&#x27;,\n\n  // GitHub pages deployment config\n  organizationName: &#x27;\u003Cspan class=\"hljs-subst\">${config.github_org || \u003Cspan class=\"hljs-string\">&#x27;your-org&#x27;\u003C/span>}\u003C/span>&#x27;,\n  projectName: &#x27;\u003Cspan class=\"hljs-subst\">${config.project_name || \u003Cspan class=\"hljs-string\">&#x27;your-project&#x27;\u003C/span>}\u003C/span>&#x27;,\n\n  onBrokenLinks: &#x27;throw&#x27;,\n  onBrokenMarkdownLinks: &#x27;warn&#x27;,\n\n  // Even if you don&#x27;t use internalization, you can use this field to set useful\n  // metadata like html lang. For example, if your site is Chinese, you may want\n  // to replace &quot;en&quot; with &quot;zh-Hans&quot;.\n  i18n: {\n    defaultLocale: &#x27;en&#x27;,\n    locales: [&#x27;en&#x27;],\n  },\n\n  presets: [\n    [\n      &#x27;classic&#x27;,\n      /** @type {import(&#x27;@docusaurus/preset-classic&#x27;).Options} */\n      ({\n        docs: {\n          sidebarPath: require.resolve(&#x27;./sidebars.js&#x27;),\n          editUrl: &#x27;\u003Cspan class=\"hljs-subst\">${config.edit_url || \u003Cspan class=\"hljs-string\">&#x27;https://github.com/your-org/your-project/tree/main/&#x27;\u003C/span>}\u003C/span>&#x27;,\n          showLastUpdateAuthor: true,\n          showLastUpdateTime: true,\n        },\n        blog: {\n          showReadingTime: true,\n          editUrl: &#x27;\u003Cspan class=\"hljs-subst\">${config.edit_url || \u003Cspan class=\"hljs-string\">&#x27;https://github.com/your-org/your-project/tree/main/&#x27;\u003C/span>}\u003C/span>&#x27;,\n        },\n        theme: {\n          customCss: require.resolve(&#x27;./src/css/custom.css&#x27;),\n        },\n      }),\n    ],\n  ],\n\n  themeConfig:\n    /** @type {import(&#x27;@docusaurus/preset-classic&#x27;).ThemeConfig} */\n    ({\n      // Replace with your project&#x27;s social card\n      image: &#x27;img/docusaurus-social-card.jpg&#x27;,\n      navbar: {\n        title: &#x27;\u003Cspan class=\"hljs-subst\">${config.title || \u003Cspan class=\"hljs-string\">&#x27;Documentation&#x27;\u003C/span>}\u003C/span>&#x27;,\n        logo: {\n          alt: &#x27;Logo&#x27;,\n          src: &#x27;img/logo.svg&#x27;,\n        },\n        items: [\n          {\n            type: &#x27;docSidebar&#x27;,\n            sidebarId: &#x27;tutorialSidebar&#x27;,\n            position: &#x27;left&#x27;,\n            label: &#x27;Tutorial&#x27;,\n          },\n          {to: &#x27;/blog&#x27;, label: &#x27;Blog&#x27;, position: &#x27;left&#x27;},\n          {\n            href: &#x27;\u003Cspan class=\"hljs-subst\">${config.github_repo || \u003Cspan class=\"hljs-string\">&#x27;https://github.com/your-org/your-project&#x27;\u003C/span>}\u003C/span>&#x27;,\n            label: &#x27;GitHub&#x27;,\n            position: &#x27;right&#x27;,\n          },\n        ],\n      },\n      footer: {\n        style: &#x27;dark&#x27;,\n        links: [\n          {\n            title: &#x27;Docs&#x27;,\n            items: [\n              {\n                label: &#x27;Tutorial&#x27;,\n                to: &#x27;/docs/intro&#x27;,\n              },\n            ],\n          },\n          {\n            title: &#x27;Community&#x27;,\n            items: [\n              {\n                label: &#x27;Stack Overflow&#x27;,\n                href: &#x27;https://stackoverflow.com/questions/tagged/docusaurus&#x27;,\n              },\n              {\n                label: &#x27;Discord&#x27;,\n                href: &#x27;https://discordapp.com/invite/docusaurus&#x27;,\n              },\n              {\n                label: &#x27;Twitter&#x27;,\n                href: &#x27;https://twitter.com/docusaurus&#x27;,\n              },\n            ],\n          },\n          {\n            title: &#x27;More&#x27;,\n            items: [\n              {\n                label: &#x27;Blog&#x27;,\n                to: &#x27;/blog&#x27;,\n              },\n              {\n                label: &#x27;GitHub&#x27;,\n                href: &#x27;\u003Cspan class=\"hljs-subst\">${config.github_repo || \u003Cspan class=\"hljs-string\">&#x27;https://github.com/your-org/your-project&#x27;\u003C/span>}\u003C/span>&#x27;,\n              },\n            ],\n          },\n        ],\n        copyright: \\`Copyright © \\${new Date().getFullYear()} \u003Cspan class=\"hljs-subst\">${config.title || \u003Cspan class=\"hljs-string\">&#x27;Documentation Site&#x27;\u003C/span>}\u003C/span>. Built with Docusaurus.\\`,\n      },\n      prism: {\n        theme: lightCodeTheme,\n        darkTheme: darkCodeTheme,\n      },\n    }),\n};\n\nmodule.exports = config;\n`\u003C/span>;\n    }\n    \n    \u003Cspan class=\"hljs-title function_\">generateIndexPage\u003C/span>(\u003Cspan class=\"hljs-params\">config\u003C/span>) {\n        \u003Cspan class=\"hljs-keyword\">return\u003C/span> \u003Cspan class=\"hljs-string\">`---\ntitle: \u003Cspan class=\"hljs-subst\">${config.title || \u003Cspan class=\"hljs-string\">&#x27;Welcome to Our Documentation&#x27;\u003C/span>}\u003C/span>\ndescription: \u003Cspan class=\"hljs-subst\">${config.description || \u003Cspan class=\"hljs-string\">&#x27;Comprehensive documentation and guides&#x27;\u003C/span>}\u003C/span>\n---\n\n# \u003Cspan class=\"hljs-subst\">${config.title || \u003Cspan class=\"hljs-string\">&#x27;Welcome to Our Documentation&#x27;\u003C/span>}\u003C/span>\n\n\u003Cspan class=\"hljs-subst\">${config.description || \u003Cspan class=\"hljs-string\">&#x27;This is a comprehensive documentation site built with modern static site generation tools.&#x27;\u003C/span>}\u003C/span>\n\n## Getting Started\n\nThis documentation covers:\n\n- **User Guides** - Step-by-step instructions for common tasks\n- **API Reference** - Complete API documentation with examples  \n- **Tutorials** - In-depth tutorials and learning materials\n- **Examples** - Practical examples and use cases\n\n## Quick Navigation\n\n### For New Users\n- [Getting Started Guide](getting-started.md)\n- [Installation Instructions](installation.md)\n- [Basic Configuration](configuration.md)\n\n### For Developers\n- [API Reference](api/reference.md)\n- [SDK Documentation](sdk/overview.md)\n- [Code Examples](examples/index.md)\n\n### For Contributors\n- [Contributing Guidelines](contributing.md)\n- [Development Setup](development.md)\n- [Style Guide](style-guide.md)\n\n## Need Help?\n\n- Check our [FAQ](faq.md) for common questions\n- Visit our [Troubleshooting Guide](troubleshooting.md)\n- Join our [Community Forum](https://community.example.com)\n- Report issues on [GitHub](https://github.com/example/project/issues)\n\n---\n\n*This documentation is continuously updated. Last updated: \u003Cspan class=\"hljs-subst\">${\u003Cspan class=\"hljs-keyword\">new\u003C/span> \u003Cspan class=\"hljs-built_in\">Date\u003C/span>().toISOString().split(\u003Cspan class=\"hljs-string\">&#x27;T&#x27;\u003C/span>)[\u003Cspan class=\"hljs-number\">0\u003C/span>]}\u003C/span>*\n`\u003C/span>;\n    }\n    \n    \u003Cspan class=\"hljs-keyword\">async\u003C/span> \u003Cspan class=\"hljs-title function_\">createSampleContent\u003C/span>(\u003Cspan class=\"hljs-params\">generatorType\u003C/span>) {\n        \u003Cspan class=\"hljs-keyword\">const\u003C/span> sampleFiles = {\n            \u003Cspan class=\"hljs-attr\">jekyll\u003C/span>: {\n                \u003Cspan class=\"hljs-string\">&#x27;_posts/2025-01-01-welcome-to-jekyll.md&#x27;\u003C/span>: \u003Cspan class=\"hljs-variable language_\">this\u003C/span>.\u003Cspan class=\"hljs-title function_\">generateSamplePost\u003C/span>(\u003Cspan class=\"hljs-string\">&#x27;Jekyll&#x27;\u003C/span>),\n                \u003Cspan class=\"hljs-string\">&#x27;_pages/about.md&#x27;\u003C/span>: \u003Cspan class=\"hljs-variable language_\">this\u003C/span>.\u003Cspan class=\"hljs-title function_\">generateAboutPage\u003C/span>(),\n                \u003Cspan class=\"hljs-string\">&#x27;_pages/contact.md&#x27;\u003C/span>: \u003Cspan class=\"hljs-variable language_\">this\u003C/span>.\u003Cspan class=\"hljs-title function_\">generateContactPage\u003C/span>()\n            },\n            \n            \u003Cspan class=\"hljs-attr\">hugo\u003C/span>: {\n                \u003Cspan class=\"hljs-string\">&#x27;content/posts/welcome-to-hugo.md&#x27;\u003C/span>: \u003Cspan class=\"hljs-variable language_\">this\u003C/span>.\u003Cspan class=\"hljs-title function_\">generateSamplePost\u003C/span>(\u003Cspan class=\"hljs-string\">&#x27;Hugo&#x27;\u003C/span>),\n                \u003Cspan class=\"hljs-string\">&#x27;content/docs/getting-started.md&#x27;\u003C/span>: \u003Cspan class=\"hljs-variable language_\">this\u003C/span>.\u003Cspan class=\"hljs-title function_\">generateGettingStartedGuide\u003C/span>(),\n                \u003Cspan class=\"hljs-string\">&#x27;content/about.md&#x27;\u003C/span>: \u003Cspan class=\"hljs-variable language_\">this\u003C/span>.\u003Cspan class=\"hljs-title function_\">generateAboutPage\u003C/span>()\n            },\n            \n            \u003Cspan class=\"hljs-attr\">mkdocs\u003C/span>: {\n                \u003Cspan class=\"hljs-string\">&#x27;docs/getting-started.md&#x27;\u003C/span>: \u003Cspan class=\"hljs-variable language_\">this\u003C/span>.\u003Cspan class=\"hljs-title function_\">generateGettingStartedGuide\u003C/span>(),\n                \u003Cspan class=\"hljs-string\">&#x27;docs/user-guide/configuration.md&#x27;\u003C/span>: \u003Cspan class=\"hljs-variable language_\">this\u003C/span>.\u003Cspan class=\"hljs-title function_\">generateConfigurationGuide\u003C/span>(),\n                \u003Cspan class=\"hljs-string\">&#x27;docs/api/overview.md&#x27;\u003C/span>: \u003Cspan class=\"hljs-variable language_\">this\u003C/span>.\u003Cspan class=\"hljs-title function_\">generateApiOverview\u003C/span>()\n            },\n            \n            \u003Cspan class=\"hljs-attr\">docusaurus\u003C/span>: {\n                \u003Cspan class=\"hljs-string\">&#x27;docs/tutorial-basics/create-a-page.md&#x27;\u003C/span>: \u003Cspan class=\"hljs-variable language_\">this\u003C/span>.\u003Cspan class=\"hljs-title function_\">generateDocusaurusGuide\u003C/span>(),\n                \u003Cspan class=\"hljs-string\">&#x27;blog/2025-01-01-welcome.md&#x27;\u003C/span>: \u003Cspan class=\"hljs-variable language_\">this\u003C/span>.\u003Cspan class=\"hljs-title function_\">generateSamplePost\u003C/span>(\u003Cspan class=\"hljs-string\">&#x27;Docusaurus&#x27;\u003C/span>)\n            }\n        };\n        \n        \u003Cspan class=\"hljs-keyword\">const\u003C/span> files = sampleFiles[generatorType] || {};\n        \n        \u003Cspan class=\"hljs-keyword\">for\u003C/span> (\u003Cspan class=\"hljs-keyword\">const\u003C/span> [filePath, content] \u003Cspan class=\"hljs-keyword\">of\u003C/span> \u003Cspan class=\"hljs-title class_\">Object\u003C/span>.\u003Cspan class=\"hljs-title function_\">entries\u003C/span>(files)) {\n            \u003Cspan class=\"hljs-keyword\">const\u003C/span> fullPath = path.\u003Cspan class=\"hljs-title function_\">join\u003C/span>(\u003Cspan class=\"hljs-variable language_\">this\u003C/span>.\u003Cspan class=\"hljs-property\">projectRoot\u003C/span>, filePath);\n            \u003Cspan class=\"hljs-keyword\">await\u003C/span> fs.\u003Cspan class=\"hljs-title function_\">mkdir\u003C/span>(path.\u003Cspan class=\"hljs-title function_\">dirname\u003C/span>(fullPath), { \u003Cspan class=\"hljs-attr\">recursive\u003C/span>: \u003Cspan class=\"hljs-literal\">true\u003C/span> });\n            \u003Cspan class=\"hljs-keyword\">await\u003C/span> fs.\u003Cspan class=\"hljs-title function_\">writeFile\u003C/span>(fullPath, content);\n        }\n    }\n    \n    \u003Cspan class=\"hljs-title function_\">generateSamplePost\u003C/span>(\u003Cspan class=\"hljs-params\">generator\u003C/span>) {\n        \u003Cspan class=\"hljs-keyword\">return\u003C/span> \u003Cspan class=\"hljs-string\">`---\ntitle: &quot;Welcome to \u003Cspan class=\"hljs-subst\">${generator}\u003C/span>&quot;\ndate: \u003Cspan class=\"hljs-subst\">${\u003Cspan class=\"hljs-keyword\">new\u003C/span> \u003Cspan class=\"hljs-built_in\">Date\u003C/span>().toISOString().split(\u003Cspan class=\"hljs-string\">&#x27;T&#x27;\u003C/span>)[\u003Cspan class=\"hljs-number\">0\u003C/span>]}\u003C/span>\nauthor: Documentation Team\ncategories: \n  - Getting Started\ntags:\n  - welcome\n  - \u003Cspan class=\"hljs-subst\">${generator.toLowerCase()}\u003C/span>\n---\n\n# Welcome to Your New \u003Cspan class=\"hljs-subst\">${generator}\u003C/span> Documentation Site\n\nThis is your first blog post! \u003Cspan class=\"hljs-subst\">${generator}\u003C/span> makes it easy to create beautiful documentation sites from Markdown files.\n\n## What&#x27;s Included\n\nThis site includes:\n\n- **Responsive design** that looks great on all devices\n- **Syntax highlighting** for code blocks\n- **Search functionality** to help users find content\n- **SEO optimization** for better search engine visibility\n\n## Getting Started\n\nTo customize your site:\n\n1. Edit the configuration file\n2. Add your content in Markdown format\n3. Customize the theme and styling\n4. Deploy to your hosting platform\n\n## Code Example\n\nHere&#x27;s a sample code block with syntax highlighting:\n\n\\`\\`\\`javascript\nfunction welcome(name) {\n    console.log(\\`Welcome to \\${name}!\\`);\n    return \\`Hello, \\${name}! Ready to build amazing documentation?\\`;\n}\n\nwelcome(&#x27;\u003Cspan class=\"hljs-subst\">${generator}\u003C/span>&#x27;);\n\\`\\`\\`\n\n## Next Steps\n\n- [Read the documentation](../docs/getting-started.md)\n- [Customize your theme](../docs/theming.md)\n- [Deploy your site](../docs/deployment.md)\n\nHappy documenting! 🚀\n`\u003C/span>;\n    }\n    \n    \u003Cspan class=\"hljs-title function_\">generateGettingStartedGuide\u003C/span>(\u003Cspan class=\"hljs-params\">\u003C/span>) {\n        \u003Cspan class=\"hljs-keyword\">return\u003C/span> \u003Cspan class=\"hljs-string\">`---\ntitle: Getting Started\ndescription: Learn how to get started with this documentation site\n---\n\n# Getting Started\n\nWelcome to our documentation! This guide will help you get up and running quickly.\n\n## Installation\n\n### Prerequisites\n\nBefore you begin, ensure you have:\n\n- Node.js (version 14 or higher)\n- Git\n- A text editor or IDE\n\n### Quick Start\n\n1. **Clone the repository**\n   \\`\\`\\`bash\n   git clone https://github.com/example/project.git\n   cd project\n   \\`\\`\\`\n\n2. **Install dependencies**\n   \\`\\`\\`bash\n   npm install\n   \\`\\`\\`\n\n3. **Start the development server**\n   \\`\\`\\`bash\n   npm run serve\n   \\`\\`\\`\n\n4. **Open your browser**\n   Navigate to \\`http://localhost:3000\\`\n\n## Configuration\n\nThe main configuration file controls:\n\n- Site title and description\n- Navigation structure\n- Theme settings\n- Plugin configuration\n\n### Basic Configuration\n\n\\`\\`\\`yaml\ntitle: My Documentation Site\ndescription: Comprehensive documentation for our project\nauthor: Your Name\nemail: your.email@example.com\n\n# Navigation\nnav:\n  - Home: index.md\n  - User Guide: user-guide/\n  - API Reference: api/\n\\`\\`\\`\n\n## Writing Content\n\n### Markdown Basics\n\nThis site uses standard Markdown with some extensions:\n\n- **Tables** for structured data\n- **Code blocks** with syntax highlighting\n- **Admonitions** for notes and warnings\n- **Cross-references** between pages\n\n### Example Content\n\n\\`\\`\\`markdown\n# Page Title\n\nThis is a paragraph with **bold** and *italic* text.\n\n## Code Example\n\n\\`\\`\\`python\ndef hello_world():\n    print(&quot;Hello, World!&quot;)\n\\`\\`\\`\n\n## Table Example\n\n| Feature | Status |\n|---------|--------|\n| Search  | ✅     |\n| Mobile  | ✅     |\n| Offline | ⏳     |\n\\`\\`\\`\n\n## Next Steps\n\n- [Learn about advanced features](advanced-features.md)\n- [Customize your site](customization.md)\n- [Deploy to production](deployment.md)\n`\u003C/span>;\n    }\n    \n    \u003Cspan class=\"hljs-keyword\">async\u003C/span> \u003Cspan class=\"hljs-title function_\">build\u003C/span>(\u003Cspan class=\"hljs-params\">generatorType, options = {}\u003C/span>) {\n        \u003Cspan class=\"hljs-variable language_\">console\u003C/span>.\u003Cspan class=\"hljs-title function_\">log\u003C/span>(\u003Cspan class=\"hljs-string\">`Building site with \u003Cspan class=\"hljs-subst\">${generatorType}\u003C/span>...`\u003C/span>);\n        \n        \u003Cspan class=\"hljs-keyword\">const\u003C/span> generator = \u003Cspan class=\"hljs-variable language_\">this\u003C/span>.\u003Cspan class=\"hljs-property\">generators\u003C/span>[generatorType];\n        \u003Cspan class=\"hljs-keyword\">if\u003C/span> (!generator) {\n            \u003Cspan class=\"hljs-keyword\">throw\u003C/span> \u003Cspan class=\"hljs-keyword\">new\u003C/span> \u003Cspan class=\"hljs-title class_\">Error\u003C/span>(\u003Cspan class=\"hljs-string\">`Unsupported generator: \u003Cspan class=\"hljs-subst\">${generatorType}\u003C/span>`\u003C/span>);\n        }\n        \n        \u003Cspan class=\"hljs-keyword\">const\u003C/span> buildResult = \u003Cspan class=\"hljs-keyword\">await\u003C/span> generator.\u003Cspan class=\"hljs-title function_\">build\u003C/span>(options);\n        \n        \u003Cspan class=\"hljs-keyword\">if\u003C/span> (options.\u003Cspan class=\"hljs-property\">optimize\u003C/span>) {\n            \u003Cspan class=\"hljs-keyword\">await\u003C/span> \u003Cspan class=\"hljs-variable language_\">this\u003C/span>.\u003Cspan class=\"hljs-title function_\">optimizeBuild\u003C/span>(buildResult);\n        }\n        \n        \u003Cspan class=\"hljs-keyword\">return\u003C/span> buildResult;\n    }\n    \n    \u003Cspan class=\"hljs-keyword\">async\u003C/span> \u003Cspan class=\"hljs-title function_\">optimizeBuild\u003C/span>(\u003Cspan class=\"hljs-params\">buildResult\u003C/span>) {\n        \u003Cspan class=\"hljs-comment\">// Implement build optimization\u003C/span>\n        \u003Cspan class=\"hljs-variable language_\">console\u003C/span>.\u003Cspan class=\"hljs-title function_\">log\u003C/span>(\u003Cspan class=\"hljs-string\">&#x27;Optimizing build output...&#x27;\u003C/span>);\n        \n        \u003Cspan class=\"hljs-comment\">// Minify CSS and JS\u003C/span>\n        \u003Cspan class=\"hljs-comment\">// Optimize images\u003C/span>\n        \u003Cspan class=\"hljs-comment\">// Generate service worker\u003C/span>\n        \u003Cspan class=\"hljs-comment\">// Create sitemap\u003C/span>\n        \u003Cspan class=\"hljs-comment\">// Validate links\u003C/span>\n    }\n    \n    \u003Cspan class=\"hljs-keyword\">async\u003C/span> \u003Cspan class=\"hljs-title function_\">deploy\u003C/span>(\u003Cspan class=\"hljs-params\">platform, options = {}\u003C/span>) {\n        \u003Cspan class=\"hljs-variable language_\">console\u003C/span>.\u003Cspan class=\"hljs-title function_\">log\u003C/span>(\u003Cspan class=\"hljs-string\">`Deploying to \u003Cspan class=\"hljs-subst\">${platform}\u003C/span>...`\u003C/span>);\n        \n        \u003Cspan class=\"hljs-keyword\">const\u003C/span> deploymentStrategies = {\n            \u003Cspan class=\"hljs-string\">&#x27;github-pages&#x27;\u003C/span>: \u003Cspan class=\"hljs-keyword\">async\u003C/span> () =&gt; {\n                \u003Cspan class=\"hljs-title function_\">execSync\u003C/span>(\u003Cspan class=\"hljs-string\">&#x27;git add .&#x27;\u003C/span>);\n                \u003Cspan class=\"hljs-title function_\">execSync\u003C/span>(\u003Cspan class=\"hljs-string\">`git commit -m &quot;Deploy site - \u003Cspan class=\"hljs-subst\">${\u003Cspan class=\"hljs-keyword\">new\u003C/span> \u003Cspan class=\"hljs-built_in\">Date\u003C/span>().toISOString()}\u003C/span>&quot;`\u003C/span>);\n                \u003Cspan class=\"hljs-title function_\">execSync\u003C/span>(\u003Cspan class=\"hljs-string\">&#x27;git push origin main&#x27;\u003C/span>);\n            },\n            \n            \u003Cspan class=\"hljs-string\">&#x27;netlify&#x27;\u003C/span>: \u003Cspan class=\"hljs-keyword\">async\u003C/span> () =&gt; {\n                \u003Cspan class=\"hljs-title function_\">execSync\u003C/span>(\u003Cspan class=\"hljs-string\">&#x27;netlify deploy --prod --dir=dist&#x27;\u003C/span>);\n            },\n            \n            \u003Cspan class=\"hljs-string\">&#x27;vercel&#x27;\u003C/span>: \u003Cspan class=\"hljs-keyword\">async\u003C/span> () =&gt; {\n                \u003Cspan class=\"hljs-title function_\">execSync\u003C/span>(\u003Cspan class=\"hljs-string\">&#x27;vercel --prod&#x27;\u003C/span>);\n            },\n            \n            \u003Cspan class=\"hljs-string\">&#x27;s3&#x27;\u003C/span>: \u003Cspan class=\"hljs-keyword\">async\u003C/span> () =&gt; {\n                \u003Cspan class=\"hljs-title function_\">execSync\u003C/span>(\u003Cspan class=\"hljs-string\">`aws s3 sync dist/ s3://\u003Cspan class=\"hljs-subst\">${options.bucket}\u003C/span> --delete`\u003C/span>);\n            }\n        };\n        \n        \u003Cspan class=\"hljs-keyword\">const\u003C/span> strategy = deploymentStrategies[platform];\n        \u003Cspan class=\"hljs-keyword\">if\u003C/span> (!strategy) {\n            \u003Cspan class=\"hljs-keyword\">throw\u003C/span> \u003Cspan class=\"hljs-keyword\">new\u003C/span> \u003Cspan class=\"hljs-title class_\">Error\u003C/span>(\u003Cspan class=\"hljs-string\">`Unsupported deployment platform: \u003Cspan class=\"hljs-subst\">${platform}\u003C/span>`\u003C/span>);\n        }\n        \n        \u003Cspan class=\"hljs-keyword\">await\u003C/span> \u003Cspan class=\"hljs-title function_\">strategy\u003C/span>();\n        \u003Cspan class=\"hljs-variable language_\">console\u003C/span>.\u003Cspan class=\"hljs-title function_\">log\u003C/span>(\u003Cspan class=\"hljs-string\">`Successfully deployed to \u003Cspan class=\"hljs-subst\">${platform}\u003C/span>`\u003C/span>);\n    }\n}\n\n\u003Cspan class=\"hljs-comment\">// Generator-specific implementations\u003C/span>\n\u003Cspan class=\"hljs-keyword\">class\u003C/span> \u003Cspan class=\"hljs-title class_\">JekyllGenerator\u003C/span> {\n    \u003Cspan class=\"hljs-title function_\">constructor\u003C/span>(\u003Cspan class=\"hljs-params\">manager\u003C/span>) {\n        \u003Cspan class=\"hljs-variable language_\">this\u003C/span>.\u003Cspan class=\"hljs-property\">manager\u003C/span> = manager;\n        \u003Cspan class=\"hljs-variable language_\">this\u003C/span>.\u003Cspan class=\"hljs-property\">name\u003C/span> = \u003Cspan class=\"hljs-string\">&#x27;Jekyll&#x27;\u003C/span>;\n    }\n    \n    \u003Cspan class=\"hljs-keyword\">async\u003C/span> \u003Cspan class=\"hljs-title function_\">initialize\u003C/span>(\u003Cspan class=\"hljs-params\">config\u003C/span>) {\n        \u003Cspan class=\"hljs-variable language_\">console\u003C/span>.\u003Cspan class=\"hljs-title function_\">log\u003C/span>(\u003Cspan class=\"hljs-string\">&#x27;Setting up Jekyll environment...&#x27;\u003C/span>);\n        \n        \u003Cspan class=\"hljs-comment\">// Install Ruby dependencies\u003C/span>\n        \u003Cspan class=\"hljs-keyword\">try\u003C/span> {\n            \u003Cspan class=\"hljs-title function_\">execSync\u003C/span>(\u003Cspan class=\"hljs-string\">&#x27;bundle install&#x27;\u003C/span>, { \u003Cspan class=\"hljs-attr\">cwd\u003C/span>: \u003Cspan class=\"hljs-variable language_\">this\u003C/span>.\u003Cspan class=\"hljs-property\">manager\u003C/span>.\u003Cspan class=\"hljs-property\">projectRoot\u003C/span>, \u003Cspan class=\"hljs-attr\">stdio\u003C/span>: \u003Cspan class=\"hljs-string\">&#x27;inherit&#x27;\u003C/span> });\n        } \u003Cspan class=\"hljs-keyword\">catch\u003C/span> (error) {\n            \u003Cspan class=\"hljs-variable language_\">console\u003C/span>.\u003Cspan class=\"hljs-title function_\">warn\u003C/span>(\u003Cspan class=\"hljs-string\">&#x27;Bundle install failed. Make sure Ruby and Bundler are installed.&#x27;\u003C/span>);\n        }\n    }\n    \n    \u003Cspan class=\"hljs-keyword\">async\u003C/span> \u003Cspan class=\"hljs-title function_\">installTheme\u003C/span>(\u003Cspan class=\"hljs-params\">themeName\u003C/span>) {\n        \u003Cspan class=\"hljs-variable language_\">console\u003C/span>.\u003Cspan class=\"hljs-title function_\">log\u003C/span>(\u003Cspan class=\"hljs-string\">`Installing Jekyll theme: \u003Cspan class=\"hljs-subst\">${themeName}\u003C/span>`\u003C/span>);\n        \n        \u003Cspan class=\"hljs-comment\">// Add theme to Gemfile\u003C/span>\n        \u003Cspan class=\"hljs-keyword\">const\u003C/span> gemfilePath = path.\u003Cspan class=\"hljs-title function_\">join\u003C/span>(\u003Cspan class=\"hljs-variable language_\">this\u003C/span>.\u003Cspan class=\"hljs-property\">manager\u003C/span>.\u003Cspan class=\"hljs-property\">projectRoot\u003C/span>, \u003Cspan class=\"hljs-string\">&#x27;Gemfile&#x27;\u003C/span>);\n        \u003Cspan class=\"hljs-keyword\">const\u003C/span> gemfileContent = \u003Cspan class=\"hljs-keyword\">await\u003C/span> fs.\u003Cspan class=\"hljs-title function_\">readFile\u003C/span>(gemfilePath, \u003Cspan class=\"hljs-string\">&#x27;utf8&#x27;\u003C/span>);\n        \u003Cspan class=\"hljs-keyword\">const\u003C/span> updatedGemfile = gemfileContent + \u003Cspan class=\"hljs-string\">`\\ngem &quot;\u003Cspan class=\"hljs-subst\">${themeName}\u003C/span>&quot;`\u003C/span>;\n        \u003Cspan class=\"hljs-keyword\">await\u003C/span> fs.\u003Cspan class=\"hljs-title function_\">writeFile\u003C/span>(gemfilePath, updatedGemfile);\n        \n        \u003Cspan class=\"hljs-comment\">// Install theme\u003C/span>\n        \u003Cspan class=\"hljs-title function_\">execSync\u003C/span>(\u003Cspan class=\"hljs-string\">&#x27;bundle install&#x27;\u003C/span>, { \u003Cspan class=\"hljs-attr\">cwd\u003C/span>: \u003Cspan class=\"hljs-variable language_\">this\u003C/span>.\u003Cspan class=\"hljs-property\">manager\u003C/span>.\u003Cspan class=\"hljs-property\">projectRoot\u003C/span> });\n    }\n    \n    \u003Cspan class=\"hljs-keyword\">async\u003C/span> \u003Cspan class=\"hljs-title function_\">installPlugins\u003C/span>(\u003Cspan class=\"hljs-params\">plugins\u003C/span>) {\n        \u003Cspan class=\"hljs-variable language_\">console\u003C/span>.\u003Cspan class=\"hljs-title function_\">log\u003C/span>(\u003Cspan class=\"hljs-string\">`Installing Jekyll plugins: \u003Cspan class=\"hljs-subst\">${plugins.join(\u003Cspan class=\"hljs-string\">&#x27;, &#x27;\u003C/span>)}\u003C/span>`\u003C/span>);\n        \n        \u003Cspan class=\"hljs-keyword\">const\u003C/span> configPath = path.\u003Cspan class=\"hljs-title function_\">join\u003C/span>(\u003Cspan class=\"hljs-variable language_\">this\u003C/span>.\u003Cspan class=\"hljs-property\">manager\u003C/span>.\u003Cspan class=\"hljs-property\">projectRoot\u003C/span>, \u003Cspan class=\"hljs-string\">&#x27;_config.yml&#x27;\u003C/span>);\n        \u003Cspan class=\"hljs-keyword\">const\u003C/span> config = yaml.\u003Cspan class=\"hljs-title function_\">load\u003C/span>(\u003Cspan class=\"hljs-keyword\">await\u003C/span> fs.\u003Cspan class=\"hljs-title function_\">readFile\u003C/span>(configPath, \u003Cspan class=\"hljs-string\">&#x27;utf8&#x27;\u003C/span>));\n        config.\u003Cspan class=\"hljs-property\">plugins\u003C/span> = [...(config.\u003Cspan class=\"hljs-property\">plugins\u003C/span> || []), ...plugins];\n        \u003Cspan class=\"hljs-keyword\">await\u003C/span> fs.\u003Cspan class=\"hljs-title function_\">writeFile\u003C/span>(configPath, yaml.\u003Cspan class=\"hljs-title function_\">dump\u003C/span>(config));\n    }\n    \n    \u003Cspan class=\"hljs-keyword\">async\u003C/span> \u003Cspan class=\"hljs-title function_\">build\u003C/span>(\u003Cspan class=\"hljs-params\">options = {}\u003C/span>) {\n        \u003Cspan class=\"hljs-variable language_\">console\u003C/span>.\u003Cspan class=\"hljs-title function_\">log\u003C/span>(\u003Cspan class=\"hljs-string\">&#x27;Building Jekyll site...&#x27;\u003C/span>);\n        \n        \u003Cspan class=\"hljs-keyword\">const\u003C/span> buildCommand = options.\u003Cspan class=\"hljs-property\">production\u003C/span> \n            ? \u003Cspan class=\"hljs-string\">&#x27;bundle exec jekyll build --config _config.yml,_config_prod.yml&#x27;\u003C/span>\n            : \u003Cspan class=\"hljs-string\">&#x27;bundle exec jekyll build&#x27;\u003C/span>;\n            \n        \u003Cspan class=\"hljs-title function_\">execSync\u003C/span>(buildCommand, { \n            \u003Cspan class=\"hljs-attr\">cwd\u003C/span>: \u003Cspan class=\"hljs-variable language_\">this\u003C/span>.\u003Cspan class=\"hljs-property\">manager\u003C/span>.\u003Cspan class=\"hljs-property\">projectRoot\u003C/span>, \n            \u003Cspan class=\"hljs-attr\">stdio\u003C/span>: \u003Cspan class=\"hljs-string\">&#x27;inherit&#x27;\u003C/span> \n        });\n        \n        \u003Cspan class=\"hljs-keyword\">return\u003C/span> {\n            \u003Cspan class=\"hljs-attr\">outputDir\u003C/span>: path.\u003Cspan class=\"hljs-title function_\">join\u003C/span>(\u003Cspan class=\"hljs-variable language_\">this\u003C/span>.\u003Cspan class=\"hljs-property\">manager\u003C/span>.\u003Cspan class=\"hljs-property\">projectRoot\u003C/span>, \u003Cspan class=\"hljs-string\">&#x27;_site&#x27;\u003C/span>),\n            \u003Cspan class=\"hljs-attr\">generator\u003C/span>: \u003Cspan class=\"hljs-string\">&#x27;Jekyll&#x27;\u003C/span>,\n            \u003Cspan class=\"hljs-attr\">buildTime\u003C/span>: \u003Cspan class=\"hljs-keyword\">new\u003C/span> \u003Cspan class=\"hljs-title class_\">Date\u003C/span>().\u003Cspan class=\"hljs-title function_\">toISOString\u003C/span>()\n        };\n    }\n}\n\n\u003Cspan class=\"hljs-keyword\">class\u003C/span> \u003Cspan class=\"hljs-title class_\">HugoGenerator\u003C/span> {\n    \u003Cspan class=\"hljs-title function_\">constructor\u003C/span>(\u003Cspan class=\"hljs-params\">manager\u003C/span>) {\n        \u003Cspan class=\"hljs-variable language_\">this\u003C/span>.\u003Cspan class=\"hljs-property\">manager\u003C/span> = manager;\n        \u003Cspan class=\"hljs-variable language_\">this\u003C/span>.\u003Cspan class=\"hljs-property\">name\u003C/span> = \u003Cspan class=\"hljs-string\">&#x27;Hugo&#x27;\u003C/span>;\n    }\n    \n    \u003Cspan class=\"hljs-keyword\">async\u003C/span> \u003Cspan class=\"hljs-title function_\">initialize\u003C/span>(\u003Cspan class=\"hljs-params\">config\u003C/span>) {\n        \u003Cspan class=\"hljs-variable language_\">console\u003C/span>.\u003Cspan class=\"hljs-title function_\">log\u003C/span>(\u003Cspan class=\"hljs-string\">&#x27;Setting up Hugo environment...&#x27;\u003C/span>);\n        \u003Cspan class=\"hljs-comment\">// Hugo doesn&#x27;t require additional setup\u003C/span>\n    }\n    \n    \u003Cspan class=\"hljs-keyword\">async\u003C/span> \u003Cspan class=\"hljs-title function_\">installTheme\u003C/span>(\u003Cspan class=\"hljs-params\">themeName\u003C/span>) {\n        \u003Cspan class=\"hljs-variable language_\">console\u003C/span>.\u003Cspan class=\"hljs-title function_\">log\u003C/span>(\u003Cspan class=\"hljs-string\">`Installing Hugo theme: \u003Cspan class=\"hljs-subst\">${themeName}\u003C/span>`\u003C/span>);\n        \n        \u003Cspan class=\"hljs-keyword\">const\u003C/span> themeDir = path.\u003Cspan class=\"hljs-title function_\">join\u003C/span>(\u003Cspan class=\"hljs-variable language_\">this\u003C/span>.\u003Cspan class=\"hljs-property\">manager\u003C/span>.\u003Cspan class=\"hljs-property\">projectRoot\u003C/span>, \u003Cspan class=\"hljs-string\">&#x27;themes&#x27;\u003C/span>, themeName);\n        \u003Cspan class=\"hljs-title function_\">execSync\u003C/span>(\u003Cspan class=\"hljs-string\">`git submodule add https://github.com/thegeeklab/\u003Cspan class=\"hljs-subst\">${themeName}\u003C/span> \u003Cspan class=\"hljs-subst\">${themeDir}\u003C/span>`\u003C/span>, {\n            \u003Cspan class=\"hljs-attr\">cwd\u003C/span>: \u003Cspan class=\"hljs-variable language_\">this\u003C/span>.\u003Cspan class=\"hljs-property\">manager\u003C/span>.\u003Cspan class=\"hljs-property\">projectRoot\u003C/span>\n        });\n    }\n    \n    \u003Cspan class=\"hljs-keyword\">async\u003C/span> \u003Cspan class=\"hljs-title function_\">installPlugins\u003C/span>(\u003Cspan class=\"hljs-params\">plugins\u003C/span>) {\n        \u003Cspan class=\"hljs-variable language_\">console\u003C/span>.\u003Cspan class=\"hljs-title function_\">log\u003C/span>(\u003Cspan class=\"hljs-string\">&#x27;Hugo plugins are typically built-in or theme-based&#x27;\u003C/span>);\n        \u003Cspan class=\"hljs-comment\">// Hugo plugins are usually built-in or part of themes\u003C/span>\n    }\n    \n    \u003Cspan class=\"hljs-keyword\">async\u003C/span> \u003Cspan class=\"hljs-title function_\">build\u003C/span>(\u003Cspan class=\"hljs-params\">options = {}\u003C/span>) {\n        \u003Cspan class=\"hljs-variable language_\">console\u003C/span>.\u003Cspan class=\"hljs-title function_\">log\u003C/span>(\u003Cspan class=\"hljs-string\">&#x27;Building Hugo site...&#x27;\u003C/span>);\n        \n        \u003Cspan class=\"hljs-keyword\">const\u003C/span> buildCommand = options.\u003Cspan class=\"hljs-property\">production\u003C/span> \n            ? \u003Cspan class=\"hljs-string\">&#x27;hugo --minify --gc&#x27;\u003C/span>\n            : \u003Cspan class=\"hljs-string\">&#x27;hugo --buildDrafts --buildFuture&#x27;\u003C/span>;\n            \n        \u003Cspan class=\"hljs-title function_\">execSync\u003C/span>(buildCommand, { \n            \u003Cspan class=\"hljs-attr\">cwd\u003C/span>: \u003Cspan class=\"hljs-variable language_\">this\u003C/span>.\u003Cspan class=\"hljs-property\">manager\u003C/span>.\u003Cspan class=\"hljs-property\">projectRoot\u003C/span>, \n            \u003Cspan class=\"hljs-attr\">stdio\u003C/span>: \u003Cspan class=\"hljs-string\">&#x27;inherit&#x27;\u003C/span> \n        });\n        \n        \u003Cspan class=\"hljs-keyword\">return\u003C/span> {\n            \u003Cspan class=\"hljs-attr\">outputDir\u003C/span>: path.\u003Cspan class=\"hljs-title function_\">join\u003C/span>(\u003Cspan class=\"hljs-variable language_\">this\u003C/span>.\u003Cspan class=\"hljs-property\">manager\u003C/span>.\u003Cspan class=\"hljs-property\">projectRoot\u003C/span>, \u003Cspan class=\"hljs-string\">&#x27;public&#x27;\u003C/span>),\n            \u003Cspan class=\"hljs-attr\">generator\u003C/span>: \u003Cspan class=\"hljs-string\">&#x27;Hugo&#x27;\u003C/span>,\n            \u003Cspan class=\"hljs-attr\">buildTime\u003C/span>: \u003Cspan class=\"hljs-keyword\">new\u003C/span> \u003Cspan class=\"hljs-title class_\">Date\u003C/span>().\u003Cspan class=\"hljs-title function_\">toISOString\u003C/span>()\n        };\n    }\n}\n\n\u003Cspan class=\"hljs-keyword\">class\u003C/span> \u003Cspan class=\"hljs-title class_\">MkDocsGenerator\u003C/span> {\n    \u003Cspan class=\"hljs-title function_\">constructor\u003C/span>(\u003Cspan class=\"hljs-params\">manager\u003C/span>) {\n        \u003Cspan class=\"hljs-variable language_\">this\u003C/span>.\u003Cspan class=\"hljs-property\">manager\u003C/span> = manager;\n        \u003Cspan class=\"hljs-variable language_\">this\u003C/span>.\u003Cspan class=\"hljs-property\">name\u003C/span> = \u003Cspan class=\"hljs-string\">&#x27;MkDocs&#x27;\u003C/span>;\n    }\n    \n    \u003Cspan class=\"hljs-keyword\">async\u003C/span> \u003Cspan class=\"hljs-title function_\">initialize\u003C/span>(\u003Cspan class=\"hljs-params\">config\u003C/span>) {\n        \u003Cspan class=\"hljs-variable language_\">console\u003C/span>.\u003Cspan class=\"hljs-title function_\">log\u003C/span>(\u003Cspan class=\"hljs-string\">&#x27;Setting up MkDocs environment...&#x27;\u003C/span>);\n        \n        \u003Cspan class=\"hljs-comment\">// Install Python dependencies\u003C/span>\n        \u003Cspan class=\"hljs-keyword\">try\u003C/span> {\n            \u003Cspan class=\"hljs-title function_\">execSync\u003C/span>(\u003Cspan class=\"hljs-string\">&#x27;pip install -r requirements.txt&#x27;\u003C/span>, { \n                \u003Cspan class=\"hljs-attr\">cwd\u003C/span>: \u003Cspan class=\"hljs-variable language_\">this\u003C/span>.\u003Cspan class=\"hljs-property\">manager\u003C/span>.\u003Cspan class=\"hljs-property\">projectRoot\u003C/span>, \n                \u003Cspan class=\"hljs-attr\">stdio\u003C/span>: \u003Cspan class=\"hljs-string\">&#x27;inherit&#x27;\u003C/span> \n            });\n        } \u003Cspan class=\"hljs-keyword\">catch\u003C/span> (error) {\n            \u003Cspan class=\"hljs-variable language_\">console\u003C/span>.\u003Cspan class=\"hljs-title function_\">warn\u003C/span>(\u003Cspan class=\"hljs-string\">&#x27;Pip install failed. Make sure Python and pip are installed.&#x27;\u003C/span>);\n        }\n    }\n    \n    \u003Cspan class=\"hljs-keyword\">async\u003C/span> \u003Cspan class=\"hljs-title function_\">installTheme\u003C/span>(\u003Cspan class=\"hljs-params\">themeName\u003C/span>) {\n        \u003Cspan class=\"hljs-variable language_\">console\u003C/span>.\u003Cspan class=\"hljs-title function_\">log\u003C/span>(\u003Cspan class=\"hljs-string\">`MkDocs theme \u003Cspan class=\"hljs-subst\">${themeName}\u003C/span> should be specified in mkdocs.yml`\u003C/span>);\n    }\n    \n    \u003Cspan class=\"hljs-keyword\">async\u003C/span> \u003Cspan class=\"hljs-title function_\">installPlugins\u003C/span>(\u003Cspan class=\"hljs-params\">plugins\u003C/span>) {\n        \u003Cspan class=\"hljs-variable language_\">console\u003C/span>.\u003Cspan class=\"hljs-title function_\">log\u003C/span>(\u003Cspan class=\"hljs-string\">&#x27;MkDocs plugins should be specified in mkdocs.yml and requirements.txt&#x27;\u003C/span>);\n    }\n    \n    \u003Cspan class=\"hljs-keyword\">async\u003C/span> \u003Cspan class=\"hljs-title function_\">build\u003C/span>(\u003Cspan class=\"hljs-params\">options = {}\u003C/span>) {\n        \u003Cspan class=\"hljs-variable language_\">console\u003C/span>.\u003Cspan class=\"hljs-title function_\">log\u003C/span>(\u003Cspan class=\"hljs-string\">&#x27;Building MkDocs site...&#x27;\u003C/span>);\n        \n        \u003Cspan class=\"hljs-keyword\">const\u003C/span> buildCommand = \u003Cspan class=\"hljs-string\">&#x27;mkdocs build&#x27;\u003C/span>;\n        \u003Cspan class=\"hljs-title function_\">execSync\u003C/span>(buildCommand, { \n            \u003Cspan class=\"hljs-attr\">cwd\u003C/span>: \u003Cspan class=\"hljs-variable language_\">this\u003C/span>.\u003Cspan class=\"hljs-property\">manager\u003C/span>.\u003Cspan class=\"hljs-property\">projectRoot\u003C/span>, \n            \u003Cspan class=\"hljs-attr\">stdio\u003C/span>: \u003Cspan class=\"hljs-string\">&#x27;inherit&#x27;\u003C/span> \n        });\n        \n        \u003Cspan class=\"hljs-keyword\">return\u003C/span> {\n            \u003Cspan class=\"hljs-attr\">outputDir\u003C/span>: path.\u003Cspan class=\"hljs-title function_\">join\u003C/span>(\u003Cspan class=\"hljs-variable language_\">this\u003C/span>.\u003Cspan class=\"hljs-property\">manager\u003C/span>.\u003Cspan class=\"hljs-property\">projectRoot\u003C/span>, \u003Cspan class=\"hljs-string\">&#x27;site&#x27;\u003C/span>),\n            \u003Cspan class=\"hljs-attr\">generator\u003C/span>: \u003Cspan class=\"hljs-string\">&#x27;MkDocs&#x27;\u003C/span>,\n            \u003Cspan class=\"hljs-attr\">buildTime\u003C/span>: \u003Cspan class=\"hljs-keyword\">new\u003C/span> \u003Cspan class=\"hljs-title class_\">Date\u003C/span>().\u003Cspan class=\"hljs-title function_\">toISOString\u003C/span>()\n        };\n    }\n}\n\n\u003Cspan class=\"hljs-keyword\">class\u003C/span> \u003Cspan class=\"hljs-title class_\">DocusaurusGenerator\u003C/span> {\n    \u003Cspan class=\"hljs-title function_\">constructor\u003C/span>(\u003Cspan class=\"hljs-params\">manager\u003C/span>) {\n        \u003Cspan class=\"hljs-variable language_\">this\u003C/span>.\u003Cspan class=\"hljs-property\">manager\u003C/span> = manager;\n        \u003Cspan class=\"hljs-variable language_\">this\u003C/span>.\u003Cspan class=\"hljs-property\">name\u003C/span> = \u003Cspan class=\"hljs-string\">&#x27;Docusaurus&#x27;\u003C/span>;\n    }\n    \n    \u003Cspan class=\"hljs-keyword\">async\u003C/span> \u003Cspan class=\"hljs-title function_\">initialize\u003C/span>(\u003Cspan class=\"hljs-params\">config\u003C/span>) {\n        \u003Cspan class=\"hljs-variable language_\">console\u003C/span>.\u003Cspan class=\"hljs-title function_\">log\u003C/span>(\u003Cspan class=\"hljs-string\">&#x27;Setting up Docusaurus environment...&#x27;\u003C/span>);\n        \n        \u003Cspan class=\"hljs-comment\">// Install Node.js dependencies\u003C/span>\n        \u003Cspan class=\"hljs-keyword\">try\u003C/span> {\n            \u003Cspan class=\"hljs-title function_\">execSync\u003C/span>(\u003Cspan class=\"hljs-string\">&#x27;npm install&#x27;\u003C/span>, { \n                \u003Cspan class=\"hljs-attr\">cwd\u003C/span>: \u003Cspan class=\"hljs-variable language_\">this\u003C/span>.\u003Cspan class=\"hljs-property\">manager\u003C/span>.\u003Cspan class=\"hljs-property\">projectRoot\u003C/span>, \n                \u003Cspan class=\"hljs-attr\">stdio\u003C/span>: \u003Cspan class=\"hljs-string\">&#x27;inherit&#x27;\u003C/span> \n            });\n        } \u003Cspan class=\"hljs-keyword\">catch\u003C/span> (error) {\n            \u003Cspan class=\"hljs-variable language_\">console\u003C/span>.\u003Cspan class=\"hljs-title function_\">warn\u003C/span>(\u003Cspan class=\"hljs-string\">&#x27;npm install failed. Make sure Node.js and npm are installed.&#x27;\u003C/span>);\n        }\n    }\n    \n    \u003Cspan class=\"hljs-keyword\">async\u003C/span> \u003Cspan class=\"hljs-title function_\">installTheme\u003C/span>(\u003Cspan class=\"hljs-params\">themeName\u003C/span>) {\n        \u003Cspan class=\"hljs-variable language_\">console\u003C/span>.\u003Cspan class=\"hljs-title function_\">log\u003C/span>(\u003Cspan class=\"hljs-string\">`Installing Docusaurus theme: \u003Cspan class=\"hljs-subst\">${themeName}\u003C/span>`\u003C/span>);\n        \u003Cspan class=\"hljs-title function_\">execSync\u003C/span>(\u003Cspan class=\"hljs-string\">`npm install \u003Cspan class=\"hljs-subst\">${themeName}\u003C/span>`\u003C/span>, { \u003Cspan class=\"hljs-attr\">cwd\u003C/span>: \u003Cspan class=\"hljs-variable language_\">this\u003C/span>.\u003Cspan class=\"hljs-property\">manager\u003C/span>.\u003Cspan class=\"hljs-property\">projectRoot\u003C/span> });\n    }\n    \n    \u003Cspan class=\"hljs-keyword\">async\u003C/span> \u003Cspan class=\"hljs-title function_\">installPlugins\u003C/span>(\u003Cspan class=\"hljs-params\">plugins\u003C/span>) {\n        \u003Cspan class=\"hljs-variable language_\">console\u003C/span>.\u003Cspan class=\"hljs-title function_\">log\u003C/span>(\u003Cspan class=\"hljs-string\">`Installing Docusaurus plugins: \u003Cspan class=\"hljs-subst\">${plugins.join(\u003Cspan class=\"hljs-string\">&#x27;, &#x27;\u003C/span>)}\u003C/span>`\u003C/span>);\n        \u003Cspan class=\"hljs-keyword\">const\u003C/span> pluginPackages = plugins.\u003Cspan class=\"hljs-title function_\">map\u003C/span>(\u003Cspan class=\"hljs-function\">\u003Cspan class=\"hljs-params\">p\u003C/span> =&gt;\u003C/span> \u003Cspan class=\"hljs-string\">`@docusaurus/plugin-\u003Cspan class=\"hljs-subst\">${p}\u003C/span>`\u003C/span>).\u003Cspan class=\"hljs-title function_\">join\u003C/span>(\u003Cspan class=\"hljs-string\">&#x27; &#x27;\u003C/span>);\n        \u003Cspan class=\"hljs-title function_\">execSync\u003C/span>(\u003Cspan class=\"hljs-string\">`npm install \u003Cspan class=\"hljs-subst\">${pluginPackages}\u003C/span>`\u003C/span>, { \u003Cspan class=\"hljs-attr\">cwd\u003C/span>: \u003Cspan class=\"hljs-variable language_\">this\u003C/span>.\u003Cspan class=\"hljs-property\">manager\u003C/span>.\u003Cspan class=\"hljs-property\">projectRoot\u003C/span> });\n    }\n    \n    \u003Cspan class=\"hljs-keyword\">async\u003C/span> \u003Cspan class=\"hljs-title function_\">build\u003C/span>(\u003Cspan class=\"hljs-params\">options = {}\u003C/span>) {\n        \u003Cspan class=\"hljs-variable language_\">console\u003C/span>.\u003Cspan class=\"hljs-title function_\">log\u003C/span>(\u003Cspan class=\"hljs-string\">&#x27;Building Docusaurus site...&#x27;\u003C/span>);\n        \n        \u003Cspan class=\"hljs-keyword\">const\u003C/span> buildCommand = \u003Cspan class=\"hljs-string\">&#x27;npm run build&#x27;\u003C/span>;\n        \u003Cspan class=\"hljs-title function_\">execSync\u003C/span>(buildCommand, { \n            \u003Cspan class=\"hljs-attr\">cwd\u003C/span>: \u003Cspan class=\"hljs-variable language_\">this\u003C/span>.\u003Cspan class=\"hljs-property\">manager\u003C/span>.\u003Cspan class=\"hljs-property\">projectRoot\u003C/span>, \n            \u003Cspan class=\"hljs-attr\">stdio\u003C/span>: \u003Cspan class=\"hljs-string\">&#x27;inherit&#x27;\u003C/span> \n        });\n        \n        \u003Cspan class=\"hljs-keyword\">return\u003C/span> {\n            \u003Cspan class=\"hljs-attr\">outputDir\u003C/span>: path.\u003Cspan class=\"hljs-title function_\">join\u003C/span>(\u003Cspan class=\"hljs-variable language_\">this\u003C/span>.\u003Cspan class=\"hljs-property\">manager\u003C/span>.\u003Cspan class=\"hljs-property\">projectRoot\u003C/span>, \u003Cspan class=\"hljs-string\">&#x27;build&#x27;\u003C/span>),\n            \u003Cspan class=\"hljs-attr\">generator\u003C/span>: \u003Cspan class=\"hljs-string\">&#x27;Docusaurus&#x27;\u003C/span>,\n            \u003Cspan class=\"hljs-attr\">buildTime\u003C/span>: \u003Cspan class=\"hljs-keyword\">new\u003C/span> \u003Cspan class=\"hljs-title class_\">Date\u003C/span>().\u003Cspan class=\"hljs-title function_\">toISOString\u003C/span>()\n        };\n    }\n}\n\n\u003Cspan class=\"hljs-variable language_\">module\u003C/span>.\u003Cspan class=\"hljs-property\">exports\u003C/span> = \u003Cspan class=\"hljs-title class_\">DocumentationSiteManager\u003C/span>;\n\n\u003Cspan class=\"hljs-comment\">// CLI interface\u003C/span>\n\u003Cspan class=\"hljs-keyword\">if\u003C/span> (\u003Cspan class=\"hljs-built_in\">require\u003C/span>.\u003Cspan class=\"hljs-property\">main\u003C/span> === \u003Cspan class=\"hljs-variable language_\">module\u003C/span>) {\n    \u003Cspan class=\"hljs-keyword\">const\u003C/span> manager = \u003Cspan class=\"hljs-keyword\">new\u003C/span> \u003Cspan class=\"hljs-title class_\">DocumentationSiteManager\u003C/span>();\n    \u003Cspan class=\"hljs-keyword\">const\u003C/span> command = process.\u003Cspan class=\"hljs-property\">argv\u003C/span>[\u003Cspan class=\"hljs-number\">2\u003C/span>];\n    \u003Cspan class=\"hljs-keyword\">const\u003C/span> generator = process.\u003Cspan class=\"hljs-property\">argv\u003C/span>[\u003Cspan class=\"hljs-number\">3\u003C/span>];\n    \n    \u003Cspan class=\"hljs-keyword\">switch\u003C/span> (command) {\n        \u003Cspan class=\"hljs-keyword\">case\u003C/span> \u003Cspan class=\"hljs-string\">&#x27;init&#x27;\u003C/span>:\n            manager.\u003Cspan class=\"hljs-title function_\">initializeProject\u003C/span>(generator, {\n                \u003Cspan class=\"hljs-attr\">title\u003C/span>: \u003Cspan class=\"hljs-string\">&#x27;My Documentation Site&#x27;\u003C/span>,\n                \u003Cspan class=\"hljs-attr\">description\u003C/span>: \u003Cspan class=\"hljs-string\">&#x27;Comprehensive documentation site&#x27;\u003C/span>\n            });\n            \u003Cspan class=\"hljs-keyword\">break\u003C/span>;\n        \u003Cspan class=\"hljs-keyword\">case\u003C/span> \u003Cspan class=\"hljs-string\">&#x27;build&#x27;\u003C/span>:\n            manager.\u003Cspan class=\"hljs-title function_\">build\u003C/span>(generator);\n            \u003Cspan class=\"hljs-keyword\">break\u003C/span>;\n        \u003Cspan class=\"hljs-keyword\">case\u003C/span> \u003Cspan class=\"hljs-string\">&#x27;deploy&#x27;\u003C/span>:\n            \u003Cspan class=\"hljs-keyword\">const\u003C/span> platform = process.\u003Cspan class=\"hljs-property\">argv\u003C/span>[\u003Cspan class=\"hljs-number\">4\u003C/span>];\n            manager.\u003Cspan class=\"hljs-title function_\">deploy\u003C/span>(platform);\n            \u003Cspan class=\"hljs-keyword\">break\u003C/span>;\n        \u003Cspan class=\"hljs-attr\">default\u003C/span>:\n            \u003Cspan class=\"hljs-variable language_\">console\u003C/span>.\u003Cspan class=\"hljs-title function_\">log\u003C/span>(\u003Cspan class=\"hljs-string\">&#x27;Available commands: init &lt;generator&gt;, build &lt;generator&gt;, deploy &lt;platform&gt;&#x27;\u003C/span>);\n            \u003Cspan class=\"hljs-variable language_\">console\u003C/span>.\u003Cspan class=\"hljs-title function_\">log\u003C/span>(\u003Cspan class=\"hljs-string\">&#x27;Available generators: jekyll, hugo, mkdocs, docusaurus&#x27;\u003C/span>);\n            \u003Cspan class=\"hljs-variable language_\">console\u003C/span>.\u003Cspan class=\"hljs-title function_\">log\u003C/span>(\u003Cspan class=\"hljs-string\">&#x27;Available platforms: github-pages, netlify, vercel, s3&#x27;\u003C/span>);\n    }\n}\n\u003C/code>\u003C/pre>\u003Ch2 id=\"advanced-theme-customization\">Advanced Theme Customization\u003C/h2>\n\u003Ch3 id=\"jekyll-theme-development\">Jekyll Theme Development\u003C/h3>\n\u003Cp>Creating custom Jekyll themes with advanced functionality:\u003C/p>\n\u003Cpre>\u003Ccode class=\"hljs language-liquid\">&lt;!-- _layouts/documentation.html - Advanced Jekyll layout --&gt;\n&lt;!DOCTYPE html&gt;\n&lt;html lang=&quot;{{ page.lang | default: site.lang | default: &#39;en&#39; }}&quot;&gt;\n\n{%- include head.html -%}\n\n&lt;body class=&quot;documentation-layout&quot;&gt;\n  \n  {%- include header.html -%}\n\n  &lt;!-- Main content area with sidebar --&gt;\n  &lt;main class=&quot;documentation-main&quot; id=&quot;main-content&quot;&gt;\n    \n    &lt;!-- Sidebar navigation --&gt;\n    &lt;aside class=&quot;documentation-sidebar&quot;&gt;\n      &lt;nav class=&quot;sidebar-nav&quot; aria-label=&quot;Documentation navigation&quot;&gt;\n        \n        &lt;!-- Search --&gt;\n        &lt;div class=&quot;sidebar-search&quot;&gt;\n          &lt;input type=&quot;search&quot; id=&quot;docs-search&quot; placeholder=&quot;Search documentation...&quot; \n                 aria-label=&quot;Search documentation&quot;&gt;\n          &lt;div id=&quot;search-results&quot; class=&quot;search-results hidden&quot; aria-live=&quot;polite&quot;&gt;&lt;/div&gt;\n        &lt;/div&gt;\n        \n        &lt;!-- Navigation tree --&gt;\n        &lt;div class=&quot;sidebar-tree&quot;&gt;\n          {% assign docs_pages = site.docs | sort: &#39;order&#39; %}\n          {% assign grouped_pages = docs_pages | group_by: &#39;category&#39; %}\n          \n          {% for group in grouped_pages %}\n            &lt;div class=&quot;nav-section&quot;&gt;\n              &lt;h3 class=&quot;nav-section-title&quot;&gt;{{ group.name | default: &#39;General&#39; }}&lt;/h3&gt;\n              &lt;ul class=&quot;nav-list&quot;&gt;\n                {% for doc in group.items %}\n                  &lt;li class=&quot;nav-item{% if page.url == doc.url %} nav-item-active{% endif %}&quot;&gt;\n                    &lt;a href=&quot;{{ doc.url | relative_url }}&quot; \n                       class=&quot;nav-link&quot;\n                       {% if page.url == doc.url %}aria-current=&quot;page&quot;{% endif %}&gt;\n                      {{ doc.title | default: doc.name }}\n                    &lt;/a&gt;\n                    \n                    &lt;!-- Show subsections if this is the current page --&gt;\n                    {% if page.url == doc.url and doc.toc %}\n                      &lt;ul class=&quot;nav-subsections&quot;&gt;\n                        {% for toc_item in doc.toc %}\n                          &lt;li class=&quot;nav-subitem&quot;&gt;\n                            &lt;a href=&quot;#{{ toc_item.anchor }}&quot; class=&quot;nav-sublink&quot;&gt;\n                              {{ toc_item.title }}\n                            &lt;/a&gt;\n                          &lt;/li&gt;\n                        {% endfor %}\n                      &lt;/ul&gt;\n                    {% endif %}\n                  &lt;/li&gt;\n                {% endfor %}\n              &lt;/ul&gt;\n            &lt;/div&gt;\n          {% endfor %}\n        &lt;/div&gt;\n        \n      &lt;/nav&gt;\n    &lt;/aside&gt;\n    \n    &lt;!-- Content area --&gt;\n    &lt;div class=&quot;documentation-content&quot;&gt;\n      \n      &lt;!-- Breadcrumb navigation --&gt;\n      {% if page.breadcrumbs %}\n        &lt;nav class=&quot;breadcrumbs&quot; aria-label=&quot;Breadcrumb&quot;&gt;\n          &lt;ol class=&quot;breadcrumb-list&quot;&gt;\n            &lt;li class=&quot;breadcrumb-item&quot;&gt;\n              &lt;a href=&quot;{{ &#39;/&#39; | relative_url }}&quot;&gt;Home&lt;/a&gt;\n            &lt;/li&gt;\n            {% for crumb in page.breadcrumbs %}\n              &lt;li class=&quot;breadcrumb-item{% if forloop.last %} breadcrumb-item-active{% endif %}&quot;&gt;\n                {% if forloop.last %}\n                  {{ crumb.title }}\n                {% else %}\n                  &lt;a href=&quot;{{ crumb.url | relative_url }}&quot;&gt;{{ crumb.title }}&lt;/a&gt;\n                {% endif %}\n              &lt;/li&gt;\n            {% endfor %}\n          &lt;/ol&gt;\n        &lt;/nav&gt;\n      {% endif %}\n      \n      &lt;!-- Page header --&gt;\n      &lt;header class=&quot;page-header&quot;&gt;\n        &lt;h1 class=&quot;page-title&quot;&gt;{{ page.title }}&lt;/h1&gt;\n        {% if page.description %}\n          &lt;p class=&quot;page-description&quot;&gt;{{ page.description }}&lt;/p&gt;\n        {% endif %}\n        \n        &lt;!-- Page metadata --&gt;\n        &lt;div class=&quot;page-meta&quot;&gt;\n          {% if page.author %}\n            &lt;span class=&quot;page-author&quot;&gt;By {{ page.author }}&lt;/span&gt;\n          {% endif %}\n          {% if page.date %}\n            &lt;time class=&quot;page-date&quot; datetime=&quot;{{ page.date | date_to_xmlschema }}&quot;&gt;\n              Last updated: {{ page.date | date: &quot;%B %d, %Y&quot; }}\n            &lt;/time&gt;\n          {% endif %}\n          {% if page.reading_time %}\n            &lt;span class=&quot;reading-time&quot;&gt;{{ page.reading_time }} min read&lt;/span&gt;\n          {% endif %}\n        &lt;/div&gt;\n        \n        &lt;!-- Edit link --&gt;\n        {% if site.github.repository_url and page.path %}\n          &lt;div class=&quot;page-actions&quot;&gt;\n            &lt;a href=&quot;{{ site.github.repository_url }}/edit/{{ site.github.source.branch }}/{{ page.path }}&quot; \n               class=&quot;edit-link&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;\n              Edit this page\n            &lt;/a&gt;\n          &lt;/div&gt;\n        {% endif %}\n      &lt;/header&gt;\n      \n      &lt;!-- Table of contents --&gt;\n      {% if page.toc %}\n        &lt;div class=&quot;table-of-contents&quot;&gt;\n          &lt;details class=&quot;toc-toggle&quot; open&gt;\n            &lt;summary&gt;Table of Contents&lt;/summary&gt;\n            &lt;nav class=&quot;toc-nav&quot;&gt;\n              &lt;ol class=&quot;toc-list&quot;&gt;\n                {% for toc_item in page.toc %}\n                  &lt;li class=&quot;toc-item toc-level-{{ toc_item.level }}&quot;&gt;\n                    &lt;a href=&quot;#{{ toc_item.anchor }}&quot; class=&quot;toc-link&quot;&gt;\n                      {{ toc_item.title }}\n                    &lt;/a&gt;\n                  &lt;/li&gt;\n                {% endfor %}\n              &lt;/ol&gt;\n            &lt;/nav&gt;\n          &lt;/details&gt;\n        &lt;/div&gt;\n      {% endif %}\n      \n      &lt;!-- Main content --&gt;\n      &lt;article class=&quot;page-content&quot;&gt;\n        {{ content }}\n      &lt;/article&gt;\n      \n      &lt;!-- Tags and categories --&gt;\n      {% if page.tags or page.categories %}\n        &lt;footer class=&quot;page-footer&quot;&gt;\n          {% if page.categories %}\n            &lt;div class=&quot;page-categories&quot;&gt;\n              &lt;span class=&quot;meta-label&quot;&gt;Categories:&lt;/span&gt;\n              {% for category in page.categories %}\n                &lt;a href=&quot;{{ site.baseurl }}/categories/{{ category | slugify }}/&quot; \n                   class=&quot;category-link&quot;&gt;{{ category }}&lt;/a&gt;\n              {% endfor %}\n            &lt;/div&gt;\n          {% endif %}\n          \n          {% if page.tags %}\n            &lt;div class=&quot;page-tags&quot;&gt;\n              &lt;span class=&quot;meta-label&quot;&gt;Tags:&lt;/span&gt;\n              {% for tag in page.tags %}\n                &lt;a href=&quot;{{ site.baseurl }}/tags/{{ tag | slugify }}/&quot; \n                   class=&quot;tag-link&quot;&gt;{{ tag }}&lt;/a&gt;\n              {% endfor %}\n            &lt;/div&gt;\n          {% endif %}\n        &lt;/footer&gt;\n      {% endif %}\n      \n      &lt;!-- Navigation between pages --&gt;\n      &lt;nav class=&quot;page-navigation&quot; aria-label=&quot;Page navigation&quot;&gt;\n        {% assign docs = site.docs | sort: &#39;order&#39; %}\n        {% assign current_index = docs | map: &#39;url&#39; | index: page.url %}\n        \n        {% if current_index &gt; 0 %}\n          {% assign prev_page = docs[current_index | minus: 1] %}\n          &lt;a href=&quot;{{ prev_page.url | relative_url }}&quot; class=&quot;nav-prev&quot;&gt;\n            &lt;span class=&quot;nav-label&quot;&gt;Previous&lt;/span&gt;\n            &lt;span class=&quot;nav-title&quot;&gt;{{ prev_page.title }}&lt;/span&gt;\n          &lt;/a&gt;\n        {% endif %}\n        \n        {% assign next_index = current_index | plus: 1 %}\n        {% if next_index &lt; docs.size %}\n          {% assign next_page = docs[next_index] %}\n          &lt;a href=&quot;{{ next_page.url | relative_url }}&quot; class=&quot;nav-next&quot;&gt;\n            &lt;span class=&quot;nav-label&quot;&gt;Next&lt;/span&gt;\n            &lt;span class=&quot;nav-title&quot;&gt;{{ next_page.title }}&lt;/span&gt;\n          &lt;/a&gt;\n        {% endif %}\n      &lt;/nav&gt;\n      \n    &lt;/div&gt;\n    \n  &lt;/main&gt;\n  \n  {%- include footer.html -%}\n  \n  &lt;!-- Enhanced functionality scripts --&gt;\n  &lt;script&gt;\n    // Search functionality\n    (function() {\n      const searchInput = document.getElementById(&#39;docs-search&#39;);\n      const searchResults = document.getElementById(&#39;search-results&#39;);\n      let searchIndex = null;\n      \n      // Load search index\n      fetch(&#39;{{ &quot;/assets/search-index.json&quot; | relative_url }}&#39;)\n        .then(response =&gt; response.json())\n        .then(data =&gt; {\n          searchIndex = data;\n        });\n      \n      // Search handler with debouncing\n      let searchTimeout;\n      searchInput.addEventListener(&#39;input&#39;, function(e) {\n        clearTimeout(searchTimeout);\n        searchTimeout = setTimeout(() =&gt; performSearch(e.target.value), 300);\n      });\n      \n      function performSearch(query) {\n        if (!query || !searchIndex) {\n          searchResults.classList.add(&#39;hidden&#39;);\n          return;\n        }\n        \n        const results = searchIndex.filter(item =&gt; \n          item.title.toLowerCase().includes(query.toLowerCase()) ||\n          item.content.toLowerCase().includes(query.toLowerCase())\n        ).slice(0, 5);\n        \n        if (results.length &gt; 0) {\n          searchResults.innerHTML = results.map(result =&gt; `\n            &lt;div class=&quot;search-result&quot;&gt;\n              &lt;a href=&quot;${result.url}&quot; class=&quot;search-result-link&quot;&gt;\n                &lt;div class=&quot;search-result-title&quot;&gt;${highlightMatch(result.title, query)}&lt;/div&gt;\n                &lt;div class=&quot;search-result-excerpt&quot;&gt;${highlightMatch(result.excerpt, query)}&lt;/div&gt;\n              &lt;/a&gt;\n            &lt;/div&gt;\n          `).join(&#39;&#39;);\n          searchResults.classList.remove(&#39;hidden&#39;);\n        } else {\n          searchResults.innerHTML = &#39;&lt;div class=&quot;search-no-results&quot;&gt;No results found&lt;/div&gt;&#39;;\n          searchResults.classList.remove(&#39;hidden&#39;);\n        }\n      }\n      \n      function highlightMatch(text, query) {\n        const regex = new RegExp(`(${query})`, &#39;gi&#39;);\n        return text.replace(regex, &#39;&lt;mark&gt;$1&lt;/mark&gt;&#39;);\n      }\n      \n      // Hide results when clicking outside\n      document.addEventListener(&#39;click&#39;, function(e) {\n        if (!searchInput.contains(e.target) &amp;&amp; !searchResults.contains(e.target)) {\n          searchResults.classList.add(&#39;hidden&#39;);\n        }\n      });\n    })();\n    \n    // Smooth scrolling for anchor links\n    document.querySelectorAll(&#39;a[href^=&quot;#&quot;]&#39;).forEach(anchor =&gt; {\n      anchor.addEventListener(&#39;click&#39;, function (e) {\n        e.preventDefault();\n        const target = document.querySelector(this.getAttribute(&#39;href&#39;));\n        if (target) {\n          target.scrollIntoView({ behavior: &#39;smooth&#39; });\n        }\n      });\n    });\n    \n    // Copy code button functionality\n    document.querySelectorAll(&#39;pre code&#39;).forEach(block =&gt; {\n      const button = document.createElement(&#39;button&#39;);\n      button.className = &#39;copy-code-button&#39;;\n      button.textContent = &#39;Copy&#39;;\n      button.setAttribute(&#39;aria-label&#39;, &#39;Copy code to clipboard&#39;);\n      \n      button.addEventListener(&#39;click&#39;, function() {\n        navigator.clipboard.writeText(block.textContent).then(() =&gt; {\n          button.textContent = &#39;Copied!&#39;;\n          setTimeout(() =&gt; button.textContent = &#39;Copy&#39;, 2000);\n        });\n      });\n      \n      block.parentNode.insertBefore(button, block);\n    });\n    \n    // Table of contents highlighting\n    (function() {\n      const tocLinks = document.querySelectorAll(&#39;.toc-link&#39;);\n      const headings = document.querySelectorAll(&#39;h1, h2, h3, h4, h5, h6&#39;);\n      \n      if (tocLinks.length === 0 || headings.length === 0) return;\n      \n      function updateTOC() {\n        let current = null;\n        headings.forEach(heading =&gt; {\n          const rect = heading.getBoundingClientRect();\n          if (rect.top &lt;= 100) {\n            current = heading;\n          }\n        });\n        \n        tocLinks.forEach(link =&gt; {\n          link.classList.remove(&#39;active&#39;);\n          if (current &amp;&amp; link.getAttribute(&#39;href&#39;) === &#39;#&#39; + current.id) {\n            link.classList.add(&#39;active&#39;);\n          }\n        });\n      }\n      \n      window.addEventListener(&#39;scroll&#39;, updateTOC);\n      updateTOC(); // Initial call\n    })();\n  &lt;/script&gt;\n  \n&lt;/body&gt;\n&lt;/html&gt;\n\u003C/code>\u003C/pre>\u003Ch3 id=\"hugo-theme-development\">Hugo Theme Development\u003C/h3>\n\u003Cp>Advanced Hugo theme with powerful templating:\u003C/p>\n\u003Cpre>\u003Ccode class=\"hljs language-go-html-template\">{{/* layouts/_default/documentation.html - Advanced Hugo layout */}}\n&lt;!DOCTYPE html&gt;\n&lt;html lang=&quot;{{ .Site.Language.Lang | default &quot;en&quot; }}&quot;&gt;\n\n{{ partial &quot;head.html&quot; . }}\n\n&lt;body class=&quot;documentation-layout&quot; data-theme=&quot;{{ .Site.Params.theme | default &quot;light&quot; }}&quot;&gt;\n  \n  {{ partial &quot;header.html&quot; . }}\n  \n  &lt;main class=&quot;documentation-main&quot; id=&quot;main-content&quot;&gt;\n    \n    &lt;!-- Sidebar --&gt;\n    &lt;aside class=&quot;documentation-sidebar&quot; id=&quot;sidebar&quot;&gt;\n      \n      &lt;!-- Search --&gt;\n      {{ if .Site.Params.search.enabled }}\n        &lt;div class=&quot;sidebar-search&quot;&gt;\n          &lt;input type=&quot;search&quot; \n                 id=&quot;search-input&quot; \n                 placeholder=&quot;{{ i18n &quot;search_placeholder&quot; | default &quot;Search...&quot; }}&quot;\n                 aria-label=&quot;{{ i18n &quot;search_aria_label&quot; | default &quot;Search documentation&quot; }}&quot;&gt;\n          &lt;div id=&quot;search-results&quot; class=&quot;search-results hidden&quot;&gt;&lt;/div&gt;\n        &lt;/div&gt;\n      {{ end }}\n      \n      &lt;!-- Navigation --&gt;\n      &lt;nav class=&quot;sidebar-nav&quot; aria-label=&quot;Documentation navigation&quot;&gt;\n        \n        {{ $currentPage := . }}\n        {{ $sections := .Site.Sections.ByWeight }}\n        \n        {{ range $sections }}\n          {{ if eq .Type &quot;docs&quot; }}\n            &lt;div class=&quot;nav-section&quot;&gt;\n              &lt;h3 class=&quot;nav-section-title&quot;&gt;\n                &lt;a href=&quot;{{ .Permalink }}&quot;&gt;{{ .Title }}&lt;/a&gt;\n              &lt;/h3&gt;\n              \n              {{ if .Pages }}\n                &lt;ul class=&quot;nav-list&quot;&gt;\n                  {{ range .Pages.ByWeight }}\n                    {{ $isActive := eq $currentPage.RelPermalink .RelPermalink }}\n                    {{ $isParent := hasPrefix $currentPage.RelPermalink .RelPermalink }}\n                    \n                    &lt;li class=&quot;nav-item{{ if $isActive }} nav-item-active{{ end }}{{ if $isParent }} nav-item-parent{{ end }}&quot;&gt;\n                      &lt;a href=&quot;{{ .Permalink }}&quot; \n                         class=&quot;nav-link&quot;\n                         {{ if $isActive }}aria-current=&quot;page&quot;{{ end }}&gt;\n                        {{ .Title }}\n                      &lt;/a&gt;\n                      \n                      &lt;!-- Table of contents for current page --&gt;\n                      {{ if and $isActive .TableOfContents }}\n                        &lt;div class=&quot;nav-toc&quot;&gt;\n                          {{ .TableOfContents }}\n                        &lt;/div&gt;\n                      {{ end }}\n                      \n                      &lt;!-- Subpages --&gt;\n                      {{ if .Pages }}\n                        &lt;ul class=&quot;nav-sublist&quot;&gt;\n                          {{ range .Pages.ByWeight }}\n                            {{ $isSubActive := eq $currentPage.RelPermalink .RelPermalink }}\n                            &lt;li class=&quot;nav-subitem{{ if $isSubActive }} nav-subitem-active{{ end }}&quot;&gt;\n                              &lt;a href=&quot;{{ .Permalink }}&quot; \n                                 class=&quot;nav-sublink&quot;\n                                 {{ if $isSubActive }}aria-current=&quot;page&quot;{{ end }}&gt;\n                                {{ .Title }}\n                              &lt;/a&gt;\n                            &lt;/li&gt;\n                          {{ end }}\n                        &lt;/ul&gt;\n                      {{ end }}\n                      \n                    &lt;/li&gt;\n                  {{ end }}\n                &lt;/ul&gt;\n              {{ end }}\n              \n            &lt;/div&gt;\n          {{ end }}\n        {{ end }}\n        \n      &lt;/nav&gt;\n      \n      &lt;!-- Sidebar footer --&gt;\n      &lt;div class=&quot;sidebar-footer&quot;&gt;\n        {{ if .Site.Params.version }}\n          &lt;div class=&quot;version-info&quot;&gt;\n            Version: {{ .Site.Params.version }}\n          &lt;/div&gt;\n        {{ end }}\n        \n        {{ if .Site.Params.github_repo }}\n          &lt;div class=&quot;github-link&quot;&gt;\n            &lt;a href=&quot;{{ .Site.Params.github_repo }}&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;\n              GitHub Repository\n            &lt;/a&gt;\n          &lt;/div&gt;\n        {{ end }}\n      &lt;/div&gt;\n      \n    &lt;/aside&gt;\n    \n    &lt;!-- Content --&gt;\n    &lt;div class=&quot;documentation-content&quot;&gt;\n      \n      &lt;!-- Breadcrumbs --&gt;\n      {{ if .Site.Params.breadcrumbs }}\n        {{ partial &quot;breadcrumbs.html&quot; . }}\n      {{ end }}\n      \n      &lt;!-- Page header --&gt;\n      &lt;header class=&quot;page-header&quot;&gt;\n        &lt;h1 class=&quot;page-title&quot;&gt;{{ .Title }}&lt;/h1&gt;\n        \n        {{ if .Description }}\n          &lt;p class=&quot;page-description&quot;&gt;{{ .Description }}&lt;/p&gt;\n        {{ end }}\n        \n        &lt;!-- Page metadata --&gt;\n        &lt;div class=&quot;page-meta&quot;&gt;\n          {{ if .Date }}\n            &lt;time class=&quot;page-date&quot; datetime=&quot;{{ .Date.Format &quot;2006-01-02T15:04:05Z07:00&quot; }}&quot;&gt;\n              {{ i18n &quot;last_updated&quot; | default &quot;Last updated:&quot; }} {{ .Date.Format &quot;January 2, 2006&quot; }}\n            &lt;/time&gt;\n          {{ end }}\n          \n          {{ if .ReadingTime }}\n            &lt;span class=&quot;reading-time&quot;&gt;{{ .ReadingTime }} {{ i18n &quot;minutes_read&quot; | default &quot;min read&quot; }}&lt;/span&gt;\n          {{ end }}\n          \n          {{ if .Params.author }}\n            &lt;span class=&quot;page-author&quot;&gt;{{ i18n &quot;by&quot; | default &quot;By&quot; }} {{ .Params.author }}&lt;/span&gt;\n          {{ end }}\n        &lt;/div&gt;\n        \n        &lt;!-- Edit link --&gt;\n        {{ if and .Site.Params.edit_page .File }}\n          &lt;div class=&quot;page-actions&quot;&gt;\n            &lt;a href=&quot;{{ .Site.Params.github_repo }}/edit/{{ .Site.Params.github_branch | default &quot;main&quot; }}/{{ .File.Path }}&quot; \n               class=&quot;edit-link&quot; \n               target=&quot;_blank&quot; \n               rel=&quot;noopener&quot;&gt;\n              {{ i18n &quot;edit_page&quot; | default &quot;Edit this page&quot; }}\n            &lt;/a&gt;\n          &lt;/div&gt;\n        {{ end }}\n      &lt;/header&gt;\n      \n      &lt;!-- Table of contents --&gt;\n      {{ if and .TableOfContents (gt (len .TableOfContents) 50) }}\n        &lt;div class=&quot;table-of-contents&quot;&gt;\n          &lt;details class=&quot;toc-toggle&quot; {{ if .Site.Params.toc_open }}open{{ end }}&gt;\n            &lt;summary&gt;{{ i18n &quot;table_of_contents&quot; | default &quot;Table of Contents&quot; }}&lt;/summary&gt;\n            &lt;nav class=&quot;toc-nav&quot;&gt;\n              {{ .TableOfContents }}\n            &lt;/nav&gt;\n          &lt;/details&gt;\n        &lt;/div&gt;\n      {{ end }}\n      \n      &lt;!-- Content --&gt;\n      &lt;article class=&quot;page-content&quot;&gt;\n        {{ .Content }}\n      &lt;/article&gt;\n      \n      &lt;!-- Tags and categories --&gt;\n      {{ if or .Params.tags .Params.categories }}\n        &lt;footer class=&quot;page-footer&quot;&gt;\n          {{ if .Params.categories }}\n            &lt;div class=&quot;page-categories&quot;&gt;\n              &lt;span class=&quot;meta-label&quot;&gt;{{ i18n &quot;categories&quot; | default &quot;Categories:&quot; }}&lt;/span&gt;\n              {{ range .Params.categories }}\n                &lt;a href=&quot;{{ &quot;categories&quot; | absURL }}/{{ . | urlize }}/&quot; class=&quot;category-link&quot;&gt;{{ . }}&lt;/a&gt;\n              {{ end }}\n            &lt;/div&gt;\n          {{ end }}\n          \n          {{ if .Params.tags }}\n            &lt;div class=&quot;page-tags&quot;&gt;\n              &lt;span class=&quot;meta-label&quot;&gt;{{ i18n &quot;tags&quot; | default &quot;Tags:&quot; }}&lt;/span&gt;\n              {{ range .Params.tags }}\n                &lt;a href=&quot;{{ &quot;tags&quot; | absURL }}/{{ . | urlize }}/&quot; class=&quot;tag-link&quot;&gt;{{ . }}&lt;/a&gt;\n              {{ end }}\n            &lt;/div&gt;\n          {{ end }}\n        &lt;/footer&gt;\n      {{ end }}\n      \n      &lt;!-- Page navigation --&gt;\n      {{ $pages := .Site.Sections.ByWeight }}\n      {{ $currentSection := .Section }}\n      \n      {{ range $pages }}\n        {{ if eq .Type $currentSection }}\n          {{ $sectionPages := .Pages.ByWeight }}\n          {{ range $index, $page := $sectionPages }}\n            {{ if eq $page.RelPermalink $.RelPermalink }}\n              &lt;nav class=&quot;page-navigation&quot; aria-label=&quot;Page navigation&quot;&gt;\n                {{ if gt $index 0 }}\n                  {{ $prevPage := index $sectionPages (sub $index 1) }}\n                  &lt;a href=&quot;{{ $prevPage.Permalink }}&quot; class=&quot;nav-prev&quot;&gt;\n                    &lt;span class=&quot;nav-label&quot;&gt;{{ i18n &quot;previous&quot; | default &quot;Previous&quot; }}&lt;/span&gt;\n                    &lt;span class=&quot;nav-title&quot;&gt;{{ $prevPage.Title }}&lt;/span&gt;\n                  &lt;/a&gt;\n                {{ end }}\n                \n                {{ if lt $index (sub (len $sectionPages) 1) }}\n                  {{ $nextPage := index $sectionPages (add $index 1) }}\n                  &lt;a href=&quot;{{ $nextPage.Permalink }}&quot; class=&quot;nav-next&quot;&gt;\n                    &lt;span class=&quot;nav-label&quot;&gt;{{ i18n &quot;next&quot; | default &quot;Next&quot; }}&lt;/span&gt;\n                    &lt;span class=&quot;nav-title&quot;&gt;{{ $nextPage.Title }}&lt;/span&gt;\n                  &lt;/a&gt;\n                {{ end }}\n              &lt;/nav&gt;\n            {{ end }}\n          {{ end }}\n        {{ end }}\n      {{ end }}\n      \n    &lt;/div&gt;\n    \n  &lt;/main&gt;\n  \n  {{ partial &quot;footer.html&quot; . }}\n  \n  &lt;!-- Search functionality --&gt;\n  {{ if .Site.Params.search.enabled }}\n    &lt;script&gt;\n      // Fuse.js search implementation\n      (async function() {\n        const searchInput = document.getElementById(&#39;search-input&#39;);\n        const searchResults = document.getElementById(&#39;search-results&#39;);\n        \n        if (!searchInput || !searchResults) return;\n        \n        let searchIndex = null;\n        let fuse = null;\n        \n        try {\n          // Load search index\n          const response = await fetch(&#39;{{ &quot;search-index.json&quot; | absURL }}&#39;);\n          searchIndex = await response.json();\n          \n          // Initialize Fuse.js\n          const { default: Fuse } = await import(&#39;{{ &quot;js/fuse.js&quot; | absURL }}&#39;);\n          fuse = new Fuse(searchIndex, {\n            keys: [&#39;title&#39;, &#39;content&#39;, &#39;tags&#39;],\n            threshold: 0.3,\n            includeMatches: true,\n            minMatchCharLength: 2\n          });\n        } catch (error) {\n          console.error(&#39;Search initialization failed:&#39;, error);\n          return;\n        }\n        \n        let searchTimeout;\n        searchInput.addEventListener(&#39;input&#39;, function(e) {\n          clearTimeout(searchTimeout);\n          searchTimeout = setTimeout(() =&gt; performSearch(e.target.value), 300);\n        });\n        \n        function performSearch(query) {\n          if (!query || query.length &lt; 2) {\n            searchResults.classList.add(&#39;hidden&#39;);\n            return;\n          }\n          \n          const results = fuse.search(query).slice(0, 8);\n          \n          if (results.length &gt; 0) {\n            searchResults.innerHTML = results.map(result =&gt; {\n              const item = result.item;\n              const matches = result.matches || [];\n              \n              return `\n                &lt;div class=&quot;search-result&quot;&gt;\n                  &lt;a href=&quot;${item.url}&quot; class=&quot;search-result-link&quot;&gt;\n                    &lt;div class=&quot;search-result-title&quot;&gt;${highlightMatches(item.title, matches)}&lt;/div&gt;\n                    &lt;div class=&quot;search-result-excerpt&quot;&gt;${highlightMatches(item.excerpt || &#39;&#39;, matches)}&lt;/div&gt;\n                    ${item.section ? `&lt;div class=&quot;search-result-section&quot;&gt;${item.section}&lt;/div&gt;` : &#39;&#39;}\n                  &lt;/a&gt;\n                &lt;/div&gt;\n              `;\n            }).join(&#39;&#39;);\n            searchResults.classList.remove(&#39;hidden&#39;);\n          } else {\n            searchResults.innerHTML = &#39;&lt;div class=&quot;search-no-results&quot;&gt;{{ i18n &quot;no_results&quot; | default &quot;No results found&quot; }}&lt;/div&gt;&#39;;\n            searchResults.classList.remove(&#39;hidden&#39;);\n          }\n        }\n        \n        function highlightMatches(text, matches) {\n          let highlightedText = text;\n          matches.forEach(match =&gt; {\n            if (match.key === &#39;title&#39; || match.key === &#39;content&#39;) {\n              match.indices.forEach(([start, end]) =&gt; {\n                const matchedText = text.substring(start, end + 1);\n                highlightedText = highlightedText.replace(matchedText, `&lt;mark&gt;${matchedText}&lt;/mark&gt;`);\n              });\n            }\n          });\n          return highlightedText;\n        }\n        \n        // Hide results when clicking outside\n        document.addEventListener(&#39;click&#39;, function(e) {\n          if (!searchInput.contains(e.target) &amp;&amp; !searchResults.contains(e.target)) {\n            searchResults.classList.add(&#39;hidden&#39;);\n          }\n        });\n      })();\n    &lt;/script&gt;\n  {{ end }}\n  \n  &lt;!-- Theme switching --&gt;\n  {{ if .Site.Params.dark_mode }}\n    &lt;script&gt;\n      (function() {\n        const themeToggle = document.querySelector(&#39;[data-theme-toggle]&#39;);\n        if (!themeToggle) return;\n        \n        const currentTheme = localStorage.getItem(&#39;theme&#39;) || \n                           (window.matchMedia(&#39;(prefers-color-scheme: dark)&#39;).matches ? &#39;dark&#39; : &#39;light&#39;);\n        \n        document.documentElement.setAttribute(&#39;data-theme&#39;, currentTheme);\n        \n        themeToggle.addEventListener(&#39;click&#39;, function() {\n          const currentTheme = document.documentElement.getAttribute(&#39;data-theme&#39;);\n          const newTheme = currentTheme === &#39;dark&#39; ? &#39;light&#39; : &#39;dark&#39;;\n          \n          document.documentElement.setAttribute(&#39;data-theme&#39;, newTheme);\n          localStorage.setItem(&#39;theme&#39;, newTheme);\n        });\n      })();\n    &lt;/script&gt;\n  {{ end }}\n  \n&lt;/body&gt;\n&lt;/html&gt;\n\u003C/code>\u003C/pre>\u003Ch2 id=\"integration-with-documentation-systems\">Integration with Documentation Systems\u003C/h2>\n\u003Cp>Documentation site generators integrate seamlessly with comprehensive content management workflows. When combined with \u003Ca href=\"/blog/markdown-version-control-git-integration-complete-guide\">version control systems and collaboration workflows\u003C/a>, site generators enable automated publishing pipelines that maintain content quality while supporting distributed content creation and editorial processes.\u003C/p>\n\u003Cp>For sophisticated content architectures, site generators work effectively with \u003Ca href=\"/blog/markdown-link-management-cross-referencing-complete-guide\">link management and cross-referencing systems\u003C/a> to create intelligent navigation structures, automated content discovery, and comprehensive information architectures that scale with organizational needs and user requirements.\u003C/p>\n\u003Cp>When building enterprise documentation platforms, site generators complement \u003Ca href=\"/blog/markdown-automation-workflows-complete-guide\">automation workflows and content management systems\u003C/a> by enabling sophisticated build processes, content validation pipelines, and deployment strategies that ensure documentation quality and availability across multiple environments and user contexts.\u003C/p>\n\u003Ch2 id=\"advanced-deployment-strategies\">Advanced Deployment Strategies\u003C/h2>\n\u003Ch3 id=\"multi-environment-deployment-pipeline\">Multi-Environment Deployment Pipeline\u003C/h3>\n\u003Cp>Comprehensive deployment system for documentation sites:\u003C/p>\n\u003Cpre>\u003Ccode class=\"hljs language-yaml\">\u003Cspan class=\"hljs-comment\"># .github/workflows/documentation-deployment.yml\u003C/span>\n\u003Cspan class=\"hljs-attr\">name:\u003C/span> \u003Cspan class=\"hljs-string\">Documentation\u003C/span> \u003Cspan class=\"hljs-string\">Deployment\u003C/span> \u003Cspan class=\"hljs-string\">Pipeline\u003C/span>\n\n\u003Cspan class=\"hljs-attr\">on:\u003C/span>\n  \u003Cspan class=\"hljs-attr\">push:\u003C/span>\n    \u003Cspan class=\"hljs-attr\">branches:\u003C/span> [\u003Cspan class=\"hljs-string\">main\u003C/span>, \u003Cspan class=\"hljs-string\">develop\u003C/span>]\n  \u003Cspan class=\"hljs-attr\">pull_request:\u003C/span>\n    \u003Cspan class=\"hljs-attr\">branches:\u003C/span> [\u003Cspan class=\"hljs-string\">main\u003C/span>]\n\n\u003Cspan class=\"hljs-attr\">env:\u003C/span>\n  \u003Cspan class=\"hljs-attr\">NODE_VERSION:\u003C/span> \u003Cspan class=\"hljs-string\">&#x27;18&#x27;\u003C/span>\n  \u003Cspan class=\"hljs-attr\">RUBY_VERSION:\u003C/span> \u003Cspan class=\"hljs-string\">&#x27;3.0&#x27;\u003C/span>\n  \u003Cspan class=\"hljs-attr\">PYTHON_VERSION:\u003C/span> \u003Cspan class=\"hljs-string\">&#x27;3.9&#x27;\u003C/span>\n\n\u003Cspan class=\"hljs-attr\">jobs:\u003C/span>\n  \u003Cspan class=\"hljs-comment\"># Content validation\u003C/span>\n  \u003Cspan class=\"hljs-attr\">validate-content:\u003C/span>\n    \u003Cspan class=\"hljs-attr\">runs-on:\u003C/span> \u003Cspan class=\"hljs-string\">ubuntu-latest\u003C/span>\n    \n    \u003Cspan class=\"hljs-attr\">steps:\u003C/span>\n    \u003Cspan class=\"hljs-bullet\">-\u003C/span> \u003Cspan class=\"hljs-attr\">uses:\u003C/span> \u003Cspan class=\"hljs-string\">actions/checkout@v4\u003C/span>\n    \n    \u003Cspan class=\"hljs-bullet\">-\u003C/span> \u003Cspan class=\"hljs-attr\">name:\u003C/span> \u003Cspan class=\"hljs-string\">Setup\u003C/span> \u003Cspan class=\"hljs-string\">Node.js\u003C/span>\n      \u003Cspan class=\"hljs-attr\">uses:\u003C/span> \u003Cspan class=\"hljs-string\">actions/setup-node@v4\u003C/span>\n      \u003Cspan class=\"hljs-attr\">with:\u003C/span>\n        \u003Cspan class=\"hljs-attr\">node-version:\u003C/span> \u003Cspan class=\"hljs-string\">${{\u003C/span> \u003Cspan class=\"hljs-string\">env.NODE_VERSION\u003C/span> \u003Cspan class=\"hljs-string\">}}\u003C/span>\n        \u003Cspan class=\"hljs-attr\">cache:\u003C/span> \u003Cspan class=\"hljs-string\">&#x27;npm&#x27;\u003C/span>\n    \n    \u003Cspan class=\"hljs-bullet\">-\u003C/span> \u003Cspan class=\"hljs-attr\">name:\u003C/span> \u003Cspan class=\"hljs-string\">Install\u003C/span> \u003Cspan class=\"hljs-string\">dependencies\u003C/span>\n      \u003Cspan class=\"hljs-attr\">run:\u003C/span> \u003Cspan class=\"hljs-string\">npm\u003C/span> \u003Cspan class=\"hljs-string\">ci\u003C/span>\n    \n    \u003Cspan class=\"hljs-bullet\">-\u003C/span> \u003Cspan class=\"hljs-attr\">name:\u003C/span> \u003Cspan class=\"hljs-string\">Lint\u003C/span> \u003Cspan class=\"hljs-string\">Markdown\u003C/span> \u003Cspan class=\"hljs-string\">files\u003C/span>\n      \u003Cspan class=\"hljs-attr\">run:\u003C/span> \u003Cspan class=\"hljs-string\">npx\u003C/span> \u003Cspan class=\"hljs-string\">markdownlint-cli\u003C/span> \u003Cspan class=\"hljs-string\">content/**/*.md\u003C/span>\n    \n    \u003Cspan class=\"hljs-bullet\">-\u003C/span> \u003Cspan class=\"hljs-attr\">name:\u003C/span> \u003Cspan class=\"hljs-string\">Check\u003C/span> \u003Cspan class=\"hljs-string\">internal\u003C/span> \u003Cspan class=\"hljs-string\">links\u003C/span>\n      \u003Cspan class=\"hljs-attr\">run:\u003C/span> \u003Cspan class=\"hljs-string\">npx\u003C/span> \u003Cspan class=\"hljs-string\">markdown-link-check\u003C/span> \u003Cspan class=\"hljs-string\">content/**/*.md\u003C/span> \u003Cspan class=\"hljs-string\">--config\u003C/span> \u003Cspan class=\"hljs-string\">.markdown-link-check.json\u003C/span>\n    \n    \u003Cspan class=\"hljs-bullet\">-\u003C/span> \u003Cspan class=\"hljs-attr\">name:\u003C/span> \u003Cspan class=\"hljs-string\">Validate\u003C/span> \u003Cspan class=\"hljs-string\">frontmatter\u003C/span>\n      \u003Cspan class=\"hljs-attr\">run:\u003C/span> \u003Cspan class=\"hljs-string\">node\u003C/span> \u003Cspan class=\"hljs-string\">scripts/validate-frontmatter.js\u003C/span>\n    \n    \u003Cspan class=\"hljs-bullet\">-\u003C/span> \u003Cspan class=\"hljs-attr\">name:\u003C/span> \u003Cspan class=\"hljs-string\">Check\u003C/span> \u003Cspan class=\"hljs-string\">for\u003C/span> \u003Cspan class=\"hljs-string\">broken\u003C/span> \u003Cspan class=\"hljs-string\">images\u003C/span>\n      \u003Cspan class=\"hljs-attr\">run:\u003C/span> \u003Cspan class=\"hljs-string\">node\u003C/span> \u003Cspan class=\"hljs-string\">scripts/check-images.js\u003C/span>\n    \n    \u003Cspan class=\"hljs-bullet\">-\u003C/span> \u003Cspan class=\"hljs-attr\">name:\u003C/span> \u003Cspan class=\"hljs-string\">Spell\u003C/span> \u003Cspan class=\"hljs-string\">check\u003C/span>\n      \u003Cspan class=\"hljs-attr\">run:\u003C/span> \u003Cspan class=\"hljs-string\">npx\u003C/span> \u003Cspan class=\"hljs-string\">cspell\u003C/span> \u003Cspan class=\"hljs-string\">&quot;content/**/*.md&quot;\u003C/span>\n\n  \u003Cspan class=\"hljs-comment\"># Build with multiple generators\u003C/span>\n  \u003Cspan class=\"hljs-attr\">build-jekyll:\u003C/span>\n    \u003Cspan class=\"hljs-attr\">needs:\u003C/span> \u003Cspan class=\"hljs-string\">validate-content\u003C/span>\n    \u003Cspan class=\"hljs-attr\">runs-on:\u003C/span> \u003Cspan class=\"hljs-string\">ubuntu-latest\u003C/span>\n    \u003Cspan class=\"hljs-attr\">if:\u003C/span> \u003Cspan class=\"hljs-string\">contains(github.event.head_commit.message,\u003C/span> \u003Cspan class=\"hljs-string\">&#x27;[jekyll]&#x27;\u003C/span>\u003Cspan class=\"hljs-string\">)\u003C/span> \u003Cspan class=\"hljs-string\">||\u003C/span> \u003Cspan class=\"hljs-string\">github.ref\u003C/span> \u003Cspan class=\"hljs-string\">==\u003C/span> \u003Cspan class=\"hljs-string\">&#x27;refs/heads/main&#x27;\u003C/span>\n    \n    \u003Cspan class=\"hljs-attr\">steps:\u003C/span>\n    \u003Cspan class=\"hljs-bullet\">-\u003C/span> \u003Cspan class=\"hljs-attr\">uses:\u003C/span> \u003Cspan class=\"hljs-string\">actions/checkout@v4\u003C/span>\n    \n    \u003Cspan class=\"hljs-bullet\">-\u003C/span> \u003Cspan class=\"hljs-attr\">name:\u003C/span> \u003Cspan class=\"hljs-string\">Setup\u003C/span> \u003Cspan class=\"hljs-string\">Ruby\u003C/span>\n      \u003Cspan class=\"hljs-attr\">uses:\u003C/span> \u003Cspan class=\"hljs-string\">ruby/setup-ruby@v1\u003C/span>\n      \u003Cspan class=\"hljs-attr\">with:\u003C/span>\n        \u003Cspan class=\"hljs-attr\">ruby-version:\u003C/span> \u003Cspan class=\"hljs-string\">${{\u003C/span> \u003Cspan class=\"hljs-string\">env.RUBY_VERSION\u003C/span> \u003Cspan class=\"hljs-string\">}}\u003C/span>\n        \u003Cspan class=\"hljs-attr\">bundler-cache:\u003C/span> \u003Cspan class=\"hljs-literal\">true\u003C/span>\n    \n    \u003Cspan class=\"hljs-bullet\">-\u003C/span> \u003Cspan class=\"hljs-attr\">name:\u003C/span> \u003Cspan class=\"hljs-string\">Build\u003C/span> \u003Cspan class=\"hljs-string\">Jekyll\u003C/span> \u003Cspan class=\"hljs-string\">site\u003C/span>\n      \u003Cspan class=\"hljs-attr\">run:\u003C/span> \u003Cspan class=\"hljs-string\">|\n        bundle exec jekyll build --config _config.yml,_config_production.yml\n\u003C/span>    \n    \u003Cspan class=\"hljs-bullet\">-\u003C/span> \u003Cspan class=\"hljs-attr\">name:\u003C/span> \u003Cspan class=\"hljs-string\">Test\u003C/span> \u003Cspan class=\"hljs-string\">Jekyll\u003C/span> \u003Cspan class=\"hljs-string\">build\u003C/span>\n      \u003Cspan class=\"hljs-attr\">run:\u003C/span> \u003Cspan class=\"hljs-string\">|\n        bundle exec htmlproofer ./_site --disable-external\n\u003C/span>    \n    \u003Cspan class=\"hljs-bullet\">-\u003C/span> \u003Cspan class=\"hljs-attr\">name:\u003C/span> \u003Cspan class=\"hljs-string\">Upload\u003C/span> \u003Cspan class=\"hljs-string\">Jekyll\u003C/span> \u003Cspan class=\"hljs-string\">artifacts\u003C/span>\n      \u003Cspan class=\"hljs-attr\">uses:\u003C/span> \u003Cspan class=\"hljs-string\">actions/upload-artifact@v3\u003C/span>\n      \u003Cspan class=\"hljs-attr\">with:\u003C/span>\n        \u003Cspan class=\"hljs-attr\">name:\u003C/span> \u003Cspan class=\"hljs-string\">jekyll-site\u003C/span>\n        \u003Cspan class=\"hljs-attr\">path:\u003C/span> \u003Cspan class=\"hljs-string\">_site/\u003C/span>\n\n  \u003Cspan class=\"hljs-attr\">build-hugo:\u003C/span>\n    \u003Cspan class=\"hljs-attr\">needs:\u003C/span> \u003Cspan class=\"hljs-string\">validate-content\u003C/span>\n    \u003Cspan class=\"hljs-attr\">runs-on:\u003C/span> \u003Cspan class=\"hljs-string\">ubuntu-latest\u003C/span>\n    \u003Cspan class=\"hljs-attr\">if:\u003C/span> \u003Cspan class=\"hljs-string\">contains(github.event.head_commit.message,\u003C/span> \u003Cspan class=\"hljs-string\">&#x27;[hugo]&#x27;\u003C/span>\u003Cspan class=\"hljs-string\">)\u003C/span> \u003Cspan class=\"hljs-string\">||\u003C/span> \u003Cspan class=\"hljs-string\">github.ref\u003C/span> \u003Cspan class=\"hljs-string\">==\u003C/span> \u003Cspan class=\"hljs-string\">&#x27;refs/heads/main&#x27;\u003C/span>\n    \n    \u003Cspan class=\"hljs-attr\">steps:\u003C/span>\n    \u003Cspan class=\"hljs-bullet\">-\u003C/span> \u003Cspan class=\"hljs-attr\">uses:\u003C/span> \u003Cspan class=\"hljs-string\">actions/checkout@v4\u003C/span>\n      \u003Cspan class=\"hljs-attr\">with:\u003C/span>\n        \u003Cspan class=\"hljs-attr\">submodules:\u003C/span> \u003Cspan class=\"hljs-literal\">true\u003C/span>\n    \n    \u003Cspan class=\"hljs-bullet\">-\u003C/span> \u003Cspan class=\"hljs-attr\">name:\u003C/span> \u003Cspan class=\"hljs-string\">Setup\u003C/span> \u003Cspan class=\"hljs-string\">Hugo\u003C/span>\n      \u003Cspan class=\"hljs-attr\">uses:\u003C/span> \u003Cspan class=\"hljs-string\">peaceiris/actions-hugo@v2\u003C/span>\n      \u003Cspan class=\"hljs-attr\">with:\u003C/span>\n        \u003Cspan class=\"hljs-attr\">hugo-version:\u003C/span> \u003Cspan class=\"hljs-string\">&#x27;latest&#x27;\u003C/span>\n        \u003Cspan class=\"hljs-attr\">extended:\u003C/span> \u003Cspan class=\"hljs-literal\">true\u003C/span>\n    \n    \u003Cspan class=\"hljs-bullet\">-\u003C/span> \u003Cspan class=\"hljs-attr\">name:\u003C/span> \u003Cspan class=\"hljs-string\">Build\u003C/span> \u003Cspan class=\"hljs-string\">Hugo\u003C/span> \u003Cspan class=\"hljs-string\">site\u003C/span>\n      \u003Cspan class=\"hljs-attr\">run:\u003C/span> \u003Cspan class=\"hljs-string\">|\n        hugo --minify --gc --environment production\n\u003C/span>    \n    \u003Cspan class=\"hljs-bullet\">-\u003C/span> \u003Cspan class=\"hljs-attr\">name:\u003C/span> \u003Cspan class=\"hljs-string\">Upload\u003C/span> \u003Cspan class=\"hljs-string\">Hugo\u003C/span> \u003Cspan class=\"hljs-string\">artifacts\u003C/span>\n      \u003Cspan class=\"hljs-attr\">uses:\u003C/span> \u003Cspan class=\"hljs-string\">actions/upload-artifact@v3\u003C/span>\n      \u003Cspan class=\"hljs-attr\">with:\u003C/span>\n        \u003Cspan class=\"hljs-attr\">name:\u003C/span> \u003Cspan class=\"hljs-string\">hugo-site\u003C/span>\n        \u003Cspan class=\"hljs-attr\">path:\u003C/span> \u003Cspan class=\"hljs-string\">public/\u003C/span>\n\n  \u003Cspan class=\"hljs-attr\">build-mkdocs:\u003C/span>\n    \u003Cspan class=\"hljs-attr\">needs:\u003C/span> \u003Cspan class=\"hljs-string\">validate-content\u003C/span>\n    \u003Cspan class=\"hljs-attr\">runs-on:\u003C/span> \u003Cspan class=\"hljs-string\">ubuntu-latest\u003C/span>\n    \u003Cspan class=\"hljs-attr\">if:\u003C/span> \u003Cspan class=\"hljs-string\">contains(github.event.head_commit.message,\u003C/span> \u003Cspan class=\"hljs-string\">&#x27;[mkdocs]&#x27;\u003C/span>\u003Cspan class=\"hljs-string\">)\u003C/span> \u003Cspan class=\"hljs-string\">||\u003C/span> \u003Cspan class=\"hljs-string\">github.ref\u003C/span> \u003Cspan class=\"hljs-string\">==\u003C/span> \u003Cspan class=\"hljs-string\">&#x27;refs/heads/main&#x27;\u003C/span>\n    \n    \u003Cspan class=\"hljs-attr\">steps:\u003C/span>\n    \u003Cspan class=\"hljs-bullet\">-\u003C/span> \u003Cspan class=\"hljs-attr\">uses:\u003C/span> \u003Cspan class=\"hljs-string\">actions/checkout@v4\u003C/span>\n    \n    \u003Cspan class=\"hljs-bullet\">-\u003C/span> \u003Cspan class=\"hljs-attr\">name:\u003C/span> \u003Cspan class=\"hljs-string\">Setup\u003C/span> \u003Cspan class=\"hljs-string\">Python\u003C/span>\n      \u003Cspan class=\"hljs-attr\">uses:\u003C/span> \u003Cspan class=\"hljs-string\">actions/setup-python@v4\u003C/span>\n      \u003Cspan class=\"hljs-attr\">with:\u003C/span>\n        \u003Cspan class=\"hljs-attr\">python-version:\u003C/span> \u003Cspan class=\"hljs-string\">${{\u003C/span> \u003Cspan class=\"hljs-string\">env.PYTHON_VERSION\u003C/span> \u003Cspan class=\"hljs-string\">}}\u003C/span>\n        \u003Cspan class=\"hljs-attr\">cache:\u003C/span> \u003Cspan class=\"hljs-string\">&#x27;pip&#x27;\u003C/span>\n    \n    \u003Cspan class=\"hljs-bullet\">-\u003C/span> \u003Cspan class=\"hljs-attr\">name:\u003C/span> \u003Cspan class=\"hljs-string\">Install\u003C/span> \u003Cspan class=\"hljs-string\">MkDocs\u003C/span> \u003Cspan class=\"hljs-string\">dependencies\u003C/span>\n      \u003Cspan class=\"hljs-attr\">run:\u003C/span> \u003Cspan class=\"hljs-string\">|\n        pip install -r requirements.txt\n\u003C/span>    \n    \u003Cspan class=\"hljs-bullet\">-\u003C/span> \u003Cspan class=\"hljs-attr\">name:\u003C/span> \u003Cspan class=\"hljs-string\">Build\u003C/span> \u003Cspan class=\"hljs-string\">MkDocs\u003C/span> \u003Cspan class=\"hljs-string\">site\u003C/span>\n      \u003Cspan class=\"hljs-attr\">run:\u003C/span> \u003Cspan class=\"hljs-string\">|\n        mkdocs build --strict\n\u003C/span>    \n    \u003Cspan class=\"hljs-bullet\">-\u003C/span> \u003Cspan class=\"hljs-attr\">name:\u003C/span> \u003Cspan class=\"hljs-string\">Upload\u003C/span> \u003Cspan class=\"hljs-string\">MkDocs\u003C/span> \u003Cspan class=\"hljs-string\">artifacts\u003C/span>\n      \u003Cspan class=\"hljs-attr\">uses:\u003C/span> \u003Cspan class=\"hljs-string\">actions/upload-artifact@v3\u003C/span>\n      \u003Cspan class=\"hljs-attr\">with:\u003C/span>\n        \u003Cspan class=\"hljs-attr\">name:\u003C/span> \u003Cspan class=\"hljs-string\">mkdocs-site\u003C/span>\n        \u003Cspan class=\"hljs-attr\">path:\u003C/span> \u003Cspan class=\"hljs-string\">site/\u003C/span>\n\n  \u003Cspan class=\"hljs-attr\">build-docusaurus:\u003C/span>\n    \u003Cspan class=\"hljs-attr\">needs:\u003C/span> \u003Cspan class=\"hljs-string\">validate-content\u003C/span>\n    \u003Cspan class=\"hljs-attr\">runs-on:\u003C/span> \u003Cspan class=\"hljs-string\">ubuntu-latest\u003C/span>\n    \u003Cspan class=\"hljs-attr\">if:\u003C/span> \u003Cspan class=\"hljs-string\">contains(github.event.head_commit.message,\u003C/span> \u003Cspan class=\"hljs-string\">&#x27;[docusaurus]&#x27;\u003C/span>\u003Cspan class=\"hljs-string\">)\u003C/span> \u003Cspan class=\"hljs-string\">||\u003C/span> \u003Cspan class=\"hljs-string\">github.ref\u003C/span> \u003Cspan class=\"hljs-string\">==\u003C/span> \u003Cspan class=\"hljs-string\">&#x27;refs/heads/main&#x27;\u003C/span>\n    \n    \u003Cspan class=\"hljs-attr\">steps:\u003C/span>\n    \u003Cspan class=\"hljs-bullet\">-\u003C/span> \u003Cspan class=\"hljs-attr\">uses:\u003C/span> \u003Cspan class=\"hljs-string\">actions/checkout@v4\u003C/span>\n    \n    \u003Cspan class=\"hljs-bullet\">-\u003C/span> \u003Cspan class=\"hljs-attr\">name:\u003C/span> \u003Cspan class=\"hljs-string\">Setup\u003C/span> \u003Cspan class=\"hljs-string\">Node.js\u003C/span>\n      \u003Cspan class=\"hljs-attr\">uses:\u003C/span> \u003Cspan class=\"hljs-string\">actions/setup-node@v4\u003C/span>\n      \u003Cspan class=\"hljs-attr\">with:\u003C/span>\n        \u003Cspan class=\"hljs-attr\">node-version:\u003C/span> \u003Cspan class=\"hljs-string\">${{\u003C/span> \u003Cspan class=\"hljs-string\">env.NODE_VERSION\u003C/span> \u003Cspan class=\"hljs-string\">}}\u003C/span>\n        \u003Cspan class=\"hljs-attr\">cache:\u003C/span> \u003Cspan class=\"hljs-string\">&#x27;npm&#x27;\u003C/span>\n    \n    \u003Cspan class=\"hljs-bullet\">-\u003C/span> \u003Cspan class=\"hljs-attr\">name:\u003C/span> \u003Cspan class=\"hljs-string\">Install\u003C/span> \u003Cspan class=\"hljs-string\">dependencies\u003C/span>\n      \u003Cspan class=\"hljs-attr\">run:\u003C/span> \u003Cspan class=\"hljs-string\">npm\u003C/span> \u003Cspan class=\"hljs-string\">ci\u003C/span>\n    \n    \u003Cspan class=\"hljs-bullet\">-\u003C/span> \u003Cspan class=\"hljs-attr\">name:\u003C/span> \u003Cspan class=\"hljs-string\">Build\u003C/span> \u003Cspan class=\"hljs-string\">Docusaurus\u003C/span> \u003Cspan class=\"hljs-string\">site\u003C/span>\n      \u003Cspan class=\"hljs-attr\">run:\u003C/span> \u003Cspan class=\"hljs-string\">|\n        npm run build\n\u003C/span>    \n    \u003Cspan class=\"hljs-bullet\">-\u003C/span> \u003Cspan class=\"hljs-attr\">name:\u003C/span> \u003Cspan class=\"hljs-string\">Upload\u003C/span> \u003Cspan class=\"hljs-string\">Docusaurus\u003C/span> \u003Cspan class=\"hljs-string\">artifacts\u003C/span>\n      \u003Cspan class=\"hljs-attr\">uses:\u003C/span> \u003Cspan class=\"hljs-string\">actions/upload-artifact@v3\u003C/span>\n      \u003Cspan class=\"hljs-attr\">with:\u003C/span>\n        \u003Cspan class=\"hljs-attr\">name:\u003C/span> \u003Cspan class=\"hljs-string\">docusaurus-site\u003C/span>\n        \u003Cspan class=\"hljs-attr\">path:\u003C/span> \u003Cspan class=\"hljs-string\">build/\u003C/span>\n\n  \u003Cspan class=\"hljs-comment\"># Performance and accessibility testing\u003C/span>\n  \u003Cspan class=\"hljs-attr\">test-performance:\u003C/span>\n    \u003Cspan class=\"hljs-attr\">needs:\u003C/span> [\u003Cspan class=\"hljs-string\">build-jekyll\u003C/span>, \u003Cspan class=\"hljs-string\">build-hugo\u003C/span>, \u003Cspan class=\"hljs-string\">build-mkdocs\u003C/span>, \u003Cspan class=\"hljs-string\">build-docusaurus\u003C/span>]\n    \u003Cspan class=\"hljs-attr\">runs-on:\u003C/span> \u003Cspan class=\"hljs-string\">ubuntu-latest\u003C/span>\n    \u003Cspan class=\"hljs-attr\">if:\u003C/span> \u003Cspan class=\"hljs-string\">always()\u003C/span> \u003Cspan class=\"hljs-string\">&amp;&amp;\u003C/span> \u003Cspan class=\"hljs-string\">(needs.build-jekyll.result\u003C/span> \u003Cspan class=\"hljs-string\">==\u003C/span> \u003Cspan class=\"hljs-string\">&#x27;success&#x27;\u003C/span> \u003Cspan class=\"hljs-string\">||\u003C/span> \u003Cspan class=\"hljs-string\">needs.build-hugo.result\u003C/span> \u003Cspan class=\"hljs-string\">==\u003C/span> \u003Cspan class=\"hljs-string\">&#x27;success&#x27;\u003C/span> \u003Cspan class=\"hljs-string\">||\u003C/span> \u003Cspan class=\"hljs-string\">needs.build-mkdocs.result\u003C/span> \u003Cspan class=\"hljs-string\">==\u003C/span> \u003Cspan class=\"hljs-string\">&#x27;success&#x27;\u003C/span> \u003Cspan class=\"hljs-string\">||\u003C/span> \u003Cspan class=\"hljs-string\">needs.build-docusaurus.result\u003C/span> \u003Cspan class=\"hljs-string\">==\u003C/span> \u003Cspan class=\"hljs-string\">&#x27;success&#x27;\u003C/span>\u003Cspan class=\"hljs-string\">)\u003C/span>\n    \n    \u003Cspan class=\"hljs-attr\">strategy:\u003C/span>\n      \u003Cspan class=\"hljs-attr\">matrix:\u003C/span>\n        \u003Cspan class=\"hljs-attr\">generator:\u003C/span> [\u003Cspan class=\"hljs-string\">jekyll\u003C/span>, \u003Cspan class=\"hljs-string\">hugo\u003C/span>, \u003Cspan class=\"hljs-string\">mkdocs\u003C/span>, \u003Cspan class=\"hljs-string\">docusaurus\u003C/span>]\n        \n    \u003Cspan class=\"hljs-attr\">steps:\u003C/span>\n    \u003Cspan class=\"hljs-bullet\">-\u003C/span> \u003Cspan class=\"hljs-attr\">uses:\u003C/span> \u003Cspan class=\"hljs-string\">actions/checkout@v4\u003C/span>\n    \n    \u003Cspan class=\"hljs-bullet\">-\u003C/span> \u003Cspan class=\"hljs-attr\">name:\u003C/span> \u003Cspan class=\"hljs-string\">Download\u003C/span> \u003Cspan class=\"hljs-string\">site\u003C/span> \u003Cspan class=\"hljs-string\">artifacts\u003C/span>\n      \u003Cspan class=\"hljs-attr\">uses:\u003C/span> \u003Cspan class=\"hljs-string\">actions/download-artifact@v3\u003C/span>\n      \u003Cspan class=\"hljs-attr\">with:\u003C/span>\n        \u003Cspan class=\"hljs-attr\">name:\u003C/span> \u003Cspan class=\"hljs-string\">${{\u003C/span> \u003Cspan class=\"hljs-string\">matrix.generator\u003C/span> \u003Cspan class=\"hljs-string\">}}-site\u003C/span>\n        \u003Cspan class=\"hljs-attr\">path:\u003C/span> \u003Cspan class=\"hljs-string\">dist/\u003C/span>\n    \n    \u003Cspan class=\"hljs-bullet\">-\u003C/span> \u003Cspan class=\"hljs-attr\">name:\u003C/span> \u003Cspan class=\"hljs-string\">Serve\u003C/span> \u003Cspan class=\"hljs-string\">site\u003C/span> \u003Cspan class=\"hljs-string\">locally\u003C/span>\n      \u003Cspan class=\"hljs-attr\">run:\u003C/span> \u003Cspan class=\"hljs-string\">|\n        npx serve dist -p 3000 &amp;\n        sleep 5\n\u003C/span>    \n    \u003Cspan class=\"hljs-bullet\">-\u003C/span> \u003Cspan class=\"hljs-attr\">name:\u003C/span> \u003Cspan class=\"hljs-string\">Run\u003C/span> \u003Cspan class=\"hljs-string\">Lighthouse\u003C/span> \u003Cspan class=\"hljs-string\">CI\u003C/span>\n      \u003Cspan class=\"hljs-attr\">uses:\u003C/span> \u003Cspan class=\"hljs-string\">treosh/lighthouse-ci-action@v9\u003C/span>\n      \u003Cspan class=\"hljs-attr\">with:\u003C/span>\n        \u003Cspan class=\"hljs-attr\">configPath:\u003C/span> \u003Cspan class=\"hljs-string\">&#x27;.lighthouserc.js&#x27;\u003C/span>\n        \u003Cspan class=\"hljs-attr\">uploadArtifacts:\u003C/span> \u003Cspan class=\"hljs-literal\">true\u003C/span>\n        \u003Cspan class=\"hljs-attr\">temporaryPublicStorage:\u003C/span> \u003Cspan class=\"hljs-literal\">true\u003C/span>\n    \n    \u003Cspan class=\"hljs-bullet\">-\u003C/span> \u003Cspan class=\"hljs-attr\">name:\u003C/span> \u003Cspan class=\"hljs-string\">Test\u003C/span> \u003Cspan class=\"hljs-string\">accessibility\u003C/span>\n      \u003Cspan class=\"hljs-attr\">run:\u003C/span> \u003Cspan class=\"hljs-string\">|\n        npx pa11y-ci --sitemap http://localhost:3000/sitemap.xml --threshold 5\n\u003C/span>\n  \u003Cspan class=\"hljs-comment\"># Deploy to staging\u003C/span>\n  \u003Cspan class=\"hljs-attr\">deploy-staging:\u003C/span>\n    \u003Cspan class=\"hljs-attr\">needs:\u003C/span> [\u003Cspan class=\"hljs-string\">build-jekyll\u003C/span>, \u003Cspan class=\"hljs-string\">build-hugo\u003C/span>, \u003Cspan class=\"hljs-string\">build-mkdocs\u003C/span>, \u003Cspan class=\"hljs-string\">build-docusaurus\u003C/span>]\n    \u003Cspan class=\"hljs-attr\">runs-on:\u003C/span> \u003Cspan class=\"hljs-string\">ubuntu-latest\u003C/span>\n    \u003Cspan class=\"hljs-attr\">if:\u003C/span> \u003Cspan class=\"hljs-string\">github.ref\u003C/span> \u003Cspan class=\"hljs-string\">==\u003C/span> \u003Cspan class=\"hljs-string\">&#x27;refs/heads/develop&#x27;\u003C/span>\n    \u003Cspan class=\"hljs-attr\">environment:\u003C/span> \u003Cspan class=\"hljs-string\">staging\u003C/span>\n    \n    \u003Cspan class=\"hljs-attr\">steps:\u003C/span>\n    \u003Cspan class=\"hljs-bullet\">-\u003C/span> \u003Cspan class=\"hljs-attr\">name:\u003C/span> \u003Cspan class=\"hljs-string\">Determine\u003C/span> \u003Cspan class=\"hljs-string\">primary\u003C/span> \u003Cspan class=\"hljs-string\">generator\u003C/span>\n      \u003Cspan class=\"hljs-attr\">id:\u003C/span> \u003Cspan class=\"hljs-string\">generator\u003C/span>\n      \u003Cspan class=\"hljs-attr\">run:\u003C/span> \u003Cspan class=\"hljs-string\">|\n        if [[ &quot;${{ needs.build-docusaurus.result }}&quot; == &quot;success&quot; ]]; then\n          echo &quot;name=docusaurus&quot; &gt;&gt; $GITHUB_OUTPUT\n        elif [[ &quot;${{ needs.build-hugo.result }}&quot; == &quot;success&quot; ]]; then\n          echo &quot;name=hugo&quot; &gt;&gt; $GITHUB_OUTPUT\n        elif [[ &quot;${{ needs.build-mkdocs.result }}&quot; == &quot;success&quot; ]]; then\n          echo &quot;name=mkdocs&quot; &gt;&gt; $GITHUB_OUTPUT\n        else\n          echo &quot;name=jekyll&quot; &gt;&gt; $GITHUB_OUTPUT\n        fi\n\u003C/span>    \n    \u003Cspan class=\"hljs-bullet\">-\u003C/span> \u003Cspan class=\"hljs-attr\">name:\u003C/span> \u003Cspan class=\"hljs-string\">Download\u003C/span> \u003Cspan class=\"hljs-string\">site\u003C/span> \u003Cspan class=\"hljs-string\">artifacts\u003C/span>\n      \u003Cspan class=\"hljs-attr\">uses:\u003C/span> \u003Cspan class=\"hljs-string\">actions/download-artifact@v3\u003C/span>\n      \u003Cspan class=\"hljs-attr\">with:\u003C/span>\n        \u003Cspan class=\"hljs-attr\">name:\u003C/span> \u003Cspan class=\"hljs-string\">${{\u003C/span> \u003Cspan class=\"hljs-string\">steps.generator.outputs.name\u003C/span> \u003Cspan class=\"hljs-string\">}}-site\u003C/span>\n        \u003Cspan class=\"hljs-attr\">path:\u003C/span> \u003Cspan class=\"hljs-string\">dist/\u003C/span>\n    \n    \u003Cspan class=\"hljs-bullet\">-\u003C/span> \u003Cspan class=\"hljs-attr\">name:\u003C/span> \u003Cspan class=\"hljs-string\">Deploy\u003C/span> \u003Cspan class=\"hljs-string\">to\u003C/span> \u003Cspan class=\"hljs-string\">Netlify\u003C/span> \u003Cspan class=\"hljs-string\">staging\u003C/span>\n      \u003Cspan class=\"hljs-attr\">uses:\u003C/span> \u003Cspan class=\"hljs-string\">nwtgck/actions-netlify@v2\u003C/span>\n      \u003Cspan class=\"hljs-attr\">with:\u003C/span>\n        \u003Cspan class=\"hljs-attr\">publish-dir:\u003C/span> \u003Cspan class=\"hljs-string\">&#x27;./dist&#x27;\u003C/span>\n        \u003Cspan class=\"hljs-attr\">production-branch:\u003C/span> \u003Cspan class=\"hljs-string\">main\u003C/span>\n        \u003Cspan class=\"hljs-attr\">github-token:\u003C/span> \u003Cspan class=\"hljs-string\">${{\u003C/span> \u003Cspan class=\"hljs-string\">secrets.GITHUB_TOKEN\u003C/span> \u003Cspan class=\"hljs-string\">}}\u003C/span>\n        \u003Cspan class=\"hljs-attr\">deploy-message:\u003C/span> \u003Cspan class=\"hljs-string\">&quot;Deploy from GitHub Actions - $\u003Cspan class=\"hljs-template-variable\">{{ github.sha }}\u003C/span>&quot;\u003C/span>\n        \u003Cspan class=\"hljs-attr\">enable-pull-request-comment:\u003C/span> \u003Cspan class=\"hljs-literal\">true\u003C/span>\n        \u003Cspan class=\"hljs-attr\">enable-commit-comment:\u003C/span> \u003Cspan class=\"hljs-literal\">true\u003C/span>\n      \u003Cspan class=\"hljs-attr\">env:\u003C/span>\n        \u003Cspan class=\"hljs-attr\">NETLIFY_AUTH_TOKEN:\u003C/span> \u003Cspan class=\"hljs-string\">${{\u003C/span> \u003Cspan class=\"hljs-string\">secrets.NETLIFY_AUTH_TOKEN\u003C/span> \u003Cspan class=\"hljs-string\">}}\u003C/span>\n        \u003Cspan class=\"hljs-attr\">NETLIFY_SITE_ID:\u003C/span> \u003Cspan class=\"hljs-string\">${{\u003C/span> \u003Cspan class=\"hljs-string\">secrets.NETLIFY_STAGING_SITE_ID\u003C/span> \u003Cspan class=\"hljs-string\">}}\u003C/span>\n\n  \u003Cspan class=\"hljs-comment\"># Deploy to production\u003C/span>\n  \u003Cspan class=\"hljs-attr\">deploy-production:\u003C/span>\n    \u003Cspan class=\"hljs-attr\">needs:\u003C/span> [\u003Cspan class=\"hljs-string\">test-performance\u003C/span>]\n    \u003Cspan class=\"hljs-attr\">runs-on:\u003C/span> \u003Cspan class=\"hljs-string\">ubuntu-latest\u003C/span>\n    \u003Cspan class=\"hljs-attr\">if:\u003C/span> \u003Cspan class=\"hljs-string\">github.ref\u003C/span> \u003Cspan class=\"hljs-string\">==\u003C/span> \u003Cspan class=\"hljs-string\">&#x27;refs/heads/main&#x27;\u003C/span>\n    \u003Cspan class=\"hljs-attr\">environment:\u003C/span> \u003Cspan class=\"hljs-string\">production\u003C/span>\n    \n    \u003Cspan class=\"hljs-attr\">steps:\u003C/span>\n    \u003Cspan class=\"hljs-bullet\">-\u003C/span> \u003Cspan class=\"hljs-attr\">name:\u003C/span> \u003Cspan class=\"hljs-string\">Determine\u003C/span> \u003Cspan class=\"hljs-string\">primary\u003C/span> \u003Cspan class=\"hljs-string\">generator\u003C/span>\n      \u003Cspan class=\"hljs-attr\">id:\u003C/span> \u003Cspan class=\"hljs-string\">generator\u003C/span>\n      \u003Cspan class=\"hljs-attr\">run:\u003C/span> \u003Cspan class=\"hljs-string\">|\n        # Production deployment logic similar to staging\n        echo &quot;name=docusaurus&quot; &gt;&gt; $GITHUB_OUTPUT\n\u003C/span>    \n    \u003Cspan class=\"hljs-bullet\">-\u003C/span> \u003Cspan class=\"hljs-attr\">name:\u003C/span> \u003Cspan class=\"hljs-string\">Download\u003C/span> \u003Cspan class=\"hljs-string\">site\u003C/span> \u003Cspan class=\"hljs-string\">artifacts\u003C/span>\n      \u003Cspan class=\"hljs-attr\">uses:\u003C/span> \u003Cspan class=\"hljs-string\">actions/download-artifact@v3\u003C/span>\n      \u003Cspan class=\"hljs-attr\">with:\u003C/span>\n        \u003Cspan class=\"hljs-attr\">name:\u003C/span> \u003Cspan class=\"hljs-string\">${{\u003C/span> \u003Cspan class=\"hljs-string\">steps.generator.outputs.name\u003C/span> \u003Cspan class=\"hljs-string\">}}-site\u003C/span>\n        \u003Cspan class=\"hljs-attr\">path:\u003C/span> \u003Cspan class=\"hljs-string\">dist/\u003C/span>\n    \n    \u003Cspan class=\"hljs-bullet\">-\u003C/span> \u003Cspan class=\"hljs-attr\">name:\u003C/span> \u003Cspan class=\"hljs-string\">Deploy\u003C/span> \u003Cspan class=\"hljs-string\">to\u003C/span> \u003Cspan class=\"hljs-string\">production\u003C/span>\n      \u003Cspan class=\"hljs-attr\">run:\u003C/span> \u003Cspan class=\"hljs-string\">|\n        # Multi-platform deployment\n        echo &quot;Deploying to production...&quot;\n\u003C/span>        \n        \u003Cspan class=\"hljs-comment\"># Deploy to Netlify\u003C/span>\n        \u003Cspan class=\"hljs-string\">npx\u003C/span> \u003Cspan class=\"hljs-string\">netlify-cli\u003C/span> \u003Cspan class=\"hljs-string\">deploy\u003C/span> \u003Cspan class=\"hljs-string\">--prod\u003C/span> \u003Cspan class=\"hljs-string\">--dir=dist\u003C/span>\n        \n        \u003Cspan class=\"hljs-comment\"># Deploy to AWS S3 + CloudFront\u003C/span>\n        \u003Cspan class=\"hljs-string\">aws\u003C/span> \u003Cspan class=\"hljs-string\">s3\u003C/span> \u003Cspan class=\"hljs-string\">sync\u003C/span> \u003Cspan class=\"hljs-string\">dist/\u003C/span> \u003Cspan class=\"hljs-string\">s3://${{\u003C/span> \u003Cspan class=\"hljs-string\">secrets.S3_BUCKET\u003C/span> \u003Cspan class=\"hljs-string\">}}\u003C/span> \u003Cspan class=\"hljs-string\">--delete\u003C/span>\n        \u003Cspan class=\"hljs-string\">aws\u003C/span> \u003Cspan class=\"hljs-string\">cloudfront\u003C/span> \u003Cspan class=\"hljs-string\">create-invalidation\u003C/span> \u003Cspan class=\"hljs-string\">--distribution-id\u003C/span> \u003Cspan class=\"hljs-string\">${{\u003C/span> \u003Cspan class=\"hljs-string\">secrets.CLOUDFRONT_DISTRIBUTION_ID\u003C/span> \u003Cspan class=\"hljs-string\">}}\u003C/span> \u003Cspan class=\"hljs-string\">--paths\u003C/span> \u003Cspan class=\"hljs-string\">&quot;/*&quot;\u003C/span>\n        \n        \u003Cspan class=\"hljs-comment\"># Deploy to Vercel\u003C/span>\n        \u003Cspan class=\"hljs-string\">npx\u003C/span> \u003Cspan class=\"hljs-string\">vercel\u003C/span> \u003Cspan class=\"hljs-string\">--prod\u003C/span> \u003Cspan class=\"hljs-string\">--confirm\u003C/span>\n      \u003Cspan class=\"hljs-attr\">env:\u003C/span>\n        \u003Cspan class=\"hljs-attr\">NETLIFY_AUTH_TOKEN:\u003C/span> \u003Cspan class=\"hljs-string\">${{\u003C/span> \u003Cspan class=\"hljs-string\">secrets.NETLIFY_AUTH_TOKEN\u003C/span> \u003Cspan class=\"hljs-string\">}}\u003C/span>\n        \u003Cspan class=\"hljs-attr\">NETLIFY_SITE_ID:\u003C/span> \u003Cspan class=\"hljs-string\">${{\u003C/span> \u003Cspan class=\"hljs-string\">secrets.NETLIFY_SITE_ID\u003C/span> \u003Cspan class=\"hljs-string\">}}\u003C/span>\n        \u003Cspan class=\"hljs-attr\">AWS_ACCESS_KEY_ID:\u003C/span> \u003Cspan class=\"hljs-string\">${{\u003C/span> \u003Cspan class=\"hljs-string\">secrets.AWS_ACCESS_KEY_ID\u003C/span> \u003Cspan class=\"hljs-string\">}}\u003C/span>\n        \u003Cspan class=\"hljs-attr\">AWS_SECRET_ACCESS_KEY:\u003C/span> \u003Cspan class=\"hljs-string\">${{\u003C/span> \u003Cspan class=\"hljs-string\">secrets.AWS_SECRET_ACCESS_KEY\u003C/span> \u003Cspan class=\"hljs-string\">}}\u003C/span>\n        \u003Cspan class=\"hljs-attr\">VERCEL_TOKEN:\u003C/span> \u003Cspan class=\"hljs-string\">${{\u003C/span> \u003Cspan class=\"hljs-string\">secrets.VERCEL_TOKEN\u003C/span> \u003Cspan class=\"hljs-string\">}}\u003C/span>\n        \u003Cspan class=\"hljs-attr\">VERCEL_ORG_ID:\u003C/span> \u003Cspan class=\"hljs-string\">${{\u003C/span> \u003Cspan class=\"hljs-string\">secrets.VERCEL_ORG_ID\u003C/span> \u003Cspan class=\"hljs-string\">}}\u003C/span>\n        \u003Cspan class=\"hljs-attr\">VERCEL_PROJECT_ID:\u003C/span> \u003Cspan class=\"hljs-string\">${{\u003C/span> \u003Cspan class=\"hljs-string\">secrets.VERCEL_PROJECT_ID\u003C/span> \u003Cspan class=\"hljs-string\">}}\u003C/span>\n    \n    \u003Cspan class=\"hljs-bullet\">-\u003C/span> \u003Cspan class=\"hljs-attr\">name:\u003C/span> \u003Cspan class=\"hljs-string\">Update\u003C/span> \u003Cspan class=\"hljs-string\">search\u003C/span> \u003Cspan class=\"hljs-string\">index\u003C/span>\n      \u003Cspan class=\"hljs-attr\">run:\u003C/span> \u003Cspan class=\"hljs-string\">|\n        # Update Algolia search index\n        node scripts/update-search-index.js\n\u003C/span>      \u003Cspan class=\"hljs-attr\">env:\u003C/span>\n        \u003Cspan class=\"hljs-attr\">ALGOLIA_APP_ID:\u003C/span> \u003Cspan class=\"hljs-string\">${{\u003C/span> \u003Cspan class=\"hljs-string\">secrets.ALGOLIA_APP_ID\u003C/span> \u003Cspan class=\"hljs-string\">}}\u003C/span>\n        \u003Cspan class=\"hljs-attr\">ALGOLIA_ADMIN_API_KEY:\u003C/span> \u003Cspan class=\"hljs-string\">${{\u003C/span> \u003Cspan class=\"hljs-string\">secrets.ALGOLIA_ADMIN_API_KEY\u003C/span> \u003Cspan class=\"hljs-string\">}}\u003C/span>\n    \n    \u003Cspan class=\"hljs-bullet\">-\u003C/span> \u003Cspan class=\"hljs-attr\">name:\u003C/span> \u003Cspan class=\"hljs-string\">Notify\u003C/span> \u003Cspan class=\"hljs-string\">team\u003C/span>\n      \u003Cspan class=\"hljs-attr\">uses:\u003C/span> \u003Cspan class=\"hljs-string\">8398a7/action-slack@v3\u003C/span>\n      \u003Cspan class=\"hljs-attr\">with:\u003C/span>\n        \u003Cspan class=\"hljs-attr\">status:\u003C/span> \u003Cspan class=\"hljs-string\">${{\u003C/span> \u003Cspan class=\"hljs-string\">job.status\u003C/span> \u003Cspan class=\"hljs-string\">}}\u003C/span>\n        \u003Cspan class=\"hljs-attr\">channel:\u003C/span> \u003Cspan class=\"hljs-string\">&#x27;#docs-team&#x27;\u003C/span>\n        \u003Cspan class=\"hljs-attr\">text:\u003C/span> \u003Cspan class=\"hljs-string\">|\n          Documentation site deployed successfully! 🎉\n          Generator: ${{ steps.generator.outputs.name }}\n          URL: https://docs.example.com\n          Commit: ${{ github.sha }}\n\u003C/span>      \u003Cspan class=\"hljs-attr\">env:\u003C/span>\n        \u003Cspan class=\"hljs-attr\">SLACK_WEBHOOK_URL:\u003C/span> \u003Cspan class=\"hljs-string\">${{\u003C/span> \u003Cspan class=\"hljs-string\">secrets.SLACK_WEBHOOK\u003C/span> \u003Cspan class=\"hljs-string\">}}\u003C/span>\n\n  \u003Cspan class=\"hljs-comment\"># Cleanup and reporting\u003C/span>\n  \u003Cspan class=\"hljs-attr\">cleanup:\u003C/span>\n    \u003Cspan class=\"hljs-attr\">needs:\u003C/span> [\u003Cspan class=\"hljs-string\">deploy-production\u003C/span>, \u003Cspan class=\"hljs-string\">deploy-staging\u003C/span>]\n    \u003Cspan class=\"hljs-attr\">runs-on:\u003C/span> \u003Cspan class=\"hljs-string\">ubuntu-latest\u003C/span>\n    \u003Cspan class=\"hljs-attr\">if:\u003C/span> \u003Cspan class=\"hljs-string\">always()\u003C/span>\n    \n    \u003Cspan class=\"hljs-attr\">steps:\u003C/span>\n    \u003Cspan class=\"hljs-bullet\">-\u003C/span> \u003Cspan class=\"hljs-attr\">name:\u003C/span> \u003Cspan class=\"hljs-string\">Generate\u003C/span> \u003Cspan class=\"hljs-string\">deployment\u003C/span> \u003Cspan class=\"hljs-string\">report\u003C/span>\n      \u003Cspan class=\"hljs-attr\">run:\u003C/span> \u003Cspan class=\"hljs-string\">|\n        echo &quot;# Deployment Report&quot; &gt; deployment-report.md\n        echo &quot;Date: $(date)&quot; &gt;&gt; deployment-report.md\n        echo &quot;Branch: ${{ github.ref_name }}&quot; &gt;&gt; deployment-report.md\n        echo &quot;Commit: ${{ github.sha }}&quot; &gt;&gt; deployment-report.md\n        echo &quot;&quot; &gt;&gt; deployment-report.md\n\u003C/span>        \n        \u003Cspan class=\"hljs-string\">echo\u003C/span> \u003Cspan class=\"hljs-string\">&quot;## Build Results&quot;\u003C/span> \u003Cspan class=\"hljs-string\">&gt;&gt;\u003C/span> \u003Cspan class=\"hljs-string\">deployment-report.md\u003C/span>\n        \u003Cspan class=\"hljs-string\">echo\u003C/span> \u003Cspan class=\"hljs-string\">&quot;- Jekyll: $\u003Cspan class=\"hljs-template-variable\">{{ needs.build-jekyll.result }}\u003C/span>&quot;\u003C/span> \u003Cspan class=\"hljs-string\">&gt;&gt;\u003C/span> \u003Cspan class=\"hljs-string\">deployment-report.md\u003C/span>\n        \u003Cspan class=\"hljs-string\">echo\u003C/span> \u003Cspan class=\"hljs-string\">&quot;- Hugo: $\u003Cspan class=\"hljs-template-variable\">{{ needs.build-hugo.result }}\u003C/span>&quot;\u003C/span> \u003Cspan class=\"hljs-string\">&gt;&gt;\u003C/span> \u003Cspan class=\"hljs-string\">deployment-report.md\u003C/span>\n        \u003Cspan class=\"hljs-string\">echo\u003C/span> \u003Cspan class=\"hljs-string\">&quot;- MkDocs: $\u003Cspan class=\"hljs-template-variable\">{{ needs.build-mkdocs.result }}\u003C/span>&quot;\u003C/span> \u003Cspan class=\"hljs-string\">&gt;&gt;\u003C/span> \u003Cspan class=\"hljs-string\">deployment-report.md\u003C/span>\n        \u003Cspan class=\"hljs-string\">echo\u003C/span> \u003Cspan class=\"hljs-string\">&quot;- Docusaurus: $\u003Cspan class=\"hljs-template-variable\">{{ needs.build-docusaurus.result }}\u003C/span>&quot;\u003C/span> \u003Cspan class=\"hljs-string\">&gt;&gt;\u003C/span> \u003Cspan class=\"hljs-string\">deployment-report.md\u003C/span>\n        \u003Cspan class=\"hljs-string\">echo\u003C/span> \u003Cspan class=\"hljs-string\">&quot;&quot;\u003C/span> \u003Cspan class=\"hljs-string\">&gt;&gt;\u003C/span> \u003Cspan class=\"hljs-string\">deployment-report.md\u003C/span>\n        \n        \u003Cspan class=\"hljs-string\">echo\u003C/span> \u003Cspan class=\"hljs-string\">&quot;## Deployment Status&quot;\u003C/span> \u003Cspan class=\"hljs-string\">&gt;&gt;\u003C/span> \u003Cspan class=\"hljs-string\">deployment-report.md\u003C/span>\n        \u003Cspan class=\"hljs-string\">echo\u003C/span> \u003Cspan class=\"hljs-string\">&quot;- Staging: $\u003Cspan class=\"hljs-template-variable\">{{ needs.deploy-staging.result }}\u003C/span>&quot;\u003C/span> \u003Cspan class=\"hljs-string\">&gt;&gt;\u003C/span> \u003Cspan class=\"hljs-string\">deployment-report.md\u003C/span>\n        \u003Cspan class=\"hljs-string\">echo\u003C/span> \u003Cspan class=\"hljs-string\">&quot;- Production: $\u003Cspan class=\"hljs-template-variable\">{{ needs.deploy-production.result }}\u003C/span>&quot;\u003C/span> \u003Cspan class=\"hljs-string\">&gt;&gt;\u003C/span> \u003Cspan class=\"hljs-string\">deployment-report.md\u003C/span>\n    \n    \u003Cspan class=\"hljs-bullet\">-\u003C/span> \u003Cspan class=\"hljs-attr\">name:\u003C/span> \u003Cspan class=\"hljs-string\">Upload\u003C/span> \u003Cspan class=\"hljs-string\">deployment\u003C/span> \u003Cspan class=\"hljs-string\">report\u003C/span>\n      \u003Cspan class=\"hljs-attr\">uses:\u003C/span> \u003Cspan class=\"hljs-string\">actions/upload-artifact@v3\u003C/span>\n      \u003Cspan class=\"hljs-attr\">with:\u003C/span>\n        \u003Cspan class=\"hljs-attr\">name:\u003C/span> \u003Cspan class=\"hljs-string\">deployment-report\u003C/span>\n        \u003Cspan class=\"hljs-attr\">path:\u003C/span> \u003Cspan class=\"hljs-string\">deployment-report.md\u003C/span>\n\u003C/code>\u003C/pre>\u003Ch2 id=\"troubleshooting-common-issues\">Troubleshooting Common Issues\u003C/h2>\n\u003Ch3 id=\"generator-specific-problems\">Generator-Specific Problems\u003C/h3>\n\u003Cp>\u003Cstrong>Problem\u003C/strong>: Jekyll build fails with dependency conflicts\u003Cbr>\u003Cstrong>Solution\u003C/strong>:\u003C/p>\n\u003Cpre>\u003Ccode class=\"hljs language-bash\">\u003Cspan class=\"hljs-comment\"># Clear gem cache and reinstall\u003C/span>\nbundle clean --force\n\u003Cspan class=\"hljs-built_in\">rm\u003C/span> Gemfile.lock\nbundle install\n\n\u003Cspan class=\"hljs-comment\"># Use specific Ruby version\u003C/span>\nrbenv install 3.0.0\nrbenv \u003Cspan class=\"hljs-built_in\">local\u003C/span> 3.0.0\nbundle install\n\u003C/code>\u003C/pre>\u003Cp>\u003Cstrong>Problem\u003C/strong>: Hugo build times are slow with large sites\u003Cbr>\u003Cstrong>Solution\u003C/strong>:\u003C/p>\n\u003Cpre>\u003Ccode class=\"hljs language-yaml\">\u003Cspan class=\"hljs-comment\"># config.yaml - Hugo optimization\u003C/span>\n\u003Cspan class=\"hljs-attr\">build:\u003C/span>\n  \u003Cspan class=\"hljs-attr\">useResourceCacheWhen:\u003C/span> \u003Cspan class=\"hljs-string\">always\u003C/span>\n\n\u003Cspan class=\"hljs-attr\">imaging:\u003C/span>\n  \u003Cspan class=\"hljs-attr\">resampleFilter:\u003C/span> \u003Cspan class=\"hljs-string\">&quot;CatmullRom&quot;\u003C/span>\n  \u003Cspan class=\"hljs-attr\">quality:\u003C/span> \u003Cspan class=\"hljs-number\">85\u003C/span>\n  \u003Cspan class=\"hljs-attr\">anchor:\u003C/span> \u003Cspan class=\"hljs-string\">&quot;smart&quot;\u003C/span>\n\n\u003Cspan class=\"hljs-attr\">minify:\u003C/span>\n  \u003Cspan class=\"hljs-attr\">disableHTML:\u003C/span> \u003Cspan class=\"hljs-literal\">false\u003C/span>\n  \u003Cspan class=\"hljs-attr\">disableCSS:\u003C/span> \u003Cspan class=\"hljs-literal\">false\u003C/span>\n  \u003Cspan class=\"hljs-attr\">disableJS:\u003C/span> \u003Cspan class=\"hljs-literal\">false\u003C/span>\n  \u003Cspan class=\"hljs-attr\">disableSVG:\u003C/span> \u003Cspan class=\"hljs-literal\">false\u003C/span>\n\n\u003Cspan class=\"hljs-attr\">caches:\u003C/span>\n  \u003Cspan class=\"hljs-attr\">images:\u003C/span>\n    \u003Cspan class=\"hljs-attr\">dir:\u003C/span> \u003Cspan class=\"hljs-string\">&quot;:cacheDir/images&quot;\u003C/span>\n    \u003Cspan class=\"hljs-attr\">maxAge:\u003C/span> \u003Cspan class=\"hljs-string\">&quot;24h&quot;\u003C/span>\n  \u003Cspan class=\"hljs-attr\">assets:\u003C/span>\n    \u003Cspan class=\"hljs-attr\">dir:\u003C/span> \u003Cspan class=\"hljs-string\">&quot;:cacheDir/assets&quot;\u003C/span>  \n    \u003Cspan class=\"hljs-attr\">maxAge:\u003C/span> \u003Cspan class=\"hljs-string\">&quot;24h&quot;\u003C/span>\n\u003C/code>\u003C/pre>\u003Cp>\u003Cstrong>Problem\u003C/strong>: MkDocs search not working properly\u003Cbr>\u003Cstrong>Solution\u003C/strong>:\u003C/p>\n\u003Cpre>\u003Ccode class=\"hljs language-yaml\">\u003Cspan class=\"hljs-comment\"># mkdocs.yml - Search configuration\u003C/span>\n\u003Cspan class=\"hljs-attr\">plugins:\u003C/span>\n  \u003Cspan class=\"hljs-bullet\">-\u003C/span> \u003Cspan class=\"hljs-attr\">search:\u003C/span>\n      \u003Cspan class=\"hljs-attr\">separator:\u003C/span> \u003Cspan class=\"hljs-string\">&#x27;[\\s\\-\\.]+&#x27;\u003C/span>\n      \u003Cspan class=\"hljs-attr\">lang:\u003C/span> \u003Cspan class=\"hljs-string\">en\u003C/span>\n      \u003Cspan class=\"hljs-attr\">prebuild_index:\u003C/span> \u003Cspan class=\"hljs-literal\">true\u003C/span>\n      \u003Cspan class=\"hljs-attr\">indexing:\u003C/span> \u003Cspan class=\"hljs-string\">&#x27;full&#x27;\u003C/span>\n\n\u003Cspan class=\"hljs-comment\"># Requirements.txt\u003C/span>\n\u003Cspan class=\"hljs-string\">mkdocs&gt;=1.4.0\u003C/span>\n\u003Cspan class=\"hljs-string\">mkdocs-material&gt;=8.5.0\u003C/span>\n\u003Cspan class=\"hljs-string\">mkdocs-material[imaging]&gt;=8.5.0\u003C/span>\n\u003C/code>\u003C/pre>\u003Ch2 id=\"conclusion\">Conclusion\u003C/h2>\n\u003Cp>Advanced Markdown documentation site generators represent powerful solutions for creating comprehensive, professional documentation platforms that combine editorial simplicity with sophisticated technical capabilities. By mastering multiple generator ecosystems, theme customization techniques, and deployment strategies, technical teams can build documentation systems that serve diverse organizational needs while maintaining content quality, performance, and user experience standards.\u003C/p>\n\u003Cp>The key to successful documentation site implementation lies in selecting the appropriate generator for your specific use case, understanding the trade-offs between different approaches, and implementing systematic workflows that support both content creators and end users. Whether you&#39;re building technical documentation, knowledge bases, or comprehensive content platforms, the tools and techniques covered in this guide provide the foundation for creating maintainable, scalable documentation systems that evolve with your organization&#39;s needs.\u003C/p>\n\u003Cp>Remember to evaluate generators based on your team&#39;s technical expertise, content requirements, and deployment constraints, implement comprehensive testing and validation workflows, and continuously monitor performance and user experience metrics to optimize your documentation platform&#39;s effectiveness. With proper implementation of modern site generation workflows, your Markdown-based content can deliver exceptional user experiences while maintaining the simplicity and version control integration that makes Markdown such an effective content creation format.\u003C/p>\n",[15,19,22,25,28,31,34],{"id":16,"text":17,"level":18},"why-master-markdown-documentation-site-generators","Why Master Markdown Documentation Site Generators?",2,{"id":20,"text":21,"level":18},"foundation-generator-comparison","Foundation Generator Comparison",{"id":23,"text":24,"level":18},"advanced-theme-customization","Advanced Theme Customization",{"id":26,"text":27,"level":18},"integration-with-documentation-systems","Integration with Documentation Systems",{"id":29,"text":30,"level":18},"advanced-deployment-strategies","Advanced Deployment Strategies",{"id":32,"text":33,"level":18},"troubleshooting-common-issues","Troubleshooting Common Issues",{"id":35,"text":36,"level":18},"conclusion","Conclusion",[],[39,47,55],{"slug":40,"title":41,"description":42,"excerpt":43,"date":44,"category":9,"author":10,"keywords":45,"readingMinutes":46},"markdown-automation-workflows-complete-guide","Markdown Automation Workflows: Complete Guide for CI/CD, Publishing, and Documentation Generation","Master automated Markdown workflows for continuous documentation, publishing pipelines, and content generation. Learn GitHub Actions, automated testing, deployment strategies, and integration with modern development tools.","Automated Markdown workflows enable seamless integration of documentation and content creation into modern development processes, providing continuous integration capabilities for technical…","2025-09-25","markdown automation, markdown ci cd, automated documentation, markdown workflows, markdown publishing automation, documentation generation, markdown testing, automated content publishing",29,{"slug":48,"title":49,"description":50,"excerpt":51,"date":52,"category":9,"author":10,"keywords":53,"readingMinutes":54},"markdown-diagram-workflows-integration-complete-guide","Markdown Diagram Workflows and Integration: Complete Guide for Visual Documentation and Automated Diagram Generation","Master advanced Markdown diagram workflows with Mermaid, PlantUML, and D2. Learn automated diagram generation, version control integration, CI/CD pipelines, and cross-platform compatibility for professional visual documentation.","Advanced Markdown diagram workflows and integration techniques enable sophisticated visual documentation that combines the simplicity of text-based markup with powerful automated diagram…","2025-11-03","markdown diagrams, mermaid diagrams, plantuml markdown, d2 diagrams, diagram automation, visual documentation, markdown workflows, diagram version control, automated diagrams",16,{"slug":56,"title":57,"description":58,"excerpt":59,"date":60,"category":9,"author":10,"keywords":61,"readingMinutes":62},"markdown-dynamic-content-generation-automation-workflows-complete-guide","Markdown Dynamic Content Generation and Automation Workflows: Complete Guide for Automated Documentation, Template Systems, and Content Pipeline Management","Master dynamic content generation in Markdown with comprehensive automation workflows, template engines, data-driven documentation systems, and intelligent content pipeline management for scalable technical writing.","Advanced Markdown dynamic content generation and automation workflows enable systematic creation of data-driven documentation, template-based content systems, and intelligent content pipelines…","2025-12-22","markdown automation, dynamic content generation markdown, markdown templates, automated documentation markdown, content pipeline markdown, markdown workflows, data driven documentation, template engines markdown",37,1792184945424]