Core concepts

An overview of editkraft’s building blocks and how they fit together.

#Pages & blocks

A page (ek_pages) is a tree of blocks. A block is one of your React components paired with a schema — a hero, a feature list, a contact section. A block’s content lives in editkraft; its look and structure stay in your code.

Editing happens inline: editable elements carry a data-ek-field, and the Studio turns those into fields you edit right in the preview. There is no properties panel — what you see is what you edit.

#Collections

Repeating, uniform content (blog posts, case studies, team members) is modelled as a collection instead of separate pages. Each item has its own small schema; in the Studio you manage the list in one place.

#Globals

Globals are cross-page values — contact details, a claim, social links — that appear in many places. Edit once, updated everywhere.

#Draft & publish

Every change starts as a draft. Only publishing pushes it live — including an automatic ISR revalidation of your page. Older states stay in the history and can be restored as a draft.

Public visitors only ever see published content — the migration’s RLS policies never hand drafts to the anon key.

#The two data planes

editkraft deliberately separates where data lives:

  • Your Supabase (content plane) — pages, versions, assets, collections. The content is yours and lives in your project (the ek_* tables).
  • editkraft control plane — accounts, websites, permissions, subscriptions. The Studio itself; it only touches your content through the connection you set up.

The public render of your site reads the content plane with the anon/publishable key — so, only published content.

#Next steps