<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/">
<channel>
<title>folderblog</title>
<link>https://folderblog.ninepointlabs.com/</link>
<description>A folder is a blog. Save a Markdown file and it&#39;s live seconds later: no front matter, no build step, no deploy command.</description>
<language>en</language>
<atom:link href="https://folderblog.ninepointlabs.com/feed.xml" rel="self" type="application/rss+xml"/>
<generator>folderblog 0.2.1</generator>
<lastBuildDate>Wed, 30 Sep 2026 00:00:00 +0000</lastBuildDate>
<item>
<title>Introducing folderblog</title>
<link>https://folderblog.ninepointlabs.com/blog/2026/introducing-folderblog/</link>
<guid isPermaLink="true">https://folderblog.ninepointlabs.com/blog/2026/introducing-folderblog/</guid>
<pubDate>Wed, 30 Sep 2026 00:00:00 +0000</pubDate>
<dc:creator>Nine Point Labs</dc:creator>
<category>release</category>
<description><![CDATA[<p>I’ve started more blogs than I’ve finished. Every time, the reason I stopped was the same: something stood between writing and publishing. Front matter to remember. A build step. A commit. A deploy that broke because a dependency moved.</p>
<p>folderblog removes all of it. <strong>A folder is a blog.</strong> Write a Markdown file, save it, and a few seconds later it’s live.</p>
]]></description>
<content:encoded><![CDATA[<p>I’ve started more blogs than I’ve finished. Every time, the reason I stopped was the same: something stood between writing and publishing. Front matter to remember. A build step. A commit. A deploy that broke because a dependency moved.</p>
<p>folderblog removes all of it. <strong>A folder is a blog.</strong> Write a Markdown file, save it, and a few seconds later it’s live.</p>
<!--more-->
<h2 id="what-0-1-0-does">What 0.1.0 does</h2>
<ul>
<li>A background service watches <code>~/Blogs</code>. Every folder in it is its own blog.</li>
<li>Posts need no front matter. The title comes from the first heading, the address from the file name, and the date from the moment folderblog first saw the post. That date is recorded once and never moves.</li>
<li>Publishing to GitHub Pages needs no trips to GitHub. You log in once through your own small GitHub App, and after that <code>folderblog new myblog</code> creates the repository and turns on Pages by itself.</li>
<li>Builds happen in a fresh folder and replace the live site only if everything rendered. A broken template changes nothing, and you get a notification naming the file and line.</li>
<li>Themes are Jinja templates that own every byte of the site. The engine owns only content discovery, Markdown, URLs, the RSS feed and the sitemap.</li>
</ul>
<h2 id="designed-by-agents">Designed by agents</h2>
<p>Every blog comes with an <code>AGENTS.md</code> file: the whole theme contract, written for a coding agent. To test it, we gave three agents the same blog and a one-line brief each. One built a text-only site, one a dense magazine with search, and one a sideways film strip. None of them needed a change to the engine. You can see all three on the <a href="https://folderblog.ninepointlabs.com/#themes">home page</a>.</p>
<h2 id="this-site">This site</h2>
<p>This website is a folderblog blog too. Its source is the <a href="https://github.com/ninepointlabs/folderblog/tree/main/site"><code>site/</code> folder</a> in the repository, and GitHub Actions builds it with the released binary on every push.</p>
<p><a href="https://folderblog.ninepointlabs.com/#install">Install folderblog</a> · <a href="https://folderblog.ninepointlabs.com/guide/">Read the guide</a> · <a href="https://github.com/ninepointlabs/folderblog">Source on GitHub</a></p>
]]></content:encoded>
</item>
</channel>
</rss>
