Overview
Discover what makes Keystone powerful
Keystone 6 is a modern, open‑source headless CMS and application framework written in **TypeScript**. It allows developers to declare data schemas with a concise, declarative API and instantly generates both a **GraphQL** endpoint and an auto‑generated **admin UI**. The core philosophy is “no boilerplate, just the APIs you need,” so developers can focus on business logic while Keystone handles data persistence, authentication, and field validation. Under the hood it relies on **Node.js**, **Express** (or any compatible HTTP server), and a flexible ORM layer that supports PostgreSQL, MySQL, MariaDB, SQLite, and MongoDB.
Language & Runtime
Framework Layer
ORM & Persistence
Admin UI
Overview
Keystone 6 is a modern, open‑source headless CMS and application framework written in TypeScript. It allows developers to declare data schemas with a concise, declarative API and instantly generates both a GraphQL endpoint and an auto‑generated admin UI. The core philosophy is “no boilerplate, just the APIs you need,” so developers can focus on business logic while Keystone handles data persistence, authentication, and field validation. Under the hood it relies on Node.js, Express (or any compatible HTTP server), and a flexible ORM layer that supports PostgreSQL, MySQL, MariaDB, SQLite, and MongoDB.
Architecture
- Language & Runtime: TypeScript + Node.js (v18+). The runtime is lightweight, enabling easy containerization with Docker or serverless deployments.
- Framework Layer: Built on top of Express, Keystone exposes a middleware stack that can be composed with other libraries (e.g., Next.js API routes, Apollo Server).
- ORM & Persistence: Uses a custom query engine that translates schema definitions into SQL or MongoDB queries. The data layer is pluggable; you can swap adapters for different databases without touching your schema code.
- Admin UI: A React‑based SPA generated from the schema. It uses WebSocket for real‑time updates and supports custom field components, layouts, and theming.
- GraphQL API: Auto‑generated schema with CRUD mutations, pagination, and access control hooks. The API is fully typed in TypeScript, making client code generation straightforward.
Core Capabilities
- Schema‑driven Models: Define lists with fields such as
text,relationship,file,image, and custom field types. Relationships support one‑to‑many, many‑to‑many, and self‑referencing. - Fine‑grained Access Control: Declarative ACL per field and per operation (
query,create,update,delete). Hooks allow dynamic evaluation based on the current user or request context. - File Storage: Built‑in adapters for local disk, Amazon S3, Google Cloud Storage, and custom storage services.
- Hooks & Middleware:
beforeOperation,afterOperation, andvalidatehooks for each list, plus global request/response middleware. - Internationalization: Field types can be marked as
localized, automatically handling locale‑specific values. - Data Migration: Automatic migration scripts that evolve the database schema as your TypeScript models change.
Deployment & Infrastructure
Keystone is fully self‑hostable on any platform that can run Node.js:
- Containerization: Official Docker images are available; the application is stateless, making horizontal scaling trivial.
- Cloud Platforms: Deploy to Vercel, Netlify (via serverless functions), AWS Elastic Beanstalk, DigitalOcean App Platform, or any Kubernetes cluster.
- Scalability: Because the admin UI and GraphQL endpoints are stateless, multiple instances can share a single database connection pool. Read replicas can be used for heavy read workloads.
- Security: Supports JWT, session cookies, and integration with external OAuth providers. The framework encourages HTTPS and secure headers.
Integration & Extensibility
- Plugins: Keystone’s plugin system lets you add reusable functionality such as SEO fields, analytics tracking, or custom authentication providers.
- Webhooks: Built‑in support for sending events to external services after CRUD operations, enabling CI/CD pipelines or third‑party integrations.
- Custom Resolvers: While the auto‑generated GraphQL schema covers most use cases, developers can extend it with custom queries and mutations.
- Admin UI Customization: Replace field components, add custom pages, or modify the layout via React overrides.
Developer Experience
- TypeScript First: Full type safety across the stack, from schema to API responses.
- Documentation & Community: Comprehensive docs with code examples, a growing community on Slack and GitHub Discussions, and frequent releases (v6 is actively maintained).
- Zero Boilerplate: A single
keystone.tsfile defines the entire data layer; no separate migration or schema files. - Testing: Built‑in utilities for testing hooks and GraphQL queries; compatible with Jest or Vitest.
Use Cases
- Content‑heavy websites: Quickly spin up a blog, news portal, or e‑commerce catalog with an admin UI and GraphQL API.
- Internal tooling: Build custom dashboards, inventory systems, or CRM backends without reinventing CRUD logic.
- Headless microservices: Use Keystone as a data store behind other services, exposing only the necessary GraphQL endpoints.
- Rapid prototyping: Define a schema and immediately see an admin UI, ideal for MVPs or proof‑of‑concept projects.
Advantages
| Aspect | Keystone 6 | Alternatives |
|---|---|---|
| Performance | Lightweight Node.js, optimized query engine | Heavyweight PHP or Ruby on Rails stacks |
| Flexibility | Declarative schema + full access control | Fixed CMS templates or low‑code platforms |
| Licensing | MIT, fully open source | Proprietary or SaaS models |
| Extensibility | Plugin API, custom resolvers, webhooks | Limited plug‑in ecosystems |
| Developer Focus | TypeScript, zero boilerplate |
Open SourceReady to get started?
Join the community and start self-hosting Keystone today
Related Apps in other
Immich
Self‑hosted photo and video manager
Syncthing
Peer‑to‑peer file sync, no central server
Strapi
Open-source headless CMS for modern developers
reveal.js
Create stunning web‑based presentations with HTML, CSS and JavaScript
Stirling-PDF
Local web PDF editor with split, merge, convert and more
MinIO
Fast, S3-compatible object storage for AI and analytics
Weekly Views
Repository Health
Information
Explore More Apps
Raneto
Fast Markdown‑powered knowledge base for Node.js
Ganymede
Archive Twitch streams with live chat playback
Lemmy
Decentralized link aggregator and forum

Fossil
All-in-one distributed SCM with built‑in web tools
Liwan
Privacy‑First Web Analytics in a Single Binary
Ente
Secure, open‑source photo storage with end‑to‑end encryption
