Content Model
Batoi Press stores content as files. Page and post bodies stay readable, while metadata is stored in adjacent JSON files.
Content Directory Pattern
Each page or post is stored as a directory containing:
meta.json
body.htmlmeta.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.jsonRelated Files
radpress/config/site.jsonfor site settings.radpress/config/routes.jsonfor routing configuration.radpress/config/users.jsonfor file-backed users.radpress/config/aif.jsonfor governed AIF provider settings.radpress/config/update.jsonfor 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.