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
- Blocks — schema, registry, rendering.
- Preview & editing — how inline editing works.