Headlessly

Content

Content, Asset, Site — typed publishing with SEO and multi-language support.

Content management with typed documents, media assets, and site configuration.

Content

Typed documents — pages, posts, articles, guides — with SEO fields, scheduling, and visibility controls.

import { Noun } from 'digital-objects'

export const Content = Noun('Content', {
  title: 'string!',
  slug: 'string##',
  excerpt: 'string',
  body: 'string',
  site: '-> Site.content',
  type: 'Page | Post | Article | Guide',
  categories: 'string',
  tags: 'string',
  status: 'Draft | Published | Scheduled | Archived',
  publishedAt: 'datetime',
  scheduledAt: 'datetime',
  author: '-> Contact',
  seoTitle: 'string',
  seoDescription: 'string',
  ogImage: 'string',
  noIndex: 'string',
  canonicalUrl: 'string',
  featuredImage: '-> Asset',
  readingTime: 'number',
  viewCount: 'number',
  visibility: 'Public | Private | Members',
  publish: 'Published',
  archive: 'Archived',
  schedule: 'Scheduled',
})
VerbEventDescription
publishPublishedMake publicly visible
archiveArchivedRemove from public view
scheduleScheduledSchedule for future publication

Asset

Files — images, videos, documents, audio, archives.

export const Asset = Noun('Asset', {
  name: 'string!',
  filename: 'string!',
  url: 'string!',
  type: 'Image | Video | Document | Audio | Archive | Other',
  mimeType: 'string!',
  extension: 'string',
  size: 'number!',
  width: 'number',
  height: 'number',
  alt: 'string',
  caption: 'string',
  duration: 'number',
  thumbnail: 'string',
  tags: 'string',
  uploadedBy: '-> Contact',
  source: 'string',
  license: 'string',
})

Site

Site configuration — determines how Content renders.

export const Site = Noun('Site', {
  name: 'string!',
  subdomain: 'string##',
  title: 'string',
  description: 'string',
  tagline: 'string',
  logo: 'string',
  favicon: 'string',
  primaryColor: 'string',
  accentColor: 'string',
  status: 'Draft | Published | Maintenance',
  visibility: 'Public | Private | Password',
  ogImage: 'string',
  content: '<- Content.site[]',
  defaultLanguage: 'string',
  supportedLanguages: 'string',
  timezone: 'string',
})

On this page