<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Static Site Generators in the Age of AI on SSG Book</title><link>http://polla.dev/ssg-book/</link><description>Recent content in Static Site Generators in the Age of AI on SSG Book</description><generator>Hugo</generator><language>en</language><lastBuildDate>Wed, 16 Sep 2026 00:00:00 +0000</lastBuildDate><atom:link href="http://polla.dev/ssg-book/index.xml" rel="self" type="application/rss+xml"/><item><title>Course introduction</title><link>http://polla.dev/ssg-book/slides/00-course-introduction/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>http://polla.dev/ssg-book/slides/00-course-introduction/</guid><description>&lt;h1 id="static-site-generators-in-the-age-of-ai"&gt;Static Site Generators in the Age of AI&#10;&lt;/h1&gt;&#10;&lt;p&gt;Building and Maintaining Content with AI Agents&lt;/p&gt;&#10;&lt;p&gt;&lt;strong&gt;Chapter 0: Course introduction&lt;/strong&gt;&lt;/p&gt;&#10;&lt;p&gt;Polla Fattah&lt;/p&gt;&#10;&lt;hr&gt;&#10;&lt;h2 id="what-you-will-build"&gt;What you will build&#10;&lt;/h2&gt;&#10;&lt;p&gt;One small website that grows from chapter to chapter.&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;A working site on your own computer in &lt;strong&gt;Chapter 1&lt;/strong&gt;&lt;/li&gt;&#10;&lt;li&gt;Published at a public address by &lt;strong&gt;Chapter 7&lt;/strong&gt;&lt;/li&gt;&#10;&lt;li&gt;Improved by an AI agent, with every change &lt;strong&gt;reviewed by you&lt;/strong&gt;&lt;/li&gt;&#10;&lt;li&gt;A plan for a website of &lt;strong&gt;your own&lt;/strong&gt; in Chapter 19&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;hr&gt;&#10;&lt;h2 id="why-a-static-website"&gt;Why a static website?&#10;&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Your content is &lt;strong&gt;plain text&lt;/strong&gt; in folders you control&lt;/li&gt;&#10;&lt;li&gt;The build produces &lt;strong&gt;ordinary files&lt;/strong&gt; any browser can read&lt;/li&gt;&#10;&lt;li&gt;Hosting can be &lt;strong&gt;free&lt;/strong&gt;: GitHub Pages serves public projects at no charge&lt;/li&gt;&#10;&lt;li&gt;Every change is &lt;strong&gt;recorded&lt;/strong&gt; in Git and can be undone&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;hr&gt;&#10;&lt;h2 id="what-static-means"&gt;What &amp;ldquo;static&amp;rdquo; means&#10;&lt;/h2&gt;&#10;&lt;p&gt;A &lt;strong&gt;static site generator&lt;/strong&gt; combines your writing, a layout, and settings into finished web pages &lt;strong&gt;before&lt;/strong&gt; anyone visits.&lt;/p&gt;</description></item><item><title>Your First Hugo Website</title><link>http://polla.dev/ssg-book/book/chapter_01_your_first_hugo_website/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>http://polla.dev/ssg-book/book/chapter_01_your_first_hugo_website/</guid><description>&lt;p&gt;&lt;em&gt;Static Site Generators in the Age of AI&lt;/em&gt;&lt;br&gt;&#10;&lt;em&gt;Building and Maintaining Content with AI Agents&lt;/em&gt;&lt;/p&gt;&#10;&lt;p&gt;&lt;strong&gt;Draft 0.2, September 2026&lt;/strong&gt;&lt;br&gt;&#10;&lt;em&gt;Checked with Hugo 0.150.0 through 0.166.0. Requires Hugo 0.146.0 or later for the template layout convention.&lt;/em&gt;&lt;/p&gt;&#10;&lt;p&gt;You have something worth sharing: notes from your work, an explanation you have written, a useful collection of resources, or a project you want others to understand. A website gives those materials a place where people can find and read them.&lt;/p&gt;</description></item><item><title>Write and Publish Content Locally</title><link>http://polla.dev/ssg-book/book/chapter_02_write_and_publish_content_locally/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>http://polla.dev/ssg-book/book/chapter_02_write_and_publish_content_locally/</guid><description>&lt;p&gt;&lt;em&gt;Static Site Generators in the Age of AI&lt;/em&gt;&lt;br&gt;&#10;&lt;em&gt;Building and Maintaining Content with AI Agents&lt;/em&gt;&lt;/p&gt;&#10;&lt;p&gt;&lt;strong&gt;Draft 0.2, September 2026&lt;/strong&gt;&lt;br&gt;&#10;&lt;em&gt;Checked with Hugo 0.150.0 through 0.166.0 (standard and extended editions).&lt;/em&gt;&lt;/p&gt;&#10;&lt;p&gt;In Chapter 1, you changed a home page. Now you will give your website something more substantial to read: its first article.&lt;/p&gt;&#10;&lt;p&gt;The article will describe a small thing you have learned. You will give it sections, add links and a screenshot, and make it reachable from the home page. Along the way, you will learn the Markdown needed to make a piece of writing understandable both as a text file and as a web page.&lt;/p&gt;</description></item><item><title>Your First Hugo Website</title><link>http://polla.dev/ssg-book/slides/01-your-first-hugo-website/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>http://polla.dev/ssg-book/slides/01-your-first-hugo-website/</guid><description>&lt;h1 id="your-first-hugo-website"&gt;Your First Hugo Website&#10;&lt;/h1&gt;&#10;&lt;p&gt;Static Site Generators in the Age of AI&lt;/p&gt;&#10;&lt;p&gt;&lt;strong&gt;Chapter 1&lt;/strong&gt;&lt;/p&gt;&#10;&lt;p&gt;Polla Fattah&lt;/p&gt;&#10;&lt;hr&gt;&#10;&lt;h2 id="todays-goal"&gt;Today&amp;rsquo;s goal&#10;&lt;/h2&gt;&#10;&lt;p&gt;A readable home page headed &lt;strong&gt;My Knowledge Notebook&lt;/strong&gt;, running on your own computer.&lt;/p&gt;&#10;&lt;p&gt;Success means you can say:&lt;/p&gt;&#10;&lt;blockquote&gt;&#10;&lt;p&gt;I know which file contains these words, I can change them, and I can put them back.&lt;/p&gt;&#10;&lt;/blockquote&gt;&#10;&lt;hr&gt;&#10;&lt;h2 id="by-the-end-of-today-you-can"&gt;By the end of today you can&#10;&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;strong&gt;Start and stop&lt;/strong&gt; a local Hugo preview&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Find and edit&lt;/strong&gt; the file that holds the home-page introduction&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Explain&lt;/strong&gt; the roles of the content file, the layout, and the browser preview&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Recover&lt;/strong&gt; from a small mistake and keep a working copy&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;No HTML, CSS, Git, or programming experience is needed.&lt;/p&gt;</description></item><item><title>Organise a Useful Website</title><link>http://polla.dev/ssg-book/book/chapter_03_organise_a_useful_website/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>http://polla.dev/ssg-book/book/chapter_03_organise_a_useful_website/</guid><description>&lt;p&gt;&lt;em&gt;Static Site Generators in the Age of AI&lt;/em&gt;&lt;br&gt;&#10;&lt;em&gt;Building and Maintaining Content with AI Agents&lt;/em&gt;&lt;/p&gt;&#10;&lt;p&gt;Your website now has a home page and an article. You know how to edit both, but a new visitor does not know where your files are. They need clear routes through the information you have published.&lt;/p&gt;&#10;&lt;p&gt;In this chapter, you will add an About page, give Articles a useful landing page, introduce a Projects section, and collect a few resources. Then you will replace the small home-page navigation with links that work across the website.&lt;/p&gt;</description></item><item><title>Write and Publish Content Locally</title><link>http://polla.dev/ssg-book/slides/02-write-and-publish-content-locally/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>http://polla.dev/ssg-book/slides/02-write-and-publish-content-locally/</guid><description>&lt;h1 id="write-and-publish-content-locally"&gt;Write and Publish Content Locally&#10;&lt;/h1&gt;&#10;&lt;p&gt;Static Site Generators in the Age of AI&lt;/p&gt;&#10;&lt;p&gt;&lt;strong&gt;Chapter 2&lt;/strong&gt;&lt;/p&gt;&#10;&lt;p&gt;Polla Fattah&lt;/p&gt;&#10;&lt;hr&gt;&#10;&lt;h2 id="todays-goal"&gt;Today&amp;rsquo;s goal&#10;&lt;/h2&gt;&#10;&lt;p&gt;Give your website its &lt;strong&gt;first article&lt;/strong&gt;: a short note about something you have learned.&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Sections, a link, a screenshot, and a code sample&lt;/li&gt;&#10;&lt;li&gt;Reachable from the home page&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;&lt;strong&gt;Publish locally&lt;/strong&gt; means it appears in the preview on your computer. Nothing goes online today.&lt;/p&gt;</description></item><item><title>Organise a Useful Website</title><link>http://polla.dev/ssg-book/slides/03-organise-a-useful-website/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>http://polla.dev/ssg-book/slides/03-organise-a-useful-website/</guid><description>&lt;h1 id="organise-a-useful-website"&gt;Organise a Useful Website&#10;&lt;/h1&gt;&#10;&lt;p&gt;Static Site Generators in the Age of AI&lt;/p&gt;&#10;&lt;p&gt;&lt;strong&gt;Chapter 3&lt;/strong&gt;&lt;/p&gt;&#10;&lt;p&gt;Polla Fattah&lt;/p&gt;&#10;&lt;hr&gt;&#10;&lt;h2 id="todays-goal"&gt;Today&amp;rsquo;s goal&#10;&lt;/h2&gt;&#10;&lt;p&gt;You know where your files are. &lt;strong&gt;A new visitor does not.&lt;/strong&gt;&lt;/p&gt;&#10;&lt;p&gt;Give them clear routes through the site:&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;An &lt;strong&gt;About&lt;/strong&gt; page&lt;/li&gt;&#10;&lt;li&gt;Landing pages for &lt;strong&gt;Articles&lt;/strong&gt; and &lt;strong&gt;Projects&lt;/strong&gt;&lt;/li&gt;&#10;&lt;li&gt;A short &lt;strong&gt;Resources&lt;/strong&gt; page&lt;/li&gt;&#10;&lt;li&gt;Navigation that works on every page&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;Every destination must contain something useful.&lt;/p&gt;</description></item><item><title>Understand the HTML Behind Your Pages</title><link>http://polla.dev/ssg-book/book/chapter_04_understand_the_html_behind_your_pages/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>http://polla.dev/ssg-book/book/chapter_04_understand_the_html_behind_your_pages/</guid><description>&lt;p&gt;&lt;em&gt;Static Site Generators in the Age of AI&lt;/em&gt;&lt;br&gt;&#10;&lt;em&gt;Building and Maintaining Content with AI Agents&lt;/em&gt;&lt;/p&gt;&#10;&lt;p&gt;You have written articles, created sections, and changed the navigation of your website. Now we will look at what the browser receives when it displays those pages.&lt;/p&gt;&#10;&lt;p&gt;The title on the screen is not simply large text. The navigation is not merely a row of coloured words. They have a structure that the browser can interpret. Understanding that structure will help you make deliberate changes, diagnose mistakes, and assess code suggested by an AI agent.&lt;/p&gt;</description></item><item><title>Practical CSS for Your Hugo Site</title><link>http://polla.dev/ssg-book/book/chapter_05_practical_css_for_your_hugo_site/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>http://polla.dev/ssg-book/book/chapter_05_practical_css_for_your_hugo_site/</guid><description>&lt;p&gt;&lt;em&gt;Static Site Generators in the Age of AI&lt;/em&gt;&lt;br&gt;&#10;&lt;em&gt;Building and Maintaining Content with AI Agents&lt;/em&gt;&lt;/p&gt;&#10;&lt;p&gt;Your notebook already has a readable layout. In Chapter 4, you inspected its HTML and added a footer note. Now you will give that note a style and make two small adjustments to the reading experience.&lt;/p&gt;&#10;&lt;p&gt;The visible result is small but deliberate: the footer note sits below a thin rule in quieter text, body text reads a little larger, and your article&amp;rsquo;s section headings have clearer space above them. Everything else should look as it did at the end of Chapter 4.&lt;/p&gt;</description></item><item><title>Understand the HTML Behind Your Pages</title><link>http://polla.dev/ssg-book/slides/04-understand-the-html-behind-your-pages/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>http://polla.dev/ssg-book/slides/04-understand-the-html-behind-your-pages/</guid><description>&lt;h1 id="understand-the-html-behind-your-pages"&gt;Understand the HTML Behind Your Pages&#10;&lt;/h1&gt;&#10;&lt;p&gt;Static Site Generators in the Age of AI&lt;/p&gt;&#10;&lt;p&gt;&lt;strong&gt;Chapter 4&lt;/strong&gt;&lt;/p&gt;&#10;&lt;p&gt;Polla Fattah&lt;/p&gt;&#10;&lt;hr&gt;&#10;&lt;h2 id="todays-goal"&gt;Today&amp;rsquo;s goal&#10;&lt;/h2&gt;&#10;&lt;p&gt;See what the browser &lt;strong&gt;receives&lt;/strong&gt; when it shows your pages.&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;The title is not just large text; the navigation is not just coloured words&lt;/li&gt;&#10;&lt;li&gt;Both have a &lt;strong&gt;structure&lt;/strong&gt; the browser interprets&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;That lets you make deliberate changes, diagnose mistakes, and judge code an &lt;strong&gt;AI agent&lt;/strong&gt; suggests.&lt;/p&gt;</description></item><item><title>Practical CSS for Your Hugo Site</title><link>http://polla.dev/ssg-book/slides/05-practical-css-for-your-hugo-site/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>http://polla.dev/ssg-book/slides/05-practical-css-for-your-hugo-site/</guid><description>&lt;h1 id="practical-css-for-your-hugo-site"&gt;Practical CSS for Your Hugo Site&#10;&lt;/h1&gt;&#10;&lt;p&gt;Static Site Generators in the Age of AI&lt;/p&gt;&#10;&lt;p&gt;&lt;strong&gt;Chapter 5&lt;/strong&gt;&lt;/p&gt;&#10;&lt;p&gt;Polla Fattah&lt;/p&gt;&#10;&lt;hr&gt;&#10;&lt;h2 id="todays-goal"&gt;Today&amp;rsquo;s goal&#10;&lt;/h2&gt;&#10;&lt;p&gt;Three small, deliberate changes:&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;The footer note sits below a &lt;strong&gt;thin rule&lt;/strong&gt;, in quieter text&lt;/li&gt;&#10;&lt;li&gt;Body text reads a little &lt;strong&gt;larger&lt;/strong&gt;&lt;/li&gt;&#10;&lt;li&gt;Article section headings get &lt;strong&gt;more space&lt;/strong&gt; above them&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;Everything else should look as it did after Chapter 4.&lt;/p&gt;&#10;&lt;p&gt;Enough CSS to customise this site and &lt;strong&gt;check an agent&amp;rsquo;s changes&lt;/strong&gt;; not a design course.&lt;/p&gt;</description></item><item><title>Track and Recover Your Hugo Site with Git</title><link>http://polla.dev/ssg-book/book/chapter_06_track_and_recover_your_hugo_site_with_git/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>http://polla.dev/ssg-book/book/chapter_06_track_and_recover_your_hugo_site_with_git/</guid><description>&lt;p&gt;&lt;em&gt;Static Site Generators in the Age of AI&lt;/em&gt;&lt;br&gt;&#10;&lt;em&gt;Building and Maintaining Content with AI Agents&lt;/em&gt;&lt;/p&gt;&#10;&lt;p&gt;In the previous chapters, you kept copies of the project before continuing. Those copies helped you recover, but comparing them becomes awkward. Which one contains the footer improvement? What changed in the stylesheet? Can you recover a file without replacing the whole site?&lt;/p&gt;&#10;&lt;p&gt;Git gives your project a history of recorded checkpoints. In this chapter, you will record your working Hugo site, save one useful content change, and recover from a deliberately poor styling change.&lt;/p&gt;</description></item><item><title>Publish Your Hugo Site with GitHub Pages</title><link>http://polla.dev/ssg-book/book/chapter_07_publish_your_hugo_site_with_github_pages/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>http://polla.dev/ssg-book/book/chapter_07_publish_your_hugo_site_with_github_pages/</guid><description>&lt;p&gt;&lt;em&gt;Static Site Generators in the Age of AI&lt;/em&gt;&lt;br&gt;&#10;&lt;em&gt;Building and Maintaining Content with AI Agents&lt;/em&gt;&lt;/p&gt;&#10;&lt;p&gt;Your website now has content, a readable layout, and a local Git history. This chapter gives it an address other people can visit.&lt;/p&gt;&#10;&lt;p&gt;You will put the existing repository on GitHub, let GitHub Actions build it with Hugo, and publish the result through GitHub Pages. Then you will make one small update and follow it from your editor to the live page.&lt;/p&gt;</description></item><item><title>Track and Recover Your Hugo Site with Git</title><link>http://polla.dev/ssg-book/slides/06-track-and-recover-your-hugo-site-with-git/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>http://polla.dev/ssg-book/slides/06-track-and-recover-your-hugo-site-with-git/</guid><description>&lt;h1 id="track-and-recover-your-hugo-site-with-git"&gt;Track and Recover Your Hugo Site with Git&#10;&lt;/h1&gt;&#10;&lt;p&gt;Static Site Generators in the Age of AI&lt;/p&gt;&#10;&lt;p&gt;&lt;strong&gt;Chapter 6&lt;/strong&gt;&lt;/p&gt;&#10;&lt;p&gt;Polla Fattah&lt;/p&gt;&#10;&lt;hr&gt;&#10;&lt;h2 id="todays-goal"&gt;Today&amp;rsquo;s goal&#10;&lt;/h2&gt;&#10;&lt;p&gt;Backup folders helped, but they are awkward to compare.&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Which copy has the footer improvement?&lt;/li&gt;&#10;&lt;li&gt;What changed in the stylesheet?&lt;/li&gt;&#10;&lt;li&gt;Can I recover &lt;strong&gt;one file&lt;/strong&gt; without replacing the whole site?&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;&lt;strong&gt;Git&lt;/strong&gt; gives the project a history of recorded checkpoints. Today it stays &lt;strong&gt;local&lt;/strong&gt;: no GitHub account yet.&lt;/p&gt;</description></item><item><title>Publish Your Hugo Site with GitHub Pages</title><link>http://polla.dev/ssg-book/slides/07-publish-your-hugo-site-with-github-pages/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>http://polla.dev/ssg-book/slides/07-publish-your-hugo-site-with-github-pages/</guid><description>&lt;h1 id="publish-your-hugo-site-with-github-pages"&gt;Publish Your Hugo Site with GitHub Pages&#10;&lt;/h1&gt;&#10;&lt;p&gt;Static Site Generators in the Age of AI&lt;/p&gt;&#10;&lt;p&gt;&lt;strong&gt;Chapter 7&lt;/strong&gt;&lt;/p&gt;&#10;&lt;p&gt;Polla Fattah&lt;/p&gt;&#10;&lt;hr&gt;&#10;&lt;h2 id="todays-goal"&gt;Today&amp;rsquo;s goal&#10;&lt;/h2&gt;&#10;&lt;p&gt;Give your website an address &lt;strong&gt;other people can visit&lt;/strong&gt;.&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Put the repository on &lt;strong&gt;GitHub&lt;/strong&gt;&lt;/li&gt;&#10;&lt;li&gt;Let &lt;strong&gt;GitHub Actions&lt;/strong&gt; build it with Hugo&lt;/li&gt;&#10;&lt;li&gt;Publish the result through &lt;strong&gt;GitHub Pages&lt;/strong&gt;&lt;/li&gt;&#10;&lt;li&gt;Follow one small update from your editor to the live page&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;A supplied workflow, explained: no need to master Actions or YAML first.&lt;/p&gt;</description></item><item><title>Work with an AI Agent on Your Hugo Site</title><link>http://polla.dev/ssg-book/book/chapter_08_work_with_an_ai_agent_on_your_hugo_site/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>http://polla.dev/ssg-book/book/chapter_08_work_with_an_ai_agent_on_your_hugo_site/</guid><description>&lt;p&gt;&lt;em&gt;Static Site Generators in the Age of AI&lt;/em&gt;&lt;br&gt;&#10;&lt;em&gt;Building and Maintaining Content with AI Agents&lt;/em&gt;&lt;/p&gt;&#10;&lt;p&gt;You can now write a page, recognise its HTML and CSS, save a Git checkpoint, and publish an update. Those skills make an AI agent more useful: you can give it a specific job and judge what it actually changes.&lt;/p&gt;&#10;&lt;p&gt;Our first job is small. The Resources page already contains useful links. You will ask an agent to add a short section explaining how a reader might use them. The result should be easy to inspect: one new heading and three bullets in one Markdown file.&lt;/p&gt;</description></item><item><title>Give Your Hugo Content a Consistent Structure</title><link>http://polla.dev/ssg-book/book/chapter_09_give_your_hugo_content_a_consistent_structure/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>http://polla.dev/ssg-book/book/chapter_09_give_your_hugo_content_a_consistent_structure/</guid><description>&lt;p&gt;&lt;em&gt;Static Site Generators in the Age of AI&lt;/em&gt;&lt;br&gt;&#10;&lt;em&gt;Building and Maintaining Content with AI Agents&lt;/em&gt;&lt;/p&gt;&#10;&lt;p&gt;Your website has one project page. Adding a second is easy: create another Markdown file and begin writing. After several projects, however, you might notice that one page explains its purpose, another lists tools, and a third never says whether the work has started.&lt;/p&gt;&#10;&lt;p&gt;A small shared structure makes those pages easier to write, compare, and maintain. It also gives an AI agent concrete requirements to follow. The structure should answer useful questions without making every page look like a long form.&lt;/p&gt;</description></item><item><title>Work with an AI Agent on Your Hugo Site</title><link>http://polla.dev/ssg-book/slides/08-work-with-an-ai-agent-on-your-hugo-site/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>http://polla.dev/ssg-book/slides/08-work-with-an-ai-agent-on-your-hugo-site/</guid><description>&lt;h1 id="work-with-an-ai-agent-on-your-hugo-site"&gt;Work with an AI Agent on Your Hugo Site&#10;&lt;/h1&gt;&#10;&lt;p&gt;Static Site Generators in the Age of AI&lt;/p&gt;&#10;&lt;p&gt;&lt;strong&gt;Chapter 8&lt;/strong&gt;&lt;/p&gt;&#10;&lt;p&gt;Polla Fattah&lt;/p&gt;&#10;&lt;hr&gt;&#10;&lt;h2 id="todays-goal"&gt;Today&amp;rsquo;s goal&#10;&lt;/h2&gt;&#10;&lt;p&gt;Ask an agent for &lt;strong&gt;one small, checkable change&lt;/strong&gt;: a short section on the Resources page explaining how to use its links.&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;One new heading and three bullets&lt;/li&gt;&#10;&lt;li&gt;In one Markdown file&lt;/li&gt;&#10;&lt;li&gt;Reviewed by &lt;strong&gt;you&lt;/strong&gt; before it is kept&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;We use &lt;strong&gt;Codex CLI&lt;/strong&gt;. The aim is a repeatable &lt;strong&gt;method&lt;/strong&gt;, not a tour of every AI tool.&lt;/p&gt;</description></item><item><title>Give Your Hugo Content a Consistent Structure</title><link>http://polla.dev/ssg-book/slides/09-give-your-hugo-content-a-consistent-structure/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>http://polla.dev/ssg-book/slides/09-give-your-hugo-content-a-consistent-structure/</guid><description>&lt;h1 id="give-your-hugo-content-a-consistent-structure"&gt;Give Your Hugo Content a Consistent Structure&#10;&lt;/h1&gt;&#10;&lt;p&gt;Static Site Generators in the Age of AI&lt;/p&gt;&#10;&lt;p&gt;&lt;strong&gt;Chapter 9&lt;/strong&gt;&lt;/p&gt;&#10;&lt;p&gt;Polla Fattah&lt;/p&gt;&#10;&lt;hr&gt;&#10;&lt;h2 id="todays-goal"&gt;Today&amp;rsquo;s goal&#10;&lt;/h2&gt;&#10;&lt;p&gt;After a few projects, one page explains its purpose, another lists tools, and a third never says whether the work has started.&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Agree what &lt;strong&gt;every project page&lt;/strong&gt; should explain&lt;/li&gt;&#10;&lt;li&gt;Build a reusable &lt;strong&gt;starter&lt;/strong&gt; for new projects&lt;/li&gt;&#10;&lt;li&gt;Add a second project: a planned &lt;strong&gt;reading list&lt;/strong&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;A shared structure is easier to write, compare, maintain, and hand to an &lt;strong&gt;agent&lt;/strong&gt;.&lt;/p&gt;</description></item><item><title>Use Hugo Templates to Display Your Content</title><link>http://polla.dev/ssg-book/book/chapter_10_use_hugo_templates_to_display_your_content/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>http://polla.dev/ssg-book/book/chapter_10_use_hugo_templates_to_display_your_content/</guid><description>&lt;p&gt;&lt;em&gt;Static Site Generators in the Age of AI&lt;/em&gt;&lt;br&gt;&#10;&lt;em&gt;Building and Maintaining Content with AI Agents&lt;/em&gt;&lt;/p&gt;&#10;&lt;p&gt;Your two project pages now contain useful information in their front matter. The description, status, and tools are organised, but visitors cannot see them yet. You also maintain a separate list of project links by hand.&lt;/p&gt;&#10;&lt;p&gt;A template can use those existing values to produce the page. Change a project&amp;rsquo;s description once, and Hugo can use it both on the project page and in the Projects list.&lt;/p&gt;</description></item><item><title>Build Reusable Hugo Layouts</title><link>http://polla.dev/ssg-book/book/chapter_11_build_reusable_hugo_layouts/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>http://polla.dev/ssg-book/book/chapter_11_build_reusable_hugo_layouts/</guid><description>&lt;p&gt;&lt;em&gt;Static Site Generators in the Age of AI&lt;/em&gt;&lt;br&gt;&#10;&lt;em&gt;Building and Maintaining Content with AI Agents&lt;/em&gt;&lt;/p&gt;&#10;&lt;p&gt;Your shared layout now does several jobs. It creates the HTML document, displays navigation and a footer, presents page metadata, and generates the Projects list. It works, but finding the right place for the next change takes more care.&lt;/p&gt;&#10;&lt;p&gt;We will give those jobs clearer homes. A base template will hold the common document structure. Small partial templates will hold reusable pieces. A Projects section template will decide where the project list belongs.&lt;/p&gt;</description></item><item><title>Use Hugo Templates to Display Your Content</title><link>http://polla.dev/ssg-book/slides/10-use-hugo-templates-to-display-your-content/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>http://polla.dev/ssg-book/slides/10-use-hugo-templates-to-display-your-content/</guid><description>&lt;h1 id="use-hugo-templates-to-display-your-content"&gt;Use Hugo Templates to Display Your Content&#10;&lt;/h1&gt;&#10;&lt;p&gt;Static Site Generators in the Age of AI&lt;/p&gt;&#10;&lt;p&gt;&lt;strong&gt;Chapter 10&lt;/strong&gt;&lt;/p&gt;&#10;&lt;p&gt;Polla Fattah&lt;/p&gt;&#10;&lt;hr&gt;&#10;&lt;h2 id="todays-goal"&gt;Today&amp;rsquo;s goal&#10;&lt;/h2&gt;&#10;&lt;p&gt;Your projects store a description, a status, and tools, but visitors &lt;strong&gt;cannot see them&lt;/strong&gt;. And you still keep the Projects list &lt;strong&gt;by hand&lt;/strong&gt;.&lt;/p&gt;&#10;&lt;ol&gt;&#10;&lt;li&gt;Display a &lt;strong&gt;description&lt;/strong&gt;&lt;/li&gt;&#10;&lt;li&gt;Show &lt;strong&gt;status&lt;/strong&gt; and &lt;strong&gt;tools&lt;/strong&gt; when they exist&lt;/li&gt;&#10;&lt;li&gt;Let Hugo &lt;strong&gt;generate&lt;/strong&gt; the Projects list&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;p&gt;Change a description once; it updates everywhere Hugo uses it.&lt;/p&gt;</description></item><item><title>Build a Resource Directory with JSON</title><link>http://polla.dev/ssg-book/book/chapter_12_build_a_resource_directory_with_json/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>http://polla.dev/ssg-book/book/chapter_12_build_a_resource_directory_with_json/</guid><description>&lt;p&gt;&lt;em&gt;Static Site Generators in the Age of AI&lt;/em&gt;&lt;br&gt;&#10;&lt;em&gt;Building and Maintaining Content with AI Agents&lt;/em&gt;&lt;/p&gt;&#10;&lt;p&gt;Your Resources page contains a small collection of links. Markdown handles that well. As the collection grows, however, you may want every entry to have the same information: a title, an address, a short explanation, and a few topics.&lt;/p&gt;&#10;&lt;p&gt;We will store those repeated details in JSON and let a Hugo partial display them. The surrounding introduction and links to your own notebook pages will remain ordinary Markdown.&lt;/p&gt;</description></item><item><title>Build Reusable Hugo Layouts</title><link>http://polla.dev/ssg-book/slides/11-build-reusable-hugo-layouts/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>http://polla.dev/ssg-book/slides/11-build-reusable-hugo-layouts/</guid><description>&lt;h1 id="build-reusable-hugo-layouts"&gt;Build Reusable Hugo Layouts&#10;&lt;/h1&gt;&#10;&lt;p&gt;Static Site Generators in the Age of AI&lt;/p&gt;&#10;&lt;p&gt;&lt;strong&gt;Chapter 11&lt;/strong&gt;&lt;/p&gt;&#10;&lt;p&gt;Polla Fattah&lt;/p&gt;&#10;&lt;hr&gt;&#10;&lt;h2 id="todays-goal"&gt;Today&amp;rsquo;s goal&#10;&lt;/h2&gt;&#10;&lt;p&gt;One layout now does everything. It works, but every change needs care.&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;A &lt;strong&gt;base template&lt;/strong&gt; for the shared document&lt;/li&gt;&#10;&lt;li&gt;Small &lt;strong&gt;partials&lt;/strong&gt; for reusable pieces&lt;/li&gt;&#10;&lt;li&gt;A &lt;strong&gt;section template&lt;/strong&gt; for Projects&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;blockquote&gt;&#10;&lt;p&gt;Reorganising working code should &lt;strong&gt;preserve&lt;/strong&gt; its behaviour. Check that first.&lt;/p&gt;&#10;&lt;/blockquote&gt;&#10;&lt;hr&gt;&#10;&lt;h2 id="by-the-end-of-today-you-can"&gt;By the end of today you can&#10;&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;strong&gt;Move&lt;/strong&gt; a component into a partial and pass it the context it needs&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Connect&lt;/strong&gt; a base template&amp;rsquo;s named block with its definition&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Give&lt;/strong&gt; Projects its own layout, sharing the rest&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Check&lt;/strong&gt; that content, links, and metadata survived the move&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;Start from Chapter 10, with status in the project list, and a &lt;strong&gt;clean&lt;/strong&gt; tree (companion branch &lt;code&gt;chapter-10&lt;/code&gt;).&lt;/p&gt;</description></item><item><title>Build a Resource Directory with JSON</title><link>http://polla.dev/ssg-book/slides/12-build-a-resource-directory-with-json/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>http://polla.dev/ssg-book/slides/12-build-a-resource-directory-with-json/</guid><description>&lt;h1 id="build-a-resource-directory-with-json"&gt;Build a Resource Directory with JSON&#10;&lt;/h1&gt;&#10;&lt;p&gt;Static Site Generators in the Age of AI&lt;/p&gt;&#10;&lt;p&gt;&lt;strong&gt;Chapter 12&lt;/strong&gt;&lt;/p&gt;&#10;&lt;p&gt;Polla Fattah&lt;/p&gt;&#10;&lt;hr&gt;&#10;&lt;h2 id="todays-goal"&gt;Today&amp;rsquo;s goal&#10;&lt;/h2&gt;&#10;&lt;p&gt;As the Resources list grows, every entry should carry the &lt;strong&gt;same information&lt;/strong&gt;: a title, an address, a short explanation, and a few topics.&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Store the repeated details in &lt;strong&gt;JSON&lt;/strong&gt;&lt;/li&gt;&#10;&lt;li&gt;Let a Hugo &lt;strong&gt;partial&lt;/strong&gt; display them&lt;/li&gt;&#10;&lt;li&gt;Keep the introduction and notebook links in &lt;strong&gt;Markdown&lt;/strong&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;Add a resource by editing &lt;strong&gt;data&lt;/strong&gt;; the template supplies the HTML.&lt;/p&gt;</description></item><item><title>Create and Maintain Content with AI Agents</title><link>http://polla.dev/ssg-book/book/chapter_13_create_and_maintain_content_with_ai_agents/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>http://polla.dev/ssg-book/book/chapter_13_create_and_maintain_content_with_ai_agents/</guid><description>&lt;p&gt;&lt;em&gt;Static Site Generators in the Age of AI&lt;/em&gt;&lt;br&gt;&#10;&lt;em&gt;Building and Maintaining Content with AI Agents&lt;/em&gt;&lt;/p&gt;&#10;&lt;p&gt;In Chapter 8, you gave an agent a small, self-contained job: three bullets in one file. You could read the whole result in a minute. Real content work is larger than that, and its mistakes are harder to see.&lt;/p&gt;&#10;&lt;p&gt;In this chapter, you will produce a complete article from source material you supply, then connect it to the rest of the site. The work is divided into three requests: a plan, a draft, and a coordinated update across several files. You will review the claims in the draft against the source before publishing anything.&lt;/p&gt;</description></item><item><title>Check Every Contribution with CI/CD</title><link>http://polla.dev/ssg-book/book/chapter_14_check_every_contribution_with_ci_cd/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>http://polla.dev/ssg-book/book/chapter_14_check_every_contribution_with_ci_cd/</guid><description>&lt;p&gt;&lt;em&gt;Static Site Generators in the Age of AI&lt;/em&gt;&lt;br&gt;&#10;&lt;em&gt;Building and Maintaining Content with AI Agents&lt;/em&gt;&lt;/p&gt;&#10;&lt;p&gt;Chapter 6 deferred branching until there was a concrete reason to use it. This is that reason. Every change you have made since then went straight onto &lt;code&gt;main&lt;/code&gt;, and every push to &lt;code&gt;main&lt;/code&gt; publishes.&lt;/p&gt;&#10;&lt;p&gt;In this chapter, you will add a second workflow that examines a proposed change before it can reach the live site. It builds the site and checks three rules this book has already established: directory flags must be real Booleans, internal links must stay relative, and articles and projects must carry a description. Then you will propose a change on a branch, break one of those rules on purpose, and watch the checks stop it.&lt;/p&gt;</description></item><item><title>Create and Maintain Content with AI Agents</title><link>http://polla.dev/ssg-book/slides/13-create-and-maintain-content-with-ai-agents/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>http://polla.dev/ssg-book/slides/13-create-and-maintain-content-with-ai-agents/</guid><description>&lt;h1 id="create-and-maintain-content-with-ai-agents"&gt;Create and Maintain Content with AI Agents&#10;&lt;/h1&gt;&#10;&lt;p&gt;Static Site Generators in the Age of AI&lt;/p&gt;&#10;&lt;p&gt;&lt;strong&gt;Chapter 13&lt;/strong&gt;&lt;/p&gt;&#10;&lt;p&gt;Polla Fattah&lt;/p&gt;&#10;&lt;hr&gt;&#10;&lt;h2 id="todays-goal"&gt;Today&amp;rsquo;s goal&#10;&lt;/h2&gt;&#10;&lt;p&gt;Chapter 8 was three bullets. Real content work is larger, and &lt;strong&gt;harder to check&lt;/strong&gt;.&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;One new &lt;strong&gt;article&lt;/strong&gt;, written from notes you supply&lt;/li&gt;&#10;&lt;li&gt;Linked from Articles, Home, and the resource directory&lt;/li&gt;&#10;&lt;li&gt;Three requests: a &lt;strong&gt;plan&lt;/strong&gt;, a &lt;strong&gt;draft&lt;/strong&gt;, a &lt;strong&gt;coordinated update&lt;/strong&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;blockquote&gt;&#10;&lt;p&gt;Supply the material, bound the task, check every claim, decide yourself.&lt;/p&gt;</description></item><item><title>Check Every Contribution with CI/CD</title><link>http://polla.dev/ssg-book/slides/14-check-every-contribution-with-ci-cd/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>http://polla.dev/ssg-book/slides/14-check-every-contribution-with-ci-cd/</guid><description>&lt;h1 id="check-every-contribution-with-cicd"&gt;Check Every Contribution with CI/CD&#10;&lt;/h1&gt;&#10;&lt;p&gt;Static Site Generators in the Age of AI&lt;/p&gt;&#10;&lt;p&gt;&lt;strong&gt;Chapter 14&lt;/strong&gt;&lt;/p&gt;&#10;&lt;p&gt;Polla Fattah&lt;/p&gt;&#10;&lt;hr&gt;&#10;&lt;h2 id="todays-goal"&gt;Today&amp;rsquo;s goal&#10;&lt;/h2&gt;&#10;&lt;p&gt;Every change so far went straight onto &lt;code&gt;main&lt;/code&gt;, and &lt;strong&gt;every push to &lt;code&gt;main&lt;/code&gt; publishes&lt;/strong&gt;.&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;A second workflow that &lt;strong&gt;examines&lt;/strong&gt; a proposal before it goes live&lt;/li&gt;&#10;&lt;li&gt;A &lt;strong&gt;branch&lt;/strong&gt; and a &lt;strong&gt;pull request&lt;/strong&gt;&lt;/li&gt;&#10;&lt;li&gt;A rule broken &lt;strong&gt;on purpose&lt;/strong&gt;, and stopped&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;blockquote&gt;&#10;&lt;p&gt;Machines check what can be a rule; you check the rest.&lt;/p&gt;</description></item><item><title>Help Readers Find and Use Your Content</title><link>http://polla.dev/ssg-book/book/chapter_15_help_readers_find_and_use_your_content/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>http://polla.dev/ssg-book/book/chapter_15_help_readers_find_and_use_your_content/</guid><description>&lt;p&gt;&lt;em&gt;Static Site Generators in the Age of AI&lt;/em&gt;&lt;br&gt;&#10;&lt;em&gt;Building and Maintaining Content with AI Agents&lt;/em&gt;&lt;/p&gt;&#10;&lt;p&gt;Your notebook now has nine pages, a resource directory, a publishing workflow, and checks on every proposal. A visitor arriving at it has the navigation, and nothing else. They cannot search it, and a browser tab showing every page as part of the same long name does not help them keep their place.&lt;/p&gt;&#10;&lt;p&gt;In this chapter you will improve how the site describes itself and add a way to search it. You will give every page a useful document title and a description, inspect the sitemap and feed Hugo has been generating all along, and build a search page that filters a list of your pages as the reader types.&lt;/p&gt;</description></item><item><title>Help Readers Find and Use Your Content</title><link>http://polla.dev/ssg-book/slides/15-help-readers-find-and-use-your-content/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>http://polla.dev/ssg-book/slides/15-help-readers-find-and-use-your-content/</guid><description>&lt;h1 id="help-readers-find-and-use-your-content"&gt;Help Readers Find and Use Your Content&#10;&lt;/h1&gt;&#10;&lt;p&gt;Static Site Generators in the Age of AI&lt;/p&gt;&#10;&lt;p&gt;&lt;strong&gt;Chapter 15&lt;/strong&gt;&lt;/p&gt;&#10;&lt;p&gt;Polla Fattah&lt;/p&gt;&#10;&lt;hr&gt;&#10;&lt;h2 id="todays-goal"&gt;Today&amp;rsquo;s goal&#10;&lt;/h2&gt;&#10;&lt;p&gt;A visitor has the navigation, and nothing else. They cannot &lt;strong&gt;search&lt;/strong&gt;, and every tab title looks alike.&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;A distinct &lt;strong&gt;title&lt;/strong&gt; and a &lt;strong&gt;description&lt;/strong&gt; for every page&lt;/li&gt;&#10;&lt;li&gt;The &lt;strong&gt;sitemap&lt;/strong&gt; and &lt;strong&gt;feed&lt;/strong&gt; Hugo has generated all along&lt;/li&gt;&#10;&lt;li&gt;A &lt;strong&gt;Search&lt;/strong&gt; page that filters as the reader types&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;And a page that still lists every destination when &lt;strong&gt;JavaScript does not run&lt;/strong&gt;.&lt;/p&gt;</description></item><item><title>Publish in Multiple Languages</title><link>http://polla.dev/ssg-book/book/chapter_16_publish_in_multiple_languages/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>http://polla.dev/ssg-book/book/chapter_16_publish_in_multiple_languages/</guid><description>&lt;p&gt;&lt;em&gt;Static Site Generators in the Age of AI&lt;/em&gt;&lt;br&gt;&#10;&lt;em&gt;Building and Maintaining Content with AI Agents&lt;/em&gt;&lt;/p&gt;&#10;&lt;p&gt;Your notebook is in English. If some of your readers would rather read Kurdish, or if your work belongs to a place where two languages are normal, the site should be able to say the same things twice.&lt;/p&gt;&#10;&lt;p&gt;In this chapter you will add Kurdish Sorani as a second language, translate the navigation and two pages, and give the document the language and text direction a browser needs. Kurdish Sorani is written in a Perso-Arabic script and runs right to left, so this is also the first time your layout has to work in the other direction. You will find and repair the one stylesheet rule that assumes left to right.&lt;/p&gt;</description></item><item><title>Add Interactive Features Responsibly</title><link>http://polla.dev/ssg-book/book/chapter_17_add_interactive_features_responsibly/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>http://polla.dev/ssg-book/book/chapter_17_add_interactive_features_responsibly/</guid><description>&lt;p&gt;&lt;em&gt;Static Site Generators in the Age of AI&lt;/em&gt;&lt;br&gt;&#10;&lt;em&gt;Building and Maintaining Content with AI Agents&lt;/em&gt;&lt;/p&gt;&#10;&lt;p&gt;Readers who find something useful on your site may want to reply to it. A contact form is the obvious way to invite that, and it is also the point where a static site meets its actual limit.&lt;/p&gt;&#10;&lt;p&gt;Your site is a set of files. It has no program running on a server, so there is nothing on your side to receive a submitted message. In this chapter you will build a proper contact form, watch it fail to send, and then make it work in the one way a site like yours can without collecting anyone&amp;rsquo;s data: by handing the message to the visitor&amp;rsquo;s own mail program.&lt;/p&gt;</description></item><item><title>Publish in Multiple Languages</title><link>http://polla.dev/ssg-book/slides/16-publish-in-multiple-languages/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>http://polla.dev/ssg-book/slides/16-publish-in-multiple-languages/</guid><description>&lt;h1 id="publish-in-multiple-languages"&gt;Publish in Multiple Languages&#10;&lt;/h1&gt;&#10;&lt;p&gt;Static Site Generators in the Age of AI&lt;/p&gt;&#10;&lt;p&gt;&lt;strong&gt;Chapter 16&lt;/strong&gt;&lt;/p&gt;&#10;&lt;p&gt;Polla Fattah&lt;/p&gt;&#10;&lt;hr&gt;&#10;&lt;h2 id="todays-goal"&gt;Today&amp;rsquo;s goal&#10;&lt;/h2&gt;&#10;&lt;p&gt;Add &lt;strong&gt;Kurdish Sorani&lt;/strong&gt; as a second language: a Kurdish home page and About page at &lt;code&gt;/ckb/&lt;/code&gt;.&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Translated &lt;strong&gt;navigation&lt;/strong&gt; and a language switcher&lt;/li&gt;&#10;&lt;li&gt;The right &lt;strong&gt;language&lt;/strong&gt; and &lt;strong&gt;text direction&lt;/strong&gt; for every page&lt;/li&gt;&#10;&lt;li&gt;The layout working &lt;strong&gt;right to left&lt;/strong&gt;&lt;/li&gt;&#10;&lt;li&gt;The English site &lt;strong&gt;unchanged&lt;/strong&gt; at its existing addresses&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;Arabic, or any other language, works the same way.&lt;/p&gt;</description></item><item><title>Add Interactive Features Responsibly</title><link>http://polla.dev/ssg-book/slides/17-add-interactive-features-responsibly/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>http://polla.dev/ssg-book/slides/17-add-interactive-features-responsibly/</guid><description>&lt;h1 id="add-interactive-features-responsibly"&gt;Add Interactive Features Responsibly&#10;&lt;/h1&gt;&#10;&lt;p&gt;Static Site Generators in the Age of AI&lt;/p&gt;&#10;&lt;p&gt;&lt;strong&gt;Chapter 17&lt;/strong&gt;&lt;/p&gt;&#10;&lt;p&gt;Polla Fattah&lt;/p&gt;&#10;&lt;hr&gt;&#10;&lt;h2 id="todays-goal"&gt;Today&amp;rsquo;s goal&#10;&lt;/h2&gt;&#10;&lt;p&gt;A contact form is where a static site meets its &lt;strong&gt;actual limit&lt;/strong&gt;.&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Build a proper, accessible form&lt;/li&gt;&#10;&lt;li&gt;Watch it &lt;strong&gt;fail to send&lt;/strong&gt;&lt;/li&gt;&#10;&lt;li&gt;Make it work the one way that &lt;strong&gt;collects nothing&lt;/strong&gt;: the visitor&amp;rsquo;s own mail program&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;blockquote&gt;&#10;&lt;p&gt;Where does the work happen, and at what cost?&lt;/p&gt;</description></item><item><title>Maintain, Migrate, and Recover</title><link>http://polla.dev/ssg-book/book/chapter_18_maintain_migrate_and_recover/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>http://polla.dev/ssg-book/book/chapter_18_maintain_migrate_and_recover/</guid><description>&lt;p&gt;&lt;em&gt;Static Site Generators in the Age of AI&lt;/em&gt;&lt;br&gt;&#10;&lt;em&gt;Building and Maintaining Content with AI Agents&lt;/em&gt;&lt;/p&gt;&#10;&lt;p&gt;Your notebook works. It is published, checked on every proposal, searchable, bilingual in part, and able to receive a message. Nothing about it is finished, because a website that nobody maintains does not stay still; it goes quietly out of date while appearing to work perfectly.&lt;/p&gt;&#10;&lt;p&gt;In this chapter you will make a maintenance pass over the site you actually have. You will find a page that now says something untrue, update what you depend on, archive work that has been superseded, and publish a mistake on purpose so that you can practise recovering from it after it has gone live. Then you will settle the questions that outlast any single change: credentials, licensing, privacy, cost, and who owns what.&lt;/p&gt;</description></item><item><title>Build Your Own Publishing Project</title><link>http://polla.dev/ssg-book/book/chapter_19_build_your_own_publishing_project/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>http://polla.dev/ssg-book/book/chapter_19_build_your_own_publishing_project/</guid><description>&lt;p&gt;&lt;em&gt;Static Site Generators in the Age of AI&lt;/em&gt;&lt;br&gt;&#10;&lt;em&gt;Building and Maintaining Content with AI Agents&lt;/em&gt;&lt;/p&gt;&#10;&lt;p&gt;Eighteen chapters ago you did not have a website. You now have one that is published, checked before every change, searchable, partly bilingual, able to receive a message, and covered by a maintenance routine you wrote yourself. More importantly, you have done each of those things once, deliberately, and can explain why.&lt;/p&gt;&#10;&lt;p&gt;This chapter turns that into something of your own. You will choose a project, write a brief that says what you are not building, pick features by what they cost to keep rather than by what is possible, and test that brief before writing a single page. Then you will build it from a checkpoint, agree who reviews and who maintains it, and decide what &amp;ldquo;delivered&amp;rdquo; means.&lt;/p&gt;</description></item><item><title>Maintain, Migrate, and Recover</title><link>http://polla.dev/ssg-book/slides/18-maintain-migrate-and-recover/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>http://polla.dev/ssg-book/slides/18-maintain-migrate-and-recover/</guid><description>&lt;h1 id="maintain-migrate-and-recover"&gt;Maintain, Migrate, and Recover&#10;&lt;/h1&gt;&#10;&lt;p&gt;Static Site Generators in the Age of AI&lt;/p&gt;&#10;&lt;p&gt;&lt;strong&gt;Chapter 18&lt;/strong&gt;&lt;/p&gt;&#10;&lt;p&gt;Polla Fattah&lt;/p&gt;&#10;&lt;hr&gt;&#10;&lt;h2 id="todays-goal"&gt;Today&amp;rsquo;s goal&#10;&lt;/h2&gt;&#10;&lt;p&gt;A site nobody maintains does not stay still: it goes quietly out of date while &lt;strong&gt;appearing to work&lt;/strong&gt;.&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;A &lt;strong&gt;maintenance pass&lt;/strong&gt; over the site you have&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Update&lt;/strong&gt; what you depend on; &lt;strong&gt;archive&lt;/strong&gt; superseded work&lt;/li&gt;&#10;&lt;li&gt;Publish a mistake &lt;strong&gt;on purpose&lt;/strong&gt;, and recover from it live&lt;/li&gt;&#10;&lt;li&gt;Credentials, licensing, privacy, cost, and ownership&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;hr&gt;&#10;&lt;h2 id="by-the-end-of-today-you-can"&gt;By the end of today you can&#10;&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;strong&gt;Run&lt;/strong&gt; a repeatable maintenance pass and act on what it finds&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Update&lt;/strong&gt; a pinned dependency in every place it is pinned&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Retire&lt;/strong&gt; a page without breaking a published address&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Undo&lt;/strong&gt; a live change without rewriting published history&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;Start from Chapter 17 (branch &lt;code&gt;chapter-17&lt;/code&gt;): clean, pushed, and deployed.&lt;/p&gt;</description></item><item><title>Build Your Own Publishing Project</title><link>http://polla.dev/ssg-book/slides/19-build-your-own-publishing-project/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>http://polla.dev/ssg-book/slides/19-build-your-own-publishing-project/</guid><description>&lt;h1 id="build-your-own-publishing-project"&gt;Build Your Own Publishing Project&#10;&lt;/h1&gt;&#10;&lt;p&gt;Static Site Generators in the Age of AI&lt;/p&gt;&#10;&lt;p&gt;&lt;strong&gt;Chapter 19&lt;/strong&gt;&lt;/p&gt;&#10;&lt;p&gt;Polla Fattah&lt;/p&gt;&#10;&lt;hr&gt;&#10;&lt;h2 id="todays-goal"&gt;Today&amp;rsquo;s goal&#10;&lt;/h2&gt;&#10;&lt;p&gt;You have done every step once, deliberately. Now the decisions are &lt;strong&gt;yours&lt;/strong&gt;.&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Choose a project you can &lt;strong&gt;finish&lt;/strong&gt;&lt;/li&gt;&#10;&lt;li&gt;Write a brief that says what you are &lt;strong&gt;not&lt;/strong&gt; building&lt;/li&gt;&#10;&lt;li&gt;Pick features by what they cost to &lt;strong&gt;keep&lt;/strong&gt;&lt;/li&gt;&#10;&lt;li&gt;Test the brief &lt;strong&gt;before&lt;/strong&gt; building, then deliver&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;A site a stranger can use, you can maintain in a year, and whose quality you can &lt;strong&gt;account for&lt;/strong&gt;.&lt;/p&gt;</description></item><item><title>Migrating a Database-Driven CMS to a Static Site Generator</title><link>http://polla.dev/ssg-book/posts/migrating-cms-to-static-site-generator/</link><pubDate>Wed, 16 Sep 2026 00:00:00 +0000</pubDate><guid>http://polla.dev/ssg-book/posts/migrating-cms-to-static-site-generator/</guid><description>&lt;p&gt;Migrating an organization from a database-driven Content Management System (CMS), such as WordPress, Drupal, or a custom PHP and SQL stack, to a Static Site Generator (SSG) fundamentally alters the operational model of a website.&lt;/p&gt;&#10;&lt;p&gt;The transition eliminates runtime server execution, replacing dynamic database queries with deterministic ahead-of-time (AOT) compilation distributed globally over Content Delivery Network (CDN) edge caches.&lt;/p&gt;&#10;&lt;h2 id="architectural-transition-overview"&gt;Architectural Transition Overview&#10;&lt;/h2&gt;&#10;&lt;p&gt;The core shift decouples content authoring and build-time compilation from the public delivery layer:&lt;/p&gt;</description></item><item><title>Static Site Generator Landscape: A Reference Guide</title><link>http://polla.dev/ssg-book/posts/static-site-generator-landscape-reference/</link><pubDate>Tue, 15 Sep 2026 00:00:00 +0000</pubDate><guid>http://polla.dev/ssg-book/posts/static-site-generator-landscape-reference/</guid><description>&lt;p&gt;Static site generators span a wide range of languages, runtimes, and publishing models. Some are general-purpose build tools, while others specialize in documentation, scientific publishing, blogs, books, or framework-based applications.&lt;/p&gt;&#10;&lt;p&gt;This reference organizes the landscape by ecosystem and highlights the architectural focus of each generator.&lt;/p&gt;&#10;&lt;h2 id="javascript-and-typescript"&gt;JavaScript and TypeScript&#10;&lt;/h2&gt;&#10;&lt;h3 id="general-purpose-and-content-first"&gt;General Purpose and Content-First&#10;&lt;/h3&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;strong&gt;&lt;a href="https://www.11ty.dev/" target="_blank" rel="noopener noreferrer"&gt;Eleventy (11ty)&lt;/a&gt;&#10;:&lt;/strong&gt; Node.js-based generator supporting Liquid, Nunjucks, Markdown, WebC, and multiple other templating languages, with zero client JavaScript by default.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;&lt;a href="https://astro.build/" target="_blank" rel="noopener noreferrer"&gt;Astro&lt;/a&gt;&#10;:&lt;/strong&gt; Component-islands architecture supporting React, Preact, Svelte, Vue, SolidJS, and plain Markdown or MDX with partial hydration.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;&lt;a href="https://hexo.io/" target="_blank" rel="noopener noreferrer"&gt;Hexo&lt;/a&gt;&#10;:&lt;/strong&gt; Fast Node.js blogging engine with extensive plugin and theme ecosystems.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;&lt;a href="https://lume.land/" target="_blank" rel="noopener noreferrer"&gt;Lume&lt;/a&gt;&#10;:&lt;/strong&gt; Deno-native static site generator supporting Nunjucks, Vento, JSX, Markdown, and TypeScript.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;&lt;a href="https://metalsmith.io/" target="_blank" rel="noopener noreferrer"&gt;Metalsmith&lt;/a&gt;&#10;:&lt;/strong&gt; Functional, plugin-driven file manipulation pipeline for Node.js.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;&lt;a href="https://assemble.io/" target="_blank" rel="noopener noreferrer"&gt;Assemble&lt;/a&gt;&#10;:&lt;/strong&gt; Classic Grunt and Gulp-era generator powered by Handlebars.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;&lt;a href="https://harpjs.com/" target="_blank" rel="noopener noreferrer"&gt;Harp&lt;/a&gt;&#10;:&lt;/strong&gt; Zero-configuration web server and static engine supporting Jade/Pug, Markdown, and EJS.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;&lt;a href="https://phenomic.io/" target="_blank" rel="noopener noreferrer"&gt;Phenomic&lt;/a&gt;&#10;:&lt;/strong&gt; Modular static site compiler for React and Webpack ecosystems.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;&lt;a href="https://wintersmith.io/" target="_blank" rel="noopener noreferrer"&gt;Wintersmith&lt;/a&gt;&#10;:&lt;/strong&gt; Flexible, multi-format Node.js site generator.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;&lt;a href="https://docpad.org/" target="_blank" rel="noopener noreferrer"&gt;DocPad&lt;/a&gt;&#10;:&lt;/strong&gt; Early extensible Node.js document management and site builder.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;&lt;a href="https://laktek.github.io/punch/" target="_blank" rel="noopener noreferrer"&gt;Punch&lt;/a&gt;&#10;:&lt;/strong&gt; Conventions-based site generator using Mustache.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;&lt;a href="https://github.com/flatiron/blacksmith" target="_blank" rel="noopener noreferrer"&gt;Blacksmith&lt;/a&gt;&#10;:&lt;/strong&gt; Logic-less template engine driven by Director and Plates.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;&lt;a href="https://github.com/capri-js/capri" target="_blank" rel="noopener noreferrer"&gt;Capri&lt;/a&gt;&#10;:&lt;/strong&gt; Vite-based static compiler supporting partial hydration across diverse frontend libraries.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;&lt;a href="https://elderguide.com/tech/elderjs/" target="_blank" rel="noopener noreferrer"&gt;Elder.js&lt;/a&gt;&#10;:&lt;/strong&gt; Opinionated, SEO-optimized static site generator designed for Svelte.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;&lt;a href="https://iles.pages.dev/" target="_blank" rel="noopener noreferrer"&gt;iles&lt;/a&gt;&#10;:&lt;/strong&gt; Vite-driven static generator featuring islands of interactivity for Vue, Preact, and Svelte.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;&lt;a href="https://abelljs.org/" target="_blank" rel="noopener noreferrer"&gt;Abell&lt;/a&gt;&#10;:&lt;/strong&gt; Low-level, lightweight static generator using custom &lt;code&gt;.abell&lt;/code&gt; component syntax.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h3 id="react-frameworks-and-static-export"&gt;React Frameworks and Static Export&#10;&lt;/h3&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;strong&gt;&lt;a href="https://nextjs.org/" target="_blank" rel="noopener noreferrer"&gt;Next.js&lt;/a&gt;&#10; (&lt;code&gt;output: 'export'&lt;/code&gt;):&lt;/strong&gt; Full static HTML export from React server and client components.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;&lt;a href="https://www.gatsbyjs.com/" target="_blank" rel="noopener noreferrer"&gt;Gatsby&lt;/a&gt;&#10;:&lt;/strong&gt; React and GraphQL-based static generator with an extensive plugin ecosystem.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;&lt;a href="https://github.com/react-static/react-static" target="_blank" rel="noopener noreferrer"&gt;React Static&lt;/a&gt;&#10;:&lt;/strong&gt; Minimalist, progressive React-first static site framework.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;&lt;a href="https://cuttlebelle.com/" target="_blank" rel="noopener noreferrer"&gt;Cuttlebelle&lt;/a&gt;&#10;:&lt;/strong&gt; React-driven generator that decouples data and editing from code components.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h3 id="vuejs-ecosystem"&gt;Vue.js Ecosystem&#10;&lt;/h3&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;strong&gt;&lt;a href="https://nuxt.com/" target="_blank" rel="noopener noreferrer"&gt;Nuxt&lt;/a&gt;&#10; (&lt;code&gt;nuxi generate&lt;/code&gt;):&lt;/strong&gt; Prerenders Vue.js applications into crawlable static HTML.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;&lt;a href="https://vitepress.dev/" target="_blank" rel="noopener noreferrer"&gt;VitePress&lt;/a&gt;&#10;:&lt;/strong&gt; High-speed Vue 3 and Vite documentation generator and successor to VuePress.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;&lt;a href="https://vuepress.vuejs.org/" target="_blank" rel="noopener noreferrer"&gt;VuePress&lt;/a&gt;&#10;:&lt;/strong&gt; Classic Vue-powered static site generator using Markdown and Webpack.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;&lt;a href="https://gridsome.org/" target="_blank" rel="noopener noreferrer"&gt;Gridsome&lt;/a&gt;&#10;:&lt;/strong&gt; Vue 2 alternative to Gatsby powered by a local GraphQL data layer.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;&lt;a href="https://saber.land/" target="_blank" rel="noopener noreferrer"&gt;Saber&lt;/a&gt;&#10;:&lt;/strong&gt; Extensible Vue-based static site generator with automatic routing.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="documentation-and-technical-publishing"&gt;Documentation and Technical Publishing&#10;&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;strong&gt;&lt;a href="https://docusaurus.io/" target="_blank" rel="noopener noreferrer"&gt;Docusaurus&lt;/a&gt;&#10;:&lt;/strong&gt; Meta-maintained documentation framework built on React and MDX.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;&lt;a href="https://starlight.astro.build/" target="_blank" rel="noopener noreferrer"&gt;Starlight&lt;/a&gt;&#10;:&lt;/strong&gt; Documentation platform built directly on top of Astro.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;&lt;a href="https://github.com/slatedocs/slate" target="_blank" rel="noopener noreferrer"&gt;Slate&lt;/a&gt;&#10;:&lt;/strong&gt; Markdown-based API documentation generator.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;&lt;a href="https://docsify.js.org/" target="_blank" rel="noopener noreferrer"&gt;Docsify&lt;/a&gt;&#10;:&lt;/strong&gt; Runtime Markdown compiler that renders documentation on the fly without a build step.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;&lt;a href="https://docute.org/" target="_blank" rel="noopener noreferrer"&gt;Docute&lt;/a&gt;&#10;:&lt;/strong&gt; Lightweight alternative to Docsify for single-page documentation.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;&lt;a href="https://github.com/GitbookIO/gitbook" target="_blank" rel="noopener noreferrer"&gt;GitBook Legacy CLI&lt;/a&gt;&#10;:&lt;/strong&gt; Original Node.js command-line tool for publishing Markdown books.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="angular-and-svelte"&gt;Angular and Svelte&#10;&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;strong&gt;&lt;a href="https://scully.io/" target="_blank" rel="noopener noreferrer"&gt;Scully&lt;/a&gt;&#10;:&lt;/strong&gt; Static site generator for Angular applications.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;&lt;a href="https://svelte.dev/docs/kit/adapter-static" target="_blank" rel="noopener noreferrer"&gt;SvelteKit&lt;/a&gt;&#10; with &lt;code&gt;adapter-static&lt;/code&gt;:&lt;/strong&gt; Pre-renders static HTML pages for Svelte applications.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;&lt;a href="https://sapper.svelte.dev/" target="_blank" rel="noopener noreferrer"&gt;Sapper&lt;/a&gt;&#10;:&lt;/strong&gt; Legacy predecessor to SvelteKit with built-in static page exports.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="go"&gt;Go&#10;&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;strong&gt;&lt;a href="https://gohugo.io/" target="_blank" rel="noopener noreferrer"&gt;Hugo&lt;/a&gt;&#10;:&lt;/strong&gt; Extremely fast build engine written in Go, featuring built-in asset pipelines and zero runtime dependencies.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;&lt;a href="https://github.com/metal3d/goldsmith" target="_blank" rel="noopener noreferrer"&gt;Goldsmith&lt;/a&gt;&#10;:&lt;/strong&gt; Pipeline-based static generator inspired by Metalsmith and compiled to native Go.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;&lt;a href="https://github.com/StaticGen/Statically" target="_blank" rel="noopener noreferrer"&gt;Statically&lt;/a&gt;&#10;:&lt;/strong&gt; Go-based static engine built around Markdown and Go standard templates.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;&lt;a href="https://github.com/ponzu-cms/ponzu" target="_blank" rel="noopener noreferrer"&gt;Ponzu&lt;/a&gt;&#10;:&lt;/strong&gt; Headless CMS and server written in Go that supports static JSON and HTML generation.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;&lt;a href="https://github.com/markbates/gopublish" target="_blank" rel="noopener noreferrer"&gt;GoPublish&lt;/a&gt;&#10;:&lt;/strong&gt; Minimalist publishing tool for transforming Markdown structures into HTML.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="rust"&gt;Rust&#10;&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;strong&gt;&lt;a href="https://www.getzola.org/" target="_blank" rel="noopener noreferrer"&gt;Zola&lt;/a&gt;&#10;:&lt;/strong&gt; Fast, all-in-one generator using Tera templates, Sass compilation, and CommonMark.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;&lt;a href="https://rust-lang.github.io/mdBook/" target="_blank" rel="noopener noreferrer"&gt;mdBook&lt;/a&gt;&#10;:&lt;/strong&gt; Official command-line tool used by the Rust team for creating programming and technical books.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;&lt;a href="https://github.com/cobalt-org/cobalt.rs" target="_blank" rel="noopener noreferrer"&gt;Cobalt&lt;/a&gt;&#10;:&lt;/strong&gt; Minimalist, opinionated static blog engine.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;&lt;a href="https://seite.dev/" target="_blank" rel="noopener noreferrer"&gt;Seite&lt;/a&gt;&#10;:&lt;/strong&gt; Modern static site generator featuring native Model Context Protocol (MCP) tool integration.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;&lt;a href="https://github.com/lise-henry/crowbook" target="_blank" rel="noopener noreferrer"&gt;Crowbook&lt;/a&gt;&#10;:&lt;/strong&gt; Converts Markdown books into HTML, EPUB, and PDF formats.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="python"&gt;Python&#10;&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;strong&gt;&lt;a href="https://getpelican.com/" target="_blank" rel="noopener noreferrer"&gt;Pelican&lt;/a&gt;&#10;:&lt;/strong&gt; Veteran Python SSG supporting Markdown and reStructuredText with Jinja2 templating.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;&lt;a href="https://www.mkdocs.org/" target="_blank" rel="noopener noreferrer"&gt;MkDocs&lt;/a&gt;&#10;:&lt;/strong&gt; Markdown-driven generator focused on project documentation, widely paired with the Material theme.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;&lt;a href="https://www.sphinx-doc.org/" target="_blank" rel="noopener noreferrer"&gt;Sphinx&lt;/a&gt;&#10;:&lt;/strong&gt; Standard documentation tool across the scientific Python community, supporting reStructuredText and MyST Markdown.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;&lt;a href="https://www.getlektor.com/" target="_blank" rel="noopener noreferrer"&gt;Lektor&lt;/a&gt;&#10;:&lt;/strong&gt; Flexible, desktop GUI-friendly flat-file content management system and static builder.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;&lt;a href="https://getnikola.com/" target="_blank" rel="noopener noreferrer"&gt;Nikola&lt;/a&gt;&#10;:&lt;/strong&gt; Feature-rich engine supporting Markdown, reStructuredText, and Jupyter Notebooks.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;&lt;a href="https://frozen-flask.readthedocs.io/" target="_blank" rel="noopener noreferrer"&gt;Frozen-Flask&lt;/a&gt;&#10;:&lt;/strong&gt; Freezes dynamic Flask applications into completely static file trees.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;&lt;a href="https://github.com/koenbok/Cactus" target="_blank" rel="noopener noreferrer"&gt;Cactus&lt;/a&gt;&#10;:&lt;/strong&gt; Static site generator designed to deploy directly to Amazon S3 using Django templates.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;&lt;a href="https://github.com/hyde/hyde" target="_blank" rel="noopener noreferrer"&gt;Hyde&lt;/a&gt;&#10;:&lt;/strong&gt; Early Python alternative to Jekyll built on Jinja2.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;&lt;a href="https://mystmd.org/" target="_blank" rel="noopener noreferrer"&gt;MyST Markdown / Curvenote&lt;/a&gt;&#10;:&lt;/strong&gt; Scientific publishing engine converting technical Python code and notebooks into websites.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;&lt;a href="https://bengal-docs.github.io/" target="_blank" rel="noopener noreferrer"&gt;Bengal&lt;/a&gt;&#10;:&lt;/strong&gt; Python generator designed for documentation and product sites.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;&lt;a href="https://github.com/stephenleo/blurry" target="_blank" rel="noopener noreferrer"&gt;Blurry&lt;/a&gt;&#10;:&lt;/strong&gt; Schema-first, SEO-focused Markdown generator producing Schema.org metadata.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;&lt;a href="https://github.com/clehner/dewar" target="_blank" rel="noopener noreferrer"&gt;Dewar&lt;/a&gt;&#10;:&lt;/strong&gt; Flask-like, lightweight static publishing pipeline.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;&lt;a href="https://github.com/mitchellkrogza/Pagegen" target="_blank" rel="noopener noreferrer"&gt;Pagegen&lt;/a&gt;&#10;:&lt;/strong&gt; Simple, syntax-flexible page generator.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="ruby"&gt;Ruby&#10;&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;strong&gt;&lt;a href="https://jekyllrb.com/" target="_blank" rel="noopener noreferrer"&gt;Jekyll&lt;/a&gt;&#10;:&lt;/strong&gt; Foundation of modern static publishing, deeply integrated as the default builder for GitHub Pages.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;&lt;a href="https://www.bridgetownrb.com/" target="_blank" rel="noopener noreferrer"&gt;Bridgetown&lt;/a&gt;&#10;:&lt;/strong&gt; Modern Ruby static and progressive framework that modernizes Jekyll with Vite and esbuild.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;&lt;a href="https://middlemanapp.com/" target="_blank" rel="noopener noreferrer"&gt;Middleman&lt;/a&gt;&#10;:&lt;/strong&gt; Sinatra-inspired modular site generator specialized in marketing and campaign sites.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;&lt;a href="https://nanoc.app/" target="_blank" rel="noopener noreferrer"&gt;Nanoc&lt;/a&gt;&#10;:&lt;/strong&gt; Flexible, data-driven transformation pipeline supporting heterogeneous data sources.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;&lt;a href="https://github.com/ruhoh/ruhoh.rb" target="_blank" rel="noopener noreferrer"&gt;Ruhoh&lt;/a&gt;&#10;:&lt;/strong&gt; Universal static blog engine designed as a decoupled version of Jekyll.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;&lt;a href="https://github.com/damieng/scruffy" target="_blank" rel="noopener noreferrer"&gt;Scruffy&lt;/a&gt;&#10;:&lt;/strong&gt; Minimalist static builder focused on text-only and lightweight styling.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="php"&gt;PHP&#10;&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;strong&gt;&lt;a href="https://jigsaw.tighten.com/" target="_blank" rel="noopener noreferrer"&gt;PHPJigsaw&lt;/a&gt;&#10;:&lt;/strong&gt; Built on Laravel&amp;rsquo;s Blade templating engine, Mix/Vite, and Tailwind CSS.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;&lt;a href="https://sculpin.io/" target="_blank" rel="noopener noreferrer"&gt;Sculpin&lt;/a&gt;&#10;:&lt;/strong&gt; Composer-based static generator powered by Symfony components and Twig templates.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;&lt;a href="https://spress.yosymfony.com/" target="_blank" rel="noopener noreferrer"&gt;Spress&lt;/a&gt;&#10;:&lt;/strong&gt; Extensible static site generator built on Symfony micro-components.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;&lt;a href="https://couscous.io/" target="_blank" rel="noopener noreferrer"&gt;Couscous&lt;/a&gt;&#10;:&lt;/strong&gt; Generates developer documentation websites directly from Markdown files in GitHub repositories.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;&lt;a href="https://github.com/locomotivemtl/capro" target="_blank" rel="noopener noreferrer"&gt;Capro&lt;/a&gt;&#10;:&lt;/strong&gt; Lightweight PHP 8 static generator using Laravel Blade templates.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;&lt;a href="https://github.com/flatmark/flatmark" target="_blank" rel="noopener noreferrer"&gt;flatMark&lt;/a&gt;&#10;:&lt;/strong&gt; Flat-file Markdown website generator requiring no database dependencies.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;&lt;a href="https://phrozn.info/" target="_blank" rel="noopener noreferrer"&gt;Phrozn&lt;/a&gt;&#10;:&lt;/strong&gt; Component-based static site generator written in PHP.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="c-net-and-f"&gt;C#, .NET, and F#&#10;&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;strong&gt;&lt;a href="https://statiq.dev/" target="_blank" rel="noopener noreferrer"&gt;Statiq&lt;/a&gt;&#10;:&lt;/strong&gt; Highly modular, extensible pipeline-driven document generator for .NET developers.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;&lt;a href="https://wyam.io/" target="_blank" rel="noopener noreferrer"&gt;Wyam&lt;/a&gt;&#10;:&lt;/strong&gt; Predecessor to Statiq using Razor templates and Roslyn-powered configuration.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;&lt;a href="https://github.com/MarvinJWendt/AspNetStatic" target="_blank" rel="noopener noreferrer"&gt;AspNetStatic&lt;/a&gt;&#10;:&lt;/strong&gt; Static generation engine that prerenders pages from existing ASP.NET Core pipelines.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;&lt;a href="https://dotnet.github.io/docfx/" target="_blank" rel="noopener noreferrer"&gt;DocFX&lt;/a&gt;&#10;:&lt;/strong&gt; Microsoft&amp;rsquo;s technical documentation generator for .NET API references and Markdown.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;&lt;a href="https://sergeytihon.github.io/Fornax/" target="_blank" rel="noopener noreferrer"&gt;Fornax&lt;/a&gt;&#10;:&lt;/strong&gt; Static site generator written in F# using type-safe F# DSLs for page layouts.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="c-c-and-minimalist-tools"&gt;C, C++, and Minimalist Tools&#10;&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;strong&gt;&lt;a href="https://www.kainjow.com/soupault/" target="_blank" rel="noopener noreferrer"&gt;Soupault&lt;/a&gt;&#10;:&lt;/strong&gt; C and OCaml DOM-based generator that manipulates raw HTML elements through HTML parsers rather than text template tags.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;&lt;a href="https://gittup.org/tup/" target="_blank" rel="noopener noreferrer"&gt;Tup&lt;/a&gt;&#10;:&lt;/strong&gt; High-speed build system frequently adapted for low-latency static site pipelines.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;&lt;a href="https://github.com/saulpw/Treehouse" target="_blank" rel="noopener noreferrer"&gt;Treehouse&lt;/a&gt;&#10;:&lt;/strong&gt; Minimalist C-based Markdown processor generating lightweight static trees.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;&lt;a href="https://github.com/tiagokokada/smu" target="_blank" rel="noopener noreferrer"&gt;Smu&lt;/a&gt;&#10;:&lt;/strong&gt; Small Markdown engine designed for fast shell-based static builds.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="haskell-and-functional-languages"&gt;Haskell and Functional Languages&#10;&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;strong&gt;&lt;a href="https://jaspervdj.be/hakyll/" target="_blank" rel="noopener noreferrer"&gt;Hakyll&lt;/a&gt;&#10;:&lt;/strong&gt; Haskell static site compiler powered by Pandoc with an xmonad-like DSL.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;&lt;a href="https://franklinjl.org/" target="_blank" rel="noopener noreferrer"&gt;Franklin.jl&lt;/a&gt;&#10;:&lt;/strong&gt; Julia static engine focused on mathematics and LaTeX-rich scientific writing.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;&lt;a href="https://docs.racket-lang.org/pollen/" target="_blank" rel="noopener noreferrer"&gt;Pollen&lt;/a&gt;&#10;:&lt;/strong&gt; Lisp and Racket-powered digital book publishing environment created by Matthew Butterick.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;&lt;a href="https://github.com/greghendershott/frog" target="_blank" rel="noopener noreferrer"&gt;Frog&lt;/a&gt;&#10;:&lt;/strong&gt; Racket static blog generator using Markdown and Pygments.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;&lt;a href="https://obelisk.build/" target="_blank" rel="noopener noreferrer"&gt;Obelisk&lt;/a&gt;&#10;:&lt;/strong&gt; Elixir static site framework leveraging Elixir concurrency and EEx templates.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;&lt;a href="https://github.com/utdemir/coil" target="_blank" rel="noopener noreferrer"&gt;Coil&lt;/a&gt;&#10;:&lt;/strong&gt; Minimalist Elixir-based static site engine.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;&lt;a href="https://github.com/joewing/lamdba-pad" target="_blank" rel="noopener noreferrer"&gt;LambdaPad&lt;/a&gt;&#10;:&lt;/strong&gt; Erlang-based static website compiler.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;&lt;a href="https://cryogenweb.org/" target="_blank" rel="noopener noreferrer"&gt;Cryogen&lt;/a&gt;&#10;:&lt;/strong&gt; Clojure compiler built with Selmer and Markdown.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;&lt;a href="https://github.com/hashobject/perun" target="_blank" rel="noopener noreferrer"&gt;Perun&lt;/a&gt;&#10;:&lt;/strong&gt; Clojure build pipeline targeting the Boot and Clojure ecosystem.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="jvm-languages"&gt;JVM Languages&#10;&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;strong&gt;&lt;a href="https://jbake.org/" target="_blank" rel="noopener noreferrer"&gt;JBake&lt;/a&gt;&#10;:&lt;/strong&gt; Java generator supporting AsciiDoc, Markdown, FreeMarker, and Thymeleaf.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;&lt;a href="https://orchid.run/" target="_blank" rel="noopener noreferrer"&gt;Orchid&lt;/a&gt;&#10;:&lt;/strong&gt; Java and Kotlin documentation and site generator supporting multi-module builds.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;&lt;a href="https://typelevel.org/Laika/" target="_blank" rel="noopener noreferrer"&gt;Laika&lt;/a&gt;&#10;:&lt;/strong&gt; Scala text-to-HTML, EPUB, and PDF compiler.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;&lt;a href="https://github.com/kobo/gaiden" target="_blank" rel="noopener noreferrer"&gt;Gaiden&lt;/a&gt;&#10;:&lt;/strong&gt; Groovy documentation engine for turning Markdown into clean reference sites.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;&lt;a href="https://github.com/gaoxingliang/grain" target="_blank" rel="noopener noreferrer"&gt;Grain&lt;/a&gt;&#10;:&lt;/strong&gt; Groovy static generator using metaprogramming capabilities.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="swift"&gt;Swift&#10;&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;strong&gt;&lt;a href="https://github.com/JohnSundell/SwiftPublish" target="_blank" rel="noopener noreferrer"&gt;SwiftPublish&lt;/a&gt;&#10;:&lt;/strong&gt; Swift-native generator allowing entire websites to be declared in pure Swift code.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;&lt;a href="https://github.com/robb/SwiftSaga" target="_blank" rel="noopener noreferrer"&gt;Saga&lt;/a&gt;&#10;:&lt;/strong&gt; Code-first static generator in Swift with no configuration files or implicit build magic.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;&lt;a href="https://github.com/twostraws/Ignite" target="_blank" rel="noopener noreferrer"&gt;Ignite&lt;/a&gt;&#10;:&lt;/strong&gt; Declarative, pure-Swift static site builder adopting SwiftUI-like syntax.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="perl"&gt;Perl&#10;&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;strong&gt;&lt;a href="https://blosxom.sourceforge.net/" target="_blank" rel="noopener noreferrer"&gt;Blosxom&lt;/a&gt;&#10;:&lt;/strong&gt; Historic flat-file blogging engine originally written as a single Perl script.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;&lt;a href="https://metacpan.org/dist/Statocles" target="_blank" rel="noopener noreferrer"&gt;Statocles&lt;/a&gt;&#10;:&lt;/strong&gt; Comprehensive CMS and static publishing platform for Perl developers.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;&lt;a href="https://metacpan.org/dist/Dotiac-DTL" target="_blank" rel="noopener noreferrer"&gt;Dotiac DTL&lt;/a&gt;&#10;:&lt;/strong&gt; Django Template Language compiler ported to Perl for static page rendering.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="r-and-literate-data-science"&gt;R and Literate Data Science&#10;&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;strong&gt;&lt;a href="https://quarto.org/" target="_blank" rel="noopener noreferrer"&gt;Quarto&lt;/a&gt;&#10;:&lt;/strong&gt; Multilingual technical publishing system for R, Python, Julia, and Observable JavaScript, powered by Pandoc.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;&lt;a href="https://pkgs.rstudio.com/blogdown/" target="_blank" rel="noopener noreferrer"&gt;Blogdown&lt;/a&gt;&#10;:&lt;/strong&gt; R package integrating Hugo, Markdown, and R Markdown for data-driven websites.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;&lt;a href="https://bookdown.org/" target="_blank" rel="noopener noreferrer"&gt;Bookdown&lt;/a&gt;&#10;:&lt;/strong&gt; Authoring framework built on R Markdown for multi-chapter technical books.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="shell-awk-make-and-minimal-utilities"&gt;Shell, Awk, Make, and Minimal Utilities&#10;&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;strong&gt;&lt;a href="https://github.com/mtgrosser/bashblog" target="_blank" rel="noopener noreferrer"&gt;BashBlog&lt;/a&gt;&#10;:&lt;/strong&gt; Self-contained Bash script that generates a complete RSS-capable blog.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;&lt;a href="https://site44.com/" target="_blank" rel="noopener noreferrer"&gt;Site44&lt;/a&gt;&#10;:&lt;/strong&gt; Web service that compiles Dropbox folders into static hosting.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;&lt;a href="https://git.codemadness.org/saait/file/README.html" target="_blank" rel="noopener noreferrer"&gt;saait&lt;/a&gt;&#10;:&lt;/strong&gt; HTML site generator written in C and Awk for simple, lightweight pages.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;&lt;a href="https://github.com/stevenharradine/m4-bakery" target="_blank" rel="noopener noreferrer"&gt;m4-bakery&lt;/a&gt;&#10;:&lt;/strong&gt; Static generator using GNU m4 macro processing and Make pipelines.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;&lt;a href="https://github.com/andrewrk/gen_site" target="_blank" rel="noopener noreferrer"&gt;gen_site&lt;/a&gt;&#10;:&lt;/strong&gt; Ultra-minimalist Lua generator for developers working directly in HTML and Lua.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;&lt;a href="https://github.com/bixuanzju/hwaro" target="_blank" rel="noopener noreferrer"&gt;Hwaro&lt;/a&gt;&#10;:&lt;/strong&gt; High-speed static generator compiled to native code using Crystal.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="choosing-from-the-landscape"&gt;Choosing from the Landscape&#10;&lt;/h2&gt;&#10;&lt;p&gt;The right generator depends less on the total number of features than on the shape of the project:&lt;/p&gt;</description></item><item><title>The Modern Static Site Generator Landscape</title><link>http://polla.dev/ssg-book/posts/modern-static-site-generator-landscape/</link><pubDate>Mon, 14 Sep 2026 00:00:00 +0000</pubDate><guid>http://polla.dev/ssg-book/posts/modern-static-site-generator-landscape/</guid><description>&lt;p&gt;&lt;img src="http://polla.dev/ssg-book/icons/logo.svg" alt="SSG logo" loading="lazy" decoding="async"&gt;&lt;/p&gt;&#10;&lt;p&gt;Static site generators (SSGs) have evolved from simple Markdown compilers into specialized build engines powering marketing platforms, software documentation, and high-performance content networks. While all SSGs share the core philosophy of shifting rendering costs from request-time to build-time, their underlying architectures, developer ergonomics, and runtime footprints vary considerably.&lt;/p&gt;&#10;&lt;p&gt;The modern landscape includes Hugo, Astro, Eleventy, Docusaurus, VitePress, Quarto, Jekyll, Next.js, and Nuxt. Each occupies a different place on the spectrum between zero-JavaScript content publishing and fully hydrated application experiences.&lt;/p&gt;</description></item><item><title>The Unreasonable Effectiveness of Static Sites in the Agentic Age</title><link>http://polla.dev/ssg-book/posts/unreasonable-effectiveness-static-sites/</link><pubDate>Sun, 13 Sep 2026 00:00:00 +0000</pubDate><guid>http://polla.dev/ssg-book/posts/unreasonable-effectiveness-static-sites/</guid><description>&lt;p&gt;&lt;img src="http://polla.dev/ssg-book/icons/logo.svg" alt="SSG logo" loading="lazy" decoding="async"&gt;&lt;/p&gt;&#10;&lt;p&gt;For nearly two decades, the architecture of the web was dominated by a singular assumption: a website is an interface on top of a dynamic SQL database. Systems like WordPress, Drupal, and custom monolithic applications took root because non-technical users needed a graphical user interface (GUI) to modify database rows, which a server runtime would reassemble into HTML on every incoming HTTP request.&lt;/p&gt;&#10;&lt;p&gt;The explosion of Autonomous AI Agents has upended that paradigm.&lt;/p&gt;</description></item><item><title>The Fourth Pillar: Architectural Necessity and Design Specification for a Universal Static Site Generator Standard Mark</title><link>http://polla.dev/ssg-book/posts/fourth-pillar-ssg-standard/</link><pubDate>Sat, 12 Sep 2026 00:00:00 +0000</pubDate><guid>http://polla.dev/ssg-book/posts/fourth-pillar-ssg-standard/</guid><description>&lt;p&gt;&lt;img src="http://polla.dev/ssg-book/icons/logo.svg" alt="SSG logo" loading="lazy" decoding="async"&gt;&lt;/p&gt;&#10;&lt;p&gt;For more than three decades, the visual taxonomy of the World Wide Web has evolved alongside its underlying architectural models. When developers communicate technical competencies, stack topologies, or system designs, they do not rely solely on prose; they rely on an established visual shorthand.&lt;/p&gt;&#10;&lt;p&gt;We immediately recognize the orange shield of HTML5, the blue shield of CSS3, and the yellow badge of JavaScript. Together, they form the canonical trinity of client-side web development:&lt;/p&gt;</description></item><item><title>The book's website is live</title><link>http://polla.dev/ssg-book/posts/book-site-is-live/</link><pubDate>Fri, 11 Sep 2026 00:00:00 +0000</pubDate><guid>http://polla.dev/ssg-book/posts/book-site-is-live/</guid><description>&lt;p&gt;The website for &lt;em&gt;Static Site Generators in the Age of AI&lt;/em&gt; is now online. It&#10;holds the complete draft of the book: nineteen chapters that build one small&#10;website from its first Markdown page through publication, review, and&#10;long-term maintenance.&lt;/p&gt;&#10;&lt;p&gt;Three pages will help you find your way in:&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;a href="../../book/"&gt;The book&lt;/a&gt;&#10;, in chapter order.&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="../../paths/"&gt;Learning paths&lt;/a&gt;&#10;, which suggest where to start depending on&#10;what you already know.&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="../../topics/"&gt;Learning topics&lt;/a&gt;&#10;, the thirty-three topics the book teaches.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;The book is a working draft. Each chapter opens with a note recording how far&#10;it has been tested, and those notes will change as the chapters are tried with&#10;readers. Lecture slides and a hands-on playground are in preparation.&lt;/p&gt;</description></item></channel></rss>