KeystoneJS is a free, open source frameworks & platforms project written in TypeScript and released under MIT. It has 9,974 GitHub stars, 1,263 forks and 138 open issues, and was last pushed 4 days ago. On this registry it ranks #13 of 28 tracked projects in Frameworks & Platforms, with 5 head-to-head comparisons available.

What is KeystoneJS?

What it is

KeystoneJS is an open-source Node.js CMS and application framework written in TypeScript and licensed under the MIT License. It lives in the Node.js, GraphQL, and React ecosystem, and its GitHub description calls it a headless CMS for Node.js. The project addresses the need to build a custom back end without writing all of the common content-management plumbing by hand.

The concrete problem it solves is schema-to-interface setup. A developer describes a schema, and KeystoneJS generates a GraphQL API and a management UI for content and data. The README presents this as a way to avoid boilerplate and bootstrapping while keeping the control of a bespoke back end.

Key capabilities

  • KeystoneJS generates a GraphQL API from a described schema.
  • It provides a management UI for editing content and data.
  • It is published as TypeScript packages under the @keystone-6/* npm namespace.
  • It offers a create-keystone-app CLI for starting a first project.
  • It includes a collection of examples that can be run locally to learn specific features.
  • It supports Node Maintenance and Active LTS versions of Node.js through continuous integration.
  • It follows semantic versioning and maintains a public roadmap.

Who uses it and how

  • Node.js developers use it to build a back end where a schema defines the GraphQL API and management interface.
  • Teams use the management UI to work with content and data instead of building a separate management interface.
  • Developers learning features use the included examples and documentation to understand how individual Keystone features work.
  • Contributors use GitHub issues, discussions, Slack, and Twitter to report bugs, request features, and follow project updates.

Getting started

The typical install path is to use npm with the @keystone-6/* packages and the create-keystone-app CLI. The project also directs users to its website documentation, API reference, guides, and examples.

When to use it — and when not to

KeystoneJS is useful when a team wants an open-source, MIT-licensed Node.js framework that turns a schema into a GraphQL API and management UI. It is less suitable when a project needs complete guides and examples, because the README says those materials are still being improved. It is also less suitable when a deployment must run on Pending or End-of-Life Node.js versions, since supported packages target Node Maintenance and Active LTS versions, and Keystone 5 is now in maintenance mode.

project readme (upstream, from github) — read inline




Keystone helps you build faster and scale further than any other CMS or App Framework. Describe your schema, and get a powerful GraphQL API & beautiful Management UI for your content and data.

No boilerplate or bootstrapping – just elegant APIs to help you ship the code that matters without sacrificing the flexibility or power of a bespoke back-end.

Contents

Usage & Documentation

Keystone 6 is published to npm under the @keystone-6/* namespace.

You can find our extended documentation on our website, but some quick links that might be helpful:

  • Read Why Keystone to learn about our vision and what's in the box.
  • Getting Started walks you through first steps with the create-keystone-app CLI.
  • Our Examples contain a growing collection of projects you can run locally to learn more about a Keystone feature.
  • An API Reference contains the details on Keystone's foundational building blocks.
  • Some Guides offer practical walkthroughs on how to build with those blocks.

💡 While our API Reference is generally complete, we are are still working hard on increasing the fidelity of our guides and examples. If you have an example you'd like see, please open a GitHub discussion!

Our @keystone-6/* packages are written for the Node Maintenance and Active LTS versions of Node; and our continuous integration seamlessly tracks that. You may have success with Node versions that are Pending or End-of-Life, but you may have problems too.

Looking for Keystone 5?

The Keystone 5 codebase is now in maintenance mode and lives at keystonejs/keystone-5. For more information read Keystone 5 and beyond.

Enjoying Keystone?

Interested in what's new?

For a birds-eye view of what the Keystone project is working towards, check out our Roadmap.

Feedback

Share your thoughts and feature requests on Slack (preferred) or Twitter. Bugfixes and issues always welcome.

Versioning

Keystone follows semver.

Code of Conduct

Keystone adheres to the Contributor Covenant Code of Conduct.

Security

For vulnerability reporting, please refer to our security policy.

License

Thinkmill

Copyright (c) 2024 Thinkmill Labs Pty Ltd. Licensed under the MIT License.

Frequently asked questions

Is KeystoneJS free to use?

KeystoneJS is open source under the MIT licence. There is no licence fee and no seat count — you can self-host it or, where the project offers one, pay a vendor for a managed version instead.

What does KeystoneJS do?

Flexible, scalable Node.js CMS and app framework

What is KeystoneJS written in?

KeystoneJS is primarily written in TypeScript. Its source is publicly available at https://github.com/keystonejs/keystone, and it has 9,974 GitHub stars.