Schema reference
Project: Test Project
Git integration (from cms/octocms.config.ts)#
- baseBranch:
main — default branch; feature branches are created from here; PRs target this ref.
- publishedPointerBranch:
cms/publish-pointer — branch that holds per-build pointer files under cms/pointers/ so Publish does not commit to a protected base branch.
Field formats (global)#
string
text
markdown
boolean
reference
image
number
datetime
json
slug
select
url
color
conditional
richtext
Collections#
Post (post)#
| Field | Label | Format | Flags | Reference |
|---|
body | Body | markdown | — | — |
featuredImage | Featured Image | image | — | — |
meta | JSON metadata | json | hint | — |
publishedAt | Published | datetime | hint | — |
slug | URL slug | slug | required, hint | — |
tags | Tags | string | hint, list | — |
title | Entry title | string | entryTitle, required, hint | — |
Item (item)#
| Field | Label | Format | Flags | Reference |
|---|
body | Body | markdown | — | — |
category | Category | select | options: general, featured, defaultOption: general | — |
enabled | Enabled | boolean | defaultBoolean, booleanLabels | — |
flags | Flags | select | multiple, options: new, sale, defaultOptions: new | — |
sortOrder | Sort order | number | hint | — |
title | Title | string | entryTitle | — |
Home Page (homePage)#
- hasMany: no (singleton-style)
| Field | Label | Format | Flags | Reference |
|---|
ctaSubtitle | CTA — Subtitle | string | — | — |
ctaTitle | CTA — Title | string | — | — |
features | Features — Cards | json | hint | — |
featuresTitle | Features — Title | string | — | — |
footerText | Footer — Text | string | — | — |
heroBadge | Hero — Badge | string | — | — |
heroDescription | Hero — Description | text | — | — |
heroHeadline | Hero — Headline | string | hint | — |
heroHeadlineAccent | Hero — Headline Accent | string | hint | — |
heroImage | Hero — Image | image | — | — |
heroImages | Hero - Images | reference | — | collections: homeHeroCarousel |
howItWorksDescription | How It Works — Description | text | — | — |
howItWorksTitle | How It Works — Title | string | — | — |
philosophyBody | Philosophy — Body | markdown | — | — |
philosophyTitle | Philosophy — Title | string | — | — |
steps | How It Works — Steps | json | hint | — |
title | Title | string | entryTitle | — |
useCases | Use Cases — Cards | json | hint | — |
useCasesTitle | Use Cases — Title | string | — | — |
Blog (blog)#
- hasMany: no (singleton-style)
| Field | Label | Format | Flags | Reference |
|---|
posts | Posts | reference | hint | collections: post; cardinality: manylegacy collection: post |
title | Title | string | entryTitle | — |
Author (author)#
| Field | Label | Format | Flags | Reference |
|---|
bio | Bio | markdown | — | — |
name | Name | string | entryTitle | — |
roles | Roles | reference | — | collections: role; cardinality: many |
Role (role)#
| Field | Label | Format | Flags | Reference |
|---|
title | Title | string | entryTitle | — |
Home Hero Carousel (homeHeroCarousel)#
| Field | Label | Format | Flags | Reference |
|---|
image | Image | image | — | — |
title | Title | string | entryTitle, required | — |
Public site cache tags#
Cache your public-page data fetchers (the ones calling query()) with 'use cache' and tag them with OCTOCMS_PUBLIC_CONTENT_CACHE_TAG (octocms:content) from octocms/lib/publicContentCacheTag.ts. The recommended shape is one async helper per page, defined inline at the top of the page file and called from both generateMetadata and the default export — co-located with what consumes it. A single tag covers every reader so they refresh together.
After saveFile, newFile (create entry), and removeFile, buildJsons() calls updateTag for that tag and revalidatePath('/', 'layout'). External cache invalidation can be wired up via a Route Handler that calls revalidateTag(tag, { expire: 0 }).