Flat-file PHP CMS. Built on HATEOAS.

Download it. Create a file. Ship a page.

Simple setup and minimal configuration whether you're putting together a single page or a few thousand.

Pages are folders. Content is plain JSON, sitting alongside your code: readable in any editor, diffable in any git log.

data/pages/
  about/
    index.json     # uuid, view, metadata
    data.json      # title, body, whatever fields you add
  blog/
    hello-world/
      index.json
      data.json

HATEOAS

Every route returns HTML. HTMX drives all interactions. The URL pattern is the API: no JSON layer, no client-side routing, no state management.

Files & Folders

Every page is a folder, every piece of content is a JSON file. No connection strings, no migrations, no SQL queries.

Override system

Everything in phlat/ is a default. Drop a matching file in site/ and it takes precedence. No configuration required.

Version controlled

Content lives alongside code in plain files. Every change is a diff. Roll back a page edit the same way you roll back a commit.

Quick start

Clone the repo, install, and start the stack. The site is served at localhost:10000.

composer install
npm install && npm run build
docker compose up -d

Updates

v0.9.4

19 October 2026

<p>The release tasks are renamed: phlat:tag tags and pushes, phlat:release publishes the Forgejo release.</p>