AI Decision System
Replayable, offline-verifiable records for AI-assisted go/no-go decisions: experiment promotions, typed model answers and human-approved actions.
Your Postgres. Your content. Your CMS. Typed content and a Git-like API, living in your Postgres.
Developer toolsTypeScript · MDXGitHub @weepaho3OnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
Composable, Git-like headless CMS for TypeScript
Translation pending
Taken from the repository README
Loading the full README.
Read the full README ↗A composable, block-based, Git-like headless CMS for TypeScript — powered by Drizzle ORM (Postgres) with a fully type-safe API.
⚠️ Work in progress — not production-ready. createCMS is pre-1.0, under active development, and has not been tested in production. Expect breaking changes, rough edges, and bugs (including possible data-loss edge cases). Use it for prototyping and exploration — not for production workloads. Pin an exact version.
Upgrading?
BREAKING-CHANGES.mdlists every break since 0.2.0, with the migration for each one.
createcms CLI — scaffold config + generate the Drizzle schemabun add @createcms/core
# or: npm install @createcms/core
import { createCMS } from '@createcms/core';
export const cms = createCMS({
db, // your Drizzle client
collections: { pages }, // your collection definitions
// S3-compatible storage (dummy values for local dev)
media: {
provider: 'custom',
hostname: process.env.S3_HOSTNAME ?? 'localhost',
region: process.env.S3_REGION ?? 'us-east-1',
accessKeyId: process.env.S3_ACCESS_KEY_ID ?? 'dummy',
secretAccessKey: process.env.S3_SECRET_ACCESS_KEY ?? 'dummy',
bucketName: process.env.S3_BUCKET ?? 'dummy',
publicUrl: process.env.S3_PUBLIC_URL ?? 'https://cdn.example.com',
},
});
Put this in lib/cms.ts (or src/lib/cms.ts / cms.ts) so bunx createcms generate
finds it; or pass a path: createcms generate ./path/to/cms.ts.
Generate the database schema, then run your migrations:
bunx createcms generate
Then mount the CMS HTTP router on a catch-all route — see the Next.js integration guide.
See the docs — start with quickstart and installation, then the reference for collections, branches, publishing, and plugins.
The docs site lives under apps/docs and renders locally with
bun run --filter=docs dev. A hosted URL will be linked here once the site is
deployed.
This is a bun + turbo monorepo:
packages/cms — @createcms/core, the composable headless CMSpackages/schema — @createcms/schema, the shared type vocabulary (types only, private; inlined into core and react)packages/react — @createcms/react, headless editor primitivesapps/docs — the documentation site + landing page (Fumadocs)examples/ — runnable example appsbun install
bun run build # turbo build (bunchee)
bun run check-types # tsc --noEmit
bun run test # vitest (PGlite-backed)
bun run --filter=@createcms/react test:browser # Chromium via Playwright
See CONTRIBUTING.md.