Modern, composable CMS for developers.
Trokky is a headless content management system built with TypeScript. Define your content with code, store it anywhere, and access it through auto-generated APIs.
- Schema-as-code — define content types with TypeScript, get full type safety
- Pluggable storage — filesystem or PostgreSQL for data, filesystem for media
- Built-in Studio — React-based admin interface served from the same server
- REST API — auto-generated endpoints for all your content types
- OAuth2 — device flow authentication, API tokens, passkeys
- i18n — built-in multi-language support
- Media processing — image variants where
sharpis available (it is an optional dependency)
Full documentation, including a start-to-finish build, deployment shapes, and an honest list of the things that will bite you: trokky.dev
# Install the CLI
brew install trokky/tap/trokky
# Scaffold a new project
trokky create my-site
# Or with specific options
trokky create my-site --template full --data postgres --mail resendThis generates a ready-to-run project with Express server, Trokky config, schemas, and Studio.
cd my-site
cp .env.example .env
npm install
npm run devYour CMS is running at http://localhost:3000 with Studio at /studio and API at /api.
The Trokky CLI manages your instances from the terminal:
trokky login https://cms.example.com # Authenticate via browser
trokky status # Check connection
trokky docs list posts --format table # Browse content
trokky backup --output backup.zip # Full backup with media
trokky restore --input backup.zip # Restore to any instanceInstall: brew install trokky/tap/trokky or curl -sSL https://raw.githubusercontent.com/Trokky/cli/main/install.sh | sh
export const articleSchema = {
name: 'article',
title: 'Article',
type: 'document',
fields: {
title: { type: 'string', required: true },
slug: { type: 'slug', source: 'title' },
content: { type: 'richtext' },
cover: { type: 'media', options: { accept: 'image/*' } },
publishedAt: { type: 'date', default: 'now' },
},
}This gives you:
GET /api/collections/article— list articlesPOST /api/collections/article— create articleGET /api/collections/article/:id— get by ID- Studio UI for editing in the browser
- TypeScript types via
trokky generate-types
| Repo | Description |
|---|---|
| trokky | The CMS itself — server, Studio, and client SDK |
| cli | CLI tool — backup, restore, scaffolding, document management |
| homebrew-tap | Homebrew formula for macOS install |
Published to npm under the @trokky scope. No registry configuration, no token:
npm install @trokky/trokky @trokky/studio @trokky/client| Package | What it is |
|---|---|
@trokky/trokky |
CMS server: engine, routes, storage adapters, Express integration |
@trokky/studio |
React admin UI and the field system |
@trokky/client |
Frontend SDK: typed query builder and type generation |
All three share one version number.
MIT