[{"data":1,"prerenderedAt":106},["ShallowReactive",2],{"hub:guides-concepts":3},{"path":4,"key":5,"title":6,"h1":7,"description":8,"crumbs":9,"blocks":17},"\u002Fguides\u002Fconcepts\u002F","guides-concepts","Concepts: Choosing and Running Static Sites","Concepts","Explainers on evaluating static site generators and running them long term: selection checklists, total cost, maintenance risk and docs workflows.",[10,13,16],[11,12],"Home","\u002F",[14,15],"Guides","\u002Fguides\u002F",[7,4],[18,21,23,26,34,36,43,82,84,91],{"k":19,"text":20},"p","Concepts are the guides with no single task at the end. They explain how something works or how to think about a decision, so that the how-tos make sense in context: what a static site generator really costs over five years, which signals predict maintenance pain, what a docs-as-code workflow asks of writers, where static export in Next.js stops being static.",{"k":19,"text":22},"There are fewer of them than any other kind on purpose. Most explanation on this site lives inside the how-tos and comparisons, next to the numbers that justify it; a separate concept guide exists only where the idea is large enough to need its own page and is referenced from several others.",{"k":24,"html":25},"fig","\u003Cfigure>\n\u003Csvg viewBox=\"0 0 760 223\" role=\"img\" aria-labelledby=\"hub-concepts-hero-title hub-concepts-hero-desc\" xmlns=\"http:\u002F\u002Fwww.w3.org\u002F2000\u002Fsvg\">\n  \u003Ctitle id=\"hub-concepts-hero-title\">Concept guides compared with task guides\u003C\u002Ftitle>\n  \u003Cdesc id=\"hub-concepts-hero-desc\">Two panels. Concept guides answer why and when, cover decisions and mechanisms, and are referenced by many other guides. Task guides answer how, cover one task end to end, and end with measured numbers.\u003C\u002Fdesc>\n  \u003Crect x=\"0\" y=\"0\" width=\"760\" height=\"223\" fill=\"#ffffff\"\u002F>\n  \u003Cg style=\"font-family:system-ui, sans-serif;font-size:12px\">\n    \u003Crect x=\"20.0\" y=\"58.0\" width=\"350.0\" height=\"149.0\" rx=\"10\" fill=\"#6a4c93\" opacity=\"0.14\" stroke=\"#6a4c93\" style=\"stroke-width:1.5px\"\u002F>\n    \u003Ccircle cx=\"40.0\" cy=\"103.0\" r=\"2.5\" fill=\"#6a4c93\" stroke=\"#6a4c93\" style=\"stroke-width:1.5px\"\u002F>\n    \u003Ccircle cx=\"40.0\" cy=\"125.0\" r=\"2.5\" fill=\"#6a4c93\" stroke=\"#6a4c93\" style=\"stroke-width:1.5px\"\u002F>\n    \u003Ccircle cx=\"40.0\" cy=\"146.9\" r=\"2.5\" fill=\"#6a4c93\" stroke=\"#6a4c93\" style=\"stroke-width:1.5px\"\u002F>\n    \u003Crect x=\"390.0\" y=\"58.0\" width=\"350.0\" height=\"149.0\" rx=\"10\" fill=\"#1982c4\" opacity=\"0.14\" stroke=\"#1982c4\" style=\"stroke-width:1.5px\"\u002F>\n    \u003Ccircle cx=\"410.0\" cy=\"103.0\" r=\"2.5\" fill=\"#1982c4\" stroke=\"#1982c4\" style=\"stroke-width:1.5px\"\u002F>\n    \u003Ccircle cx=\"410.0\" cy=\"125.0\" r=\"2.5\" fill=\"#1982c4\" stroke=\"#1982c4\" style=\"stroke-width:1.5px\"\u002F>\n    \u003Ccircle cx=\"410.0\" cy=\"146.9\" r=\"2.5\" fill=\"#1982c4\" stroke=\"#1982c4\" style=\"stroke-width:1.5px\"\u002F>\n    \u003Ctext x=\"380.0\" y=\"30.0\" fill=\"#1f2937\" style=\"font-size:16px;text-anchor:middle;font-weight:700\">Where concepts fit\u003C\u002Ftext>\n    \u003Ctext x=\"34.0\" y=\"83.5\" fill=\"#6a4c93\" style=\"font-size:13.5px;text-anchor:start;font-weight:700\">Concepts\u003C\u002Ftext>\n    \u003Ctext x=\"50.0\" y=\"107.0\" fill=\"#1f2937\" style=\"font-size:11.5px;text-anchor:start\">answer why and when\u003C\u002Ftext>\n    \u003Ctext x=\"50.0\" y=\"129.0\" fill=\"#1f2937\" style=\"font-size:11.5px;text-anchor:start\">decisions and mechanisms\u003C\u002Ftext>\n    \u003Ctext x=\"50.0\" y=\"150.9\" fill=\"#1f2937\" style=\"font-size:11.5px;text-anchor:start\">referenced by many guides\u003C\u002Ftext>\n    \u003Ctext x=\"34.0\" y=\"193.0\" fill=\"#1f2937\" style=\"font-size:12px;text-anchor:start;font-weight:700\">read before deciding\u003C\u002Ftext>\n    \u003Ctext x=\"404.0\" y=\"83.5\" fill=\"#166a9e\" style=\"font-size:13.5px;text-anchor:start;font-weight:700\">How-tos and fixes\u003C\u002Ftext>\n    \u003Ctext x=\"420.0\" y=\"107.0\" fill=\"#1f2937\" style=\"font-size:11.5px;text-anchor:start\">answer how\u003C\u002Ftext>\n    \u003Ctext x=\"420.0\" y=\"129.0\" fill=\"#1f2937\" style=\"font-size:11.5px;text-anchor:start\">one task end to end\u003C\u002Ftext>\n    \u003Ctext x=\"420.0\" y=\"150.9\" fill=\"#1f2937\" style=\"font-size:11.5px;text-anchor:start\">end with measured numbers\u003C\u002Ftext>\n    \u003Ctext x=\"404.0\" y=\"193.0\" fill=\"#1f2937\" style=\"font-size:12px;text-anchor:start;font-weight:700\">read while doing\u003C\u002Ftext>\n  \u003C\u002Fg>\n\u003C\u002Fsvg>\n\u003Cfigcaption>Concepts are read before a decision; how-tos are read while carrying one out.\u003C\u002Ffigcaption>\n\u003C\u002Ffigure>",{"k":27,"h":28,"items":29},"group","Docs Frameworks: Docusaurus, Starlight and VitePress",[30],{"t":31,"u":32,"d":33},"VitePress for Library Documentation","\u002Fchoosing-the-right-static-site-generator-for-production\u002Fdocs-frameworks-docusaurus-starlight-vitepress\u002Fvitepress-for-library-documentation\u002F","Set up VitePress docs next to a library's source: generated API reference from TypeDoc, live code samples, versioned deploys and sub-20-second builds.",{"k":24,"html":35},"\u003Cfigure>\n\u003Csvg viewBox=\"0 0 760 210\" role=\"img\" aria-labelledby=\"hub-concepts-topics-title hub-concepts-topics-desc\" xmlns=\"http:\u002F\u002Fwww.w3.org\u002F2000\u002Fsvg\">\n  \u003Ctitle id=\"hub-concepts-topics-title\">Number of concepts per topic, largest first\u003C\u002Ftitle>\n  \u003Cdesc id=\"hub-concepts-topics-desc\">Horizontal bars. SSG Framework Selection Matrix 9, Docs Frameworks: Docusaurus, Starlight and VitePress 1, Next.js Static Export for Content Sites 1 and Content Workflows for Documentation Teams 1.\u003C\u002Fdesc>\n  \u003Crect x=\"0\" y=\"0\" width=\"760\" height=\"210\" fill=\"#ffffff\"\u002F>\n  \u003Cg style=\"font-family:system-ui, sans-serif;font-size:12px\">\n    \u003Crect x=\"350.0\" y=\"65.0\" width=\"365.6\" height=\"20.0\" rx=\"3\" fill=\"#6a4c93\" opacity=\"0.3\" stroke=\"#6a4c93\" style=\"stroke-width:1px\"\u002F>\n    \u003Crect x=\"350.0\" y=\"99.0\" width=\"40.6\" height=\"20.0\" rx=\"3\" fill=\"#6a4c93\" opacity=\"0.3\" stroke=\"#6a4c93\" style=\"stroke-width:1px\"\u002F>\n    \u003Crect x=\"350.0\" y=\"133.0\" width=\"40.6\" height=\"20.0\" rx=\"3\" fill=\"#6a4c93\" opacity=\"0.3\" stroke=\"#6a4c93\" style=\"stroke-width:1px\"\u002F>\n    \u003Crect x=\"350.0\" y=\"167.0\" width=\"40.6\" height=\"20.0\" rx=\"3\" fill=\"#6a4c93\" opacity=\"0.3\" stroke=\"#6a4c93\" style=\"stroke-width:1px\"\u002F>\n    \u003Cpath d=\"M350.0 60.0 L350.0 192.0\" fill=\"none\" stroke=\"#556071\" style=\"stroke-width:1.5px\"\u002F>\n    \u003Ctext x=\"380.0\" y=\"30.0\" fill=\"#1f2937\" style=\"font-size:16px;text-anchor:middle;font-weight:700\">Topics with the most concepts\u003C\u002Ftext>\n    \u003Ctext x=\"20.0\" y=\"79.2\" fill=\"#1f2937\" style=\"font-size:12px;text-anchor:start\">SSG Framework Selection Matrix\u003C\u002Ftext>\n    \u003Ctext x=\"723.6\" y=\"79.5\" fill=\"#1f2937\" style=\"font-size:12px;text-anchor:start;font-weight:700\">9\u003C\u002Ftext>\n    \u003Ctext x=\"20.0\" y=\"113.2\" fill=\"#1f2937\" style=\"font-size:12px;text-anchor:start\">Docs Frameworks: Docusaurus, Starlight…\u003C\u002Ftext>\n    \u003Ctext x=\"398.6\" y=\"113.5\" fill=\"#1f2937\" style=\"font-size:12px;text-anchor:start;font-weight:700\">1\u003C\u002Ftext>\n    \u003Ctext x=\"20.0\" y=\"147.2\" fill=\"#1f2937\" style=\"font-size:12px;text-anchor:start\">Next.js Static Export for Content Sites\u003C\u002Ftext>\n    \u003Ctext x=\"398.6\" y=\"147.5\" fill=\"#1f2937\" style=\"font-size:12px;text-anchor:start;font-weight:700\">1\u003C\u002Ftext>\n    \u003Ctext x=\"20.0\" y=\"181.2\" fill=\"#1f2937\" style=\"font-size:12px;text-anchor:start\">Content Workflows for Documentation…\u003C\u002Ftext>\n    \u003Ctext x=\"398.6\" y=\"181.5\" fill=\"#1f2937\" style=\"font-size:12px;text-anchor:start;font-weight:700\">1\u003C\u002Ftext>\n  \u003C\u002Fg>\n\u003C\u002Fsvg>\n\u003Cfigcaption>The 4 topics with the most concepts, out of 4 topics that have any.\u003C\u002Ffigcaption>\n\u003C\u002Ffigure>",{"k":27,"h":37,"items":38},"Next.js Static Export for Content Sites",[39],{"t":40,"u":41,"d":42},"Next.js App Router Static Export Limitations","\u002Fchoosing-the-right-static-site-generator-for-production\u002Fnextjs-static-export-for-content-sites\u002Fnextjs-app-router-static-export-limitations\u002F","Which App Router features work with output export — route handlers, middleware, ISR, dynamic params, headers, images — and the static workaround for each.",{"k":27,"h":44,"items":45},"SSG Framework Selection Matrix",[46,50,54,58,62,66,70,74,78],{"t":47,"u":48,"d":49},"Best SSG for Non-Developer Technical Writers","\u002Fchoosing-the-right-static-site-generator-for-production\u002Fssg-framework-selection-matrix\u002Fbest-ssg-for-technical-writers-without-coding-experience\u002F","Choose an SSG for authors who avoid the terminal — prioritize a Git-backed visual editor, schema-validated frontmatter, and cloud CI that deploys on every commit.",{"t":51,"u":52,"d":53},"Choosing an SSG for API Reference Documentation","\u002Fchoosing-the-right-static-site-generator-for-production\u002Fssg-framework-selection-matrix\u002Fchoosing-an-ssg-for-api-reference-documentation\u002F","API docs are generated, versioned and enormous. Compare Hugo, Astro, Eleventy and Next export on build scale, schema-driven pages, versioning and search.",{"t":55,"u":56,"d":57},"Choosing an SSG for a Marketing Site with Non-Technical Editors","\u002Fchoosing-the-right-static-site-generator-for-production\u002Fssg-framework-selection-matrix\u002Fchoosing-an-ssg-for-a-marketing-site-with-non-technical-editors\u002F","Pick a generator and editing setup for a marketing site edited by non-developers: visual editing, previews, publish speed, guardrails and page performance.",{"t":59,"u":60,"d":61},"Evaluating SSG Accessibility Defaults","\u002Fchoosing-the-right-static-site-generator-for-production\u002Fssg-framework-selection-matrix\u002Fevaluating-ssg-accessibility-defaults\u002F","Audit what a generator or theme gets right and wrong for accessibility out of the box — landmarks, headings, focus, colour, code blocks — before committing.",{"t":63,"u":64,"d":65},"Picking an SSG for a Multi-Language Docs Site","\u002Fchoosing-the-right-static-site-generator-for-production\u002Fssg-framework-selection-matrix\u002Fpicking-an-ssg-for-a-multi-language-documentation-site\u002F","Compare i18n in Astro, Hugo, Eleventy, and Jekyll for multi-language documentation — routing, content organization, and build cost — with measured numbers across locales.",{"t":67,"u":68,"d":69},"SSG Selection Checklist for Engineering Teams","\u002Fchoosing-the-right-static-site-generator-for-production\u002Fssg-framework-selection-matrix\u002Fssg-selection-checklist-for-engineering-teams\u002F","A practical SSG selection checklist for engineering teams — score build scale, team skills, content model, i18n, hosting, ecosystem, and maintenance before you commit.",{"t":71,"u":72,"d":73},"Scoring SSG Long-Term Maintenance Risk","\u002Fchoosing-the-right-static-site-generator-for-production\u002Fssg-framework-selection-matrix\u002Fscoring-ssg-long-term-maintenance-risk\u002F","Score a static site generator’s five-year maintenance risk: project health, upgrade history, dependency surface, plugin ecosystem and your exit cost.",{"t":75,"u":76,"d":77},"Total Cost of Ownership for Static Site Generators","\u002Fchoosing-the-right-static-site-generator-for-production\u002Fssg-framework-selection-matrix\u002Ftotal-cost-of-ownership-for-static-site-generators\u002F","Estimate the three-year cost of running a static site on Hugo, Eleventy, Astro, Next.js export or a docs framework: people time, builds, hosting, upgrades.",{"t":79,"u":80,"d":81},"When a Static Site Generator Is the Wrong Choice","\u002Fchoosing-the-right-static-site-generator-for-production\u002Fssg-framework-selection-matrix\u002Fwhen-a-static-site-generator-is-the-wrong-choice\u002F","The signs a project has outgrown static generation, from per-user content to minute-level freshness and huge catalogues, and the hybrid options to use.",{"k":24,"html":83},"\u003Cfigure>\n\u003Csvg viewBox=\"0 0 760 295\" role=\"img\" aria-labelledby=\"hub-concepts-sections-title hub-concepts-sections-desc\" xmlns=\"http:\u002F\u002Fwww.w3.org\u002F2000\u002Fsvg\">\n  \u003Ctitle id=\"hub-concepts-sections-title\">Number of concepts in each section\u003C\u002Ftitle>\n  \u003Cdesc id=\"hub-concepts-sections-desc\">Vertical bars: Framework selection 11, Performance 0 and Deployment 1. As a share of all guides in the section: Framework selection 9%, Performance 0%, Deployment 1%.\u003C\u002Fdesc>\n  \u003Crect x=\"0\" y=\"0\" width=\"760\" height=\"295\" fill=\"#ffffff\"\u002F>\n  \u003Cg style=\"font-family:system-ui, sans-serif;font-size:12px\">\n    \u003Crect x=\"108.3\" y=\"76.0\" width=\"90.0\" height=\"170.0\" rx=\"3\" fill=\"#6a4c93\" opacity=\"0.3\" stroke=\"#6a4c93\" style=\"stroke-width:1px\"\u002F>\n    \u003Crect x=\"335.0\" y=\"243.0\" width=\"90.0\" height=\"3.0\" rx=\"3\" fill=\"#1982c4\" opacity=\"0.3\" stroke=\"#1982c4\" style=\"stroke-width:1px\"\u002F>\n    \u003Crect x=\"561.7\" y=\"230.5\" width=\"90.0\" height=\"15.5\" rx=\"3\" fill=\"#8ac926\" opacity=\"0.4\" stroke=\"#5a8a16\" style=\"stroke-width:1px\"\u002F>\n    \u003Cpath d=\"M30.0 246.0 L730.0 246.0\" fill=\"none\" stroke=\"#556071\" style=\"stroke-width:1.5px\"\u002F>\n    \u003Ctext x=\"380.0\" y=\"30.0\" fill=\"#1f2937\" style=\"font-size:16px;text-anchor:middle;font-weight:700\">Concepts in each section\u003C\u002Ftext>\n    \u003Ctext x=\"153.3\" y=\"69.0\" fill=\"#1f2937\" style=\"font-size:12px;text-anchor:middle;font-weight:700\">11\u003C\u002Ftext>\n    \u003Ctext x=\"153.3\" y=\"264.0\" fill=\"#556071\" style=\"font-size:11.5px;text-anchor:middle\">Framework selection\u003C\u002Ftext>\n    \u003Ctext x=\"380.0\" y=\"236.0\" fill=\"#1f2937\" style=\"font-size:12px;text-anchor:middle;font-weight:700\">0\u003C\u002Ftext>\n    \u003Ctext x=\"380.0\" y=\"264.0\" fill=\"#556071\" style=\"font-size:11.5px;text-anchor:middle\">Performance\u003C\u002Ftext>\n    \u003Ctext x=\"606.7\" y=\"223.5\" fill=\"#3f6410\" style=\"font-size:12px;text-anchor:middle;font-weight:700\">1\u003C\u002Ftext>\n    \u003Ctext x=\"606.7\" y=\"264.0\" fill=\"#556071\" style=\"font-size:11.5px;text-anchor:middle\">Deployment\u003C\u002Ftext>\n  \u003C\u002Fg>\n\u003C\u002Fsvg>\n\u003Cfigcaption>12 concepts in total. As a share of each section: framework selection 9%, performance 0%, deployment 1%.\u003C\u002Ffigcaption>\n\u003C\u002Ffigure>",{"k":27,"h":85,"items":86},"Content Workflows for Documentation Teams",[87],{"t":88,"u":89,"d":90},"Docs-as-Code Review Workflow for Writers","\u002Fproduction-ready-deployment-cicd-workflows\u002Fcontent-workflows-for-documentation-teams\u002Fdocs-as-code-review-workflow-for-writers\u002F","Branch naming, small pull requests, preview-first review and a two-pass checklist — a docs-as-code process that non-engineers can follow and reviewers can sustain.",{"k":27,"h":92,"items":93},"Other kinds of guide",[94,98,102],{"t":95,"u":96,"d":97},"How-tos","\u002Fguides\u002Fhow-to\u002F","A task, end to end, with configuration and measured results.",{"t":99,"u":100,"d":101},"Fixes","\u002Fguides\u002Ffixes\u002F","Starts from a symptom and ends at the cause and the fix.",{"t":103,"u":104,"d":105},"Comparisons","\u002Fguides\u002Fcomparisons\u002F","Weighs two or more options against measured criteria.",1790943190466]