Skip to main content
Batoi Press Docs

Content Model

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

Version 1.6.1 Active public source Reviewed Aug 19, 2026 Next review Oct 21, 2026

Owner: Batoi Engineering Reviewed by: Batoi Press Maintainers Source revision: 72bd58f

Browse Batoi Press Documentation Content Model

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, workflow status, date, parent page, latest-post settings, featured-image references, featured-image alternative text, subtitle, reviewer notes/history, publish timing, unpublish timing, post layout, 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/pages/about/team/meta.json
radpress/content/pages/about/team/body.html
radpress/content/posts/first-blog-post/meta.json
radpress/content/posts/first-blog-post/body.html
radpress/content/menus/main.json
radpress/content/widgets/sidebar.json
  • radpress/config/site.json for site settings.
  • radpress/config/routes.json for routing configuration.
  • radpress/config/users.json for file-backed users.
  • radpress/config/aif.json for governed AIF provider settings.
  • radpress/config/update.json for installed version, update channel, public keys, signed-package enforcement, and stable manifest URL.
  • radpress/data/ for cache, logs, sessions, backups, versions, and exports.
  • Token, session, revision, audit, and recovery data should stay under private config/data paths and must not be exposed as public assets.

Uploaded assets are organized by role while legacy /media URLs remain supported:

radpress/content/assets/images/YYYY/MM/
radpress/content/assets/documents/YYYY/MM/
radpress/content/assets/multimedia/audio/YYYY/MM/
radpress/content/assets/multimedia/video/YYYY/MM/
radpress/content/assets/styles/custom/
radpress/content/assets/scripts/custom/
radpress/content/assets/libraries/{name}/{version}/
radpress/content/assets/images/site/

The default update.json shape is:

{
  "current_version": "2.1.1",
  "channel": "stable",
  "stable_manifest_url": "https://www.batoi.com/pub/press/latest.json",
  "require_signed_packages": true,
  "release_public_keys": {
    "batoi-press-release-2026-01": "..."
  }
}

Publishing Principle

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