Start today

Go from zero to a fully functioning system in a few minutes with our starter kits. Or in a few hours when you start from scratch.

Then deploy to Contember Cloud with a single command and don't worry about hosting and maintenance.

Starter

Headless CMS

When you need to create a nice and simple website. This headless starter CMS includes pages, articles, form settings, access control and SEO support. It comes with a frontend Next.js website (no styling).

Starter

Headless Multilingual CMS

If you need a headless CMS with great support for multiple languages, you've found it. It contains the same as the headless CMS starter, but with support for multiple languages. You can even translate the entire administration interface.

Starter

Custom form builder

If you need to collect data from users but have specific requirements. Use this starter program and turn it into any data collection system. It includes 8 input blocks, responses and ACL settings.

Core

Start from scratch

Build what you want. Explore the basics with our quick tutorial. Then the sky is the limit.

How Contember works

Describe the data model and the GraphQL API is immediately available. Then use the Admin SDK to create an administration interface to suit your needs.

Start now, quickstart will walk you through it in 5 minutes.

$ npm exec "@contember/[email protected]" projectname

Define it

Define data model

export class Article {
  title = d.stringColumn().notNull()
  lead = d.stringColumn().notNull()
  content = d.oneHasOne(Content).removeOrphan().notNull()
  publishedAt = d.dateTimeColumn()
  link = d.oneHasOneInverse(Linkable, 'article').notNull()
  tags = d.manyHasMany(Tag)
  categories = d.manyHasMany(Category)
}

Define management UI

const ArticleForm = (
  <>
    <MainContent>
        <ArticleContentEditor />
    </MainContent>
    <Box>
        <IsPublishedField />
        <LinkUrlField derivedFrom="title" label="URL" />
        <SelectField field="categories"
            options="Category.name" label="Category" />
        <MultiSelectField field="tags"
            options="Tag.name" label="Tags" />
    </Box>
  </>
)

Use it

Connect with GraphQL

mutation {
  updateArticle(
    by: {link: {url: "/article/hello-world"}},
    data: {
        title: "Hello world!",
    }
  ) {
    ok
    errorMessage
  }
}

Write your first article

Screenshot of Contember Admin interface