JustFlows

Documentation is English-only for now. The rest of the site follows your language.

Core concepts

The building blocks of a Justflows site: sites, content, blocks, themes, plugins, hooks, and cache.

7 min read

Site

A Justflows process serves one site (created by the installer). Settings, languages, menus, and content all hang off that site id. Multi-site in one process is not the CE model.

Content

The admin API accepts two types today: `post` and `page`. Each row has a title, slug, locale, excerpt, optional fields JSON, a block document, and a status. See Content.

Blocks

A page is a JSON tree { version: 1, blocks: [] }. Core ships 18 block types (paragraph, heading, image, columns, hero, and more). The visual builder at /admin/content/:id/builder edits that tree. See Block editor and Core blocks.

Themes and CSS providers

Themes are .jfpkg packages with templates, patterns, and justflows-theme.json. CSS providers are separate packages (Bootstrap, Pico, Tailwind, or none) activated under Design. The default theme id is justflows.default.

Plugins and hooks

Write a plugin by creating plugins/<name>/ in the CE source (copy plugins/hello-world). Plugins declare a manifest (id, version, their own license, permissions) and an activate(ctx) function. Core is MIT; extensions are not MIT just because they use the SDK. Installed packages must use a GPL-compatible SPDX identifier. They change behaviour through hooks: actions observe, gates can cancel, filters transform. Import types from @justflows/sdk — never from @justflows/core.

Users and capabilities

Five roles: administrator, editor, author, contributor, subscriber. Capabilities such as content:publish and plugins:install are the stable public names; see Users and roles.

Cache

jf-cache is the built-in object cache (memory or filesystem; Redis reserved). Public HTML, published content, menus, theme mods, and CSS provider lists all sit behind it. Plugins get a namespaced ctx.cache.

.jfpkg
Zip-based package format for plugins, themes, and CSS providers. Installed from Admin or justflows plugin install.
Capability vs permission
Users have capabilities (what a role may do). Plugins declare permissions in the manifest (what the plugin is allowed to hook or call).