<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title>Developer guide on Emet CMS</title>
		<link>https://docs.emetcms.com/developer/</link>
		<description>Recent content in Developer guide on Emet CMS</description>
		<generator>Hugo</generator>
		<language>en-us</language>
		
		
		
			<copyright>Documentation site content for Emet CMS. Theme based on [Hugo Book](https://github.com/alex-shpak/hugo-book) by [Alex Shpak](https://github.com/alex-shpak).
</copyright>
		
		
			<atom:link href="https://docs.emetcms.com/developer/index.xml" rel="self" type="application/rss+xml" />
			<item>
				<title>Local development</title>
				<link>https://docs.emetcms.com/developer/local-development/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>https://docs.emetcms.com/developer/local-development/</guid>
				<description>&lt;p&gt;Developing Emet means running the Vite dev server against a Hugo site. Most of the time that&amp;rsquo;s a site on your disk, with no GitHub involved at all; when you&amp;rsquo;re working on something GitHub-specific there&amp;rsquo;s a mode for that too. This page covers both, plus the full list of npm scripts.&lt;/p&gt;&#xA;&lt;h2 id=&#34;what-youll-need&#34;&gt;What you&amp;rsquo;ll need&lt;a class=&#34;anchor&#34; href=&#34;#what-youll-need&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Node.js 22.12 or later, with npm.&lt;/li&gt;&#xA;&lt;li&gt;A Hugo site to point at. Any site will do, though one with a few sections, some shortcodes and a theme will exercise more of the code. If you don&amp;rsquo;t have one, Emet will fall back to some built-in demo content.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;getting-it-running&#34;&gt;Getting it running&lt;a class=&#34;anchor&#34; href=&#34;#getting-it-running&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;git clone https://github.com/dmyates/emetcms.git&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;cd&lt;/span&gt; emetcms&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;npm install&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;HUGO_ROOT&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;/path/to/your/hugo/site npm run dev&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Open &lt;code&gt;http://localhost:5173&lt;/code&gt; and you should see the site&amp;rsquo;s sections in the sidebar. There&amp;rsquo;s no sign-in; the dev server signs you in as a made-up &amp;ldquo;Development User&amp;rdquo; and goes straight to the editor. If the site has no &lt;code&gt;admin/site.yaml&lt;/code&gt;, the dev server scans it and writes one (plus &lt;code&gt;admin/cms.yaml&lt;/code&gt;) first, so the very first load can take a second longer.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Testing</title>
				<link>https://docs.emetcms.com/developer/testing/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>https://docs.emetcms.com/developer/testing/</guid>
				<description>&lt;p&gt;Emet&amp;rsquo;s tests run on &lt;a href=&#34;https://vitest.dev/&#34;&gt;Vitest&lt;/a&gt;, with jsdom standing in for the browser and &lt;a href=&#34;https://testing-library.com/&#34;&gt;Testing Library&lt;/a&gt; for anything that renders. There are a little over a hundred test files, sitting next to the code they test, and they cover most of the subsystems: frontmatter parsing, slugs and filenames, config loading and defaults, the sync service, shortcode and table serialisation, the SEO rules, the Hugo config parser, the AI client and providers, the GitHub client and pull request helpers and a fair few hooks and components.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Architecture</title>
				<link>https://docs.emetcms.com/developer/architecture/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>https://docs.emetcms.com/developer/architecture/</guid>
				<description>&lt;p&gt;Emet is a React and TypeScript single-page app, built with Vite, that treats a Git repository as its database. This page is a tour of how that works: the backends that read and write content, how a running copy decides which one it&amp;rsquo;s using, where configuration comes from, how state is kept and what the build produces. It&amp;rsquo;s meant to be read before you go poking around in &lt;code&gt;src/&lt;/code&gt;.&lt;/p&gt;&#xA;&lt;h2 id=&#34;why-theres-no-backend&#34;&gt;Why there&amp;rsquo;s no backend&lt;a class=&#34;anchor&#34; href=&#34;#why-theres-no-backend&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;p&gt;The design decision everything else follows from is that Emet has no application server. The site repository already holds the content, Git already keeps the history, and GitHub already has an API for reading and writing files, opening pull requests and checking CI. Putting a server and a database in front of that would mean a second copy of the content, a sync problem between the two and another thing to host and keep patched. I didn&amp;rsquo;t want any of those, so the browser talks to GitHub directly and the repository stays the single source of truth.&lt;/p&gt;</description>
			</item>
	</channel>
</rss>
