Open source Full-stack TypeScript

The framework we built to build everything else.

Contember is an open-source, full-stack framework designed for the AI era. Define your data model in TypeScript — get instant GraphQL APIs, authentication, role-based access control, and a React admin UI.

schema.ts this code → that app ↗
1import { SchemaDefinition as def } from '@contember/schema-definition'
2
3export class Project {
4 name = def.stringColumn().notNull()
5 tasks = def.oneHasMany(Task, 'project')
6}
7
8export class Task {
9 title = def.stringColumn().notNull()
10 status = def.enumColumn(TaskStatus).notNull()
11 priority = def.intColumn()
12 assignee = def.manyHasOne(User, 'tasks')
13 project = def.manyHasOne(Project, 'tasks')
14 tags = def.manyHasMany(Tag)
15}
16
17export const TaskStatus = def.createEnum(
18 'backlog', 'in_progress', 'done'
19)
// That's it. You now have a GraphQL API,
// auth, RBAC, and migrations — ready to deploy.
How it works

Define your model. Get everything else.

Contember inverts the typical development process. Instead of building APIs, auth, and admin panels by hand, you define your data model — and the framework generates the rest.

01 Define
export class Task {
  title = def.stringColumn()
  status = def.enumColumn(TaskStatus)
  assignee = def.manyHasOne(User)
}
02 Generate
query {
  listTask(
    filter: { status:
      { eq: in_progress } }
  ) {
    title
    assignee { name }
  }
}
03 Build
<DataGrid entities="Task">
  <TextColumn
    field="title"
    header="Task"
  />
  <SelectColumn
    field="assignee"
  />
</DataGrid>
Capabilities

What you get out of the box

GraphQL API generation

Define your model, get role-specific, high-performance GraphQL APIs automatically. No manual endpoint wiring.

Authentication & authorization

Built-in user management, login flows, and the Tenant API. Skip integrating third-party auth.

Role-based access control

Declare complex, cell-level access rules. Secure by default, flexible by design.

React data binding

Automatic data binding between React components and GraphQL. No manual fetching, no state management boilerplate.

PostgreSQL database

Enterprise-grade, open-source database. Well-structured, fully managed, production-ready from day one.

Schema migrations

Update, generate, deploy. No data loss.

Actions & webhooks

Automate workflows on data changes.

Event log & audit trail

Track every operation. Full history.

Multi-tenant & multi-language

Multiple tenants and locales built in.

WYSIWYG editor

Rich text with custom blocks.

2FA & OAuth

Enterprise security built in.

Built for the AI era

The framework AI agents can actually use.

Most frameworks were designed for humans writing code by hand. Contember was designed with a different assumption: that AI agents will increasingly be the ones building, modifying, and maintaining applications.

Minimal context needed. Clear, observable architecture. Declarative patterns that LLMs can reason about. Your application doesn't just support AI features — it's built on an AI-friendly foundation.

ai-agent.ts
1// AI agent modifies schema
2const schema = await agent.read(
3 'schema.ts'
4)
5
6// One file = entire data model
7await agent.addField(
8 'Article',
9 'summary',
10 'stringColumn'
11)
12
13// API updated automatically
14await migrate() //
Deployment

Your cloud or ours.

https://yourapp.contember.cloud

Contember Cloud

Fully managed deployment. Push your code, we handle the rest — infrastructure, scaling, security patches, database backups. Plans from free to enterprise.

See pricing
$ docker compose up -d

Self-hosted

Open source under Apache 2.0. Deploy on your own infrastructure — AWS, GCP, Azure, bare metal. Full control, no license fees for core features.

Self-hosting docs

Start building today.

Get a Contember project running in minutes. Explore the docs, clone a template, or jump straight to code.

$ npm exec "@contember/create@latest" my-app

Want us to build it for you?

We use this framework every day to build custom applications. If you'd rather have us handle it — we'd love to talk.

Talk to us