HERON

Pages in files, no database

Flat-file CMS

A flat-file CMS is a content management system that keeps pages in ordinary files, usually Markdown text, instead of a database. You edit a file, and the site changes. There is no database to install, back up or update.

HERON is a flat-file CMS of the build kind: it turns a folder of Markdown files into ready pages ahead of time, so the server only hands out files. Below: how flat-file systems work, when they fit, and what a HERON site folder looks like.

Database CMS and flat-file CMS

CMS with a databaseFlat-file CMS
Where pages liveRows in a databaseText files in a folder
What the server needsPHP or another language, a database, an admin panelFiles only, or files and PHP for some systems
BackupDatabase dump plus filesCopy the folder
History of changesPlugins, if anyGit keeps every version of every page
Moving to another hostExport, import, fix pathsCopy the folder
What can breakPlugins, updates, database, admin loginVery little: there is nothing running

Two kinds of flat-file CMS

What a site folder holds

Everything about a HERON site is in one folder, so it can live in git.

File or folderWhat it holds
site.yamlThe only settings file: domain, languages, menu, search and AI settings
content/Pages in Markdown, one folder per language, one file per page. The path of the file is the address of the page
media/Photos and images. HERON makes WebP and AVIF in every size it needs
data/Lists and tables the theme shows: team, prices, partners
theme/The look of the site: templates and styles

How you work with a flat-file site

You never start from an empty folder. HERON creates the structure, and from then on the work is copying and filling files.

  1. 1

    Create the structure

    heron new my-site -y takes the latest HERON image, and the image makes the folder: site.yaml, content/ with demo pages, media/, data/ and a theme.
  2. 2

    Look at a page

    Open the home page file of your site in any editor and the same page in the preview at localhost:8000. You see which part of the file becomes which block of the site.
  3. 3

    Copy a file for a new page

    Save any page of the theme demo as services.md next to it, or let HERON make a blank one with every section of its type. The file name becomes the address: /services/.
  4. 4

    Fill it in

    Change the settings block on top (title, heading, description) and the sections below, yourself or with an AI agent.
  5. 5

    Build and check

    The next build turns the new file into an HTML page, adds it to its section, the sitemap and llms.txt, and warns if something is missing.
  6. 6
  7. 7

What about a database?

By default a HERON site has no database: content, settings and lists live in files, and that is enough for most business sites, blogs and docs.

When a site needs live data, such as a booking calendar, stock levels or requests from forms, you connect a database through an optional module. It is not part of the default build, so a site that does not need it carries nothing extra.

Private key

The site and the database talk over a private key named in site.yaml. The page only reads data or sends a request; it cannot change the database structure.

Nothing to inject

The built container holds only ready pages and nginx. There is no program on the server that an attacker could feed code to in order to reach the database.

Parts of a page update without a reload

The rest of the page stays a ready file, so it opens as fast as before.

Start a flat-file site

One command creates the folder with a starter theme and demo pages.

docker run --rm -it -v "$PWD":/site -w /site --user $(id -u):$(id -g) ghcr.io/fmstm/heron:prod new my-site

Questions

Is a flat-file CMS good for a business site?

Yes, for sites that mostly publish information: services, prices, articles, contacts. For a shop with a cart or user accounts, choose a system built for that.

Can several people edit the site?

Yes. With git, each person works on their copy and changes are merged, with the full history of who changed what.

Is there an admin panel?

No admin panel on the server. Settings are filled in through the configurator questionnaire, pages are edited in any text editor, or by an AI agent.

How fast is it?

A new HERON site scores 100 for performance in Lighthouse on mobile, with a 3 KB home page. A site of 1004 pages in two languages builds in 3.3 seconds.

Is it free?

Yes. HERON is open source under AGPL-3.0, and static files can be hosted for free.