Skip to main content
The CMS panel is the day-to-day editing surface for everyone who isn’t writing code. It lives in the right pane of the /v3 editor. Switch the pane to CMS mode to get a Webflow-style editing experience for the structured content declared in your manifest. This page is a tour of every part of the panel.

Opening the CMS Panel

1

Open your project in /v3

From the dashboard, click your project to open it in the editor.
2

Switch the right pane to CMS

The right pane has three modes — Preview, Code, and CMS. Click CMS in the pane header.
If your project doesn’t have a manifest yet, the panel shows an Initialize CMS button. Click it to scaffold hiveku.cms.json with a default blog collection. See Initialize Your CMS for details.
3

Pick a collection

The collection picker at the top of the panel lists every collection from the manifest. Click one to load its entries.

The Collection Picker

The collection picker shows every collection declared in your manifest, in the order they appear there. Each row shows:
  • The collection’s name
  • The number of entries (cached, refreshes on every save)
  • An icon based on the format — page icon for MDX, list icon for JSON
A gear icon at the top opens the Collection Manager — the UI for editing the manifest itself (add, remove, or rename collections; add fields).

The Entry List

Once you pick a collection, the panel shows the entry list:
  • Search — full-text search across all string and markdown fields
  • Status filter — if your collection has a status field with draft/published options, the filter bar shows tabs for each
  • Sort — defaults to defaultSort from the manifest; click any column header to sort by it
  • Pagination — 50 entries per page, scrollable
  • + New entry — opens a fresh form
  • Bulk actions — select multiple entries with checkboxes for delete, status change, or export
For singleton collections, the list view is skipped — the form opens directly.

The Form Editor

Click an entry to open the form editor. This is the bulk of where you’ll spend time. The form is generated from the manifest’s field definitions — there’s no separate form template to maintain. Each field type renders a dedicated control:
  • string → text input or textarea
  • markdown → split-pane editor with live preview
  • image → drop-zone with media library picker
  • select → dropdown
  • array → reorderable list
  • reference → searchable picker
See Field Types for the full mapping.

Live Preview Sync

As you type, the preview pane updates in real time. The CMS panel debounces changes by ~400ms before pushing them to the preview iframe, so you get fast feedback without overwhelming the build.
Live preview only works for collections with a routePattern — the panel needs a URL to navigate the preview to. JSON collections without a route still save fine; you just won’t see the entry rendered until your code reads from the CMS.

Validation

Validation runs in two passes:
  1. Client-side — required fields, max length, regex pattern, URL syntax. Errors appear inline as you type.
  2. Server-side — manifest-aware checks (reference target exists, slug is unique within the collection, file path is writable). Returned as a 422 with field-level error messages on save.
A red banner at the top of the form summarizes any errors. The save button stays disabled until they’re resolved.

Saving

Click Save (or hit Cmd+S / Ctrl+S) to write the entry to disk. Saves are atomic — either the whole entry writes or none of it does. After save:
  • The entry list refreshes
  • A new version is pushed to builder_code_versions with a snapshot of the file
  • Webhooks fire (if any are configured for entry.updated)
  • The preview iframe refreshes if it’s pointed at this entry’s route
There’s no separate “publish” step beyond toggling a status field — content goes live with your next deploy.

Version History

Every save creates a version. Open the version history drawer from the form’s three-dot menu:
1

Open the menu

Click the three-dot icon at the top right of the form.
2

Open Version History

A drawer slides in from the right with a chronological list of versions — most recent at the top. Each version shows the saved-at timestamp and the author.
3

Compare or restore

Click any version to load it into a read-only diff view. Click Restore this version to bring its content back into the form. You can then edit further or save as-is.
Restore brings the version’s content into the form but doesn’t auto-save — you still need to click Save. This means you can preview a restore without committing to it.

Bulk Actions

Select multiple entries from the list with the checkboxes at the left. The bulk actions bar appears at the top with:
  • Delete — removes the selected files (with confirmation)
  • Set status — for collections with a status field, change all selected entries at once
  • Export — download selected entries as JSON
  • Move — change the slug pattern for several entries (advanced; useful for re-categorizing)
For full bulk imports from CSV/JSON, see Bulk Import Content.

Image and File Upload

The image and file field controls support:
  • Drag-and-drop from your file system
  • Paste from clipboard (image only)
  • Click-to-browse
  • “Choose existing” — opens the media library showing every previously-uploaded asset
Uploads go to your project’s media bucket and are served through Hiveku’s CDN. The file path stored in the entry is a project-relative URL like /uploads/2026/04/hero.jpg.
Image fields with metadata: true capture width, height, and alt text on upload — useful for sites that need accurate <img> dimensions to avoid layout shift.

References Picker

A reference field renders as a search box that opens a popup with the target collection’s entries. Type to filter; click to select. For multi-references (multiple: true), you can pick several entries; they show as removable chips above the picker. The picker shows the displayField from the manifest if set, otherwise falls back to the entry’s title or name.

Search and Filter

The search box at the top of the entry list runs full-text search across:
  • All string fields
  • All markdown fields (matches body content too)
  • The slug
Filters depend on the schema:
  • Status filter — if status is a select with draft/published
  • Tag filter — if tags is an array of strings, click any tag chip in an entry preview to filter by it
  • Date range — if there’s a date field with defaultSort
Search and filters compose — searching while a status filter is active narrows within the active filter.

Keyboard Shortcuts

ShortcutAction
Cmd+S / Ctrl+SSave the current entry
Cmd+K / Ctrl+KOpen the search box
Cmd+N / Ctrl+NCreate a new entry
EscClose the form, return to the entry list
Cmd+Shift+H / Ctrl+Shift+HToggle version history drawer

Troubleshooting

Your project doesn’t have hiveku.cms.json yet. Click Initialize CMS to scaffold it, or follow Initialize Your CMS.
Server-side validation failed. Check the red banner at the top of the form for the specific field and reason — common ones are missing required fields, slug conflicts with another entry, or a reference pointing at an entry that no longer exists.
The collection might not have a routePattern, or the preview iframe is pointed at a different page. Click the entry’s slug under the form title to navigate the preview to that entry’s route.
Saving in the CMS panel writes to the project files. Your live site only reflects the change after the next deploy. Click Deploy in the top bar to push.
Check the accept rule on the field (some image fields restrict to specific MIME types) and your project’s media quota. Images larger than 25 MB are rejected by default.
Versions are captured per save. A brand-new entry won’t have a history until you save it at least twice. The current state is implicit; the drawer shows what came before.

What’s Next?

Bulk Import

Import many entries at once from CSV or JSON

Field Types

See every form control in detail

References

Link collections with the references picker

Migrate to CMS

Bring hardcoded content into the CMS panel