Batoi Press Docs

Content Model

Learn how Batoi Press stores pages, posts, metadata, menus, media, and generated runtime data.

Content Model

Batoi Press stores content as files. Page and post bodies stay readable, while metadata is stored in adjacent JSON files.

Batoi Press content model A diagram showing content directories with meta.json and body.html files feeding public pages. radpress/content/ meta.json body.html Batoi Press router + theme Public Page HTML response

Content Directory Pattern

Each page or post is stored as a directory containing:

meta.json
body.html

meta.json stores structured fields such as title, slug, status, date, and template hints. body.html stores the readable content body.

Example paths from the current build:

radpress/content/pages/home/meta.json
radpress/content/pages/home/body.html
radpress/content/pages/about/meta.json
radpress/content/pages/about/body.html
radpress/content/posts/first-blog-post/meta.json
radpress/content/posts/first-blog-post/body.html
radpress/content/menus/main.json
  • radpress/config/site.json for site settings.
  • radpress/config/routes.json for routing configuration.
  • radpress/config/users.json for file-backed users.
  • radpress/data/ for cache, logs, sessions, backups, versions, and exports.
  • radpress/config/update.json for installed version, update channel, and stable manifest URL.

The default update.json shape is:

{
  "current_version": "0.2.0",
  "channel": "stable",
  "stable_manifest_url": "https://www.batoi.com/pub/press/latest.json"
}

Publishing Principle

Keep content portable. A site should be understandable from its files without needing a database dump.