Analysis updated 2026-06-24
Keep an existing Keystone v4 site running while planning a migration off the framework.
Reference the old field-type implementations when porting a legacy schema to Keystone 6.
Scaffold a quick prototype CMS for an internal tool that only needs MongoDB and an admin UI.
Study Express + Mongoose patterns from an older mature Node.js codebase.
| keystonejs/keystone-classic | mithriljs/mithril.js | graphql/graphql-spec | |
|---|---|---|---|
| Stars | 14,520 | 14,486 | 14,571 |
| Language | JavaScript | JavaScript | JavaScript |
| Setup difficulty | moderate | easy | easy |
| Complexity | 3/5 | 2/5 | 4/5 |
| Audience | developer | developer | developer |
Figures from each repo's GitHub metadata at analysis time.
Project is archived. New work should target Keystone 6 in a separate repo, and you need a running MongoDB instance to start.
Keystone Classic is an older version of KeystoneJS, a content management system and web app framework that runs on Node.js. The first line of the README is an archived notice: the project no longer receives updates, and the maintainers point new users to Keystone 6 in a separate repository. What sits in this repository is the historical version 4 codebase, kept around for reference and for projects that have not yet migrated. The framework is built on top of two well known Node.js libraries. The web server side uses Express, which handles routes and requests. The data side uses Mongoose, which is the standard way of talking to a MongoDB database from Node.js. On top of those, Keystone adds two main things: a way to describe content models in JavaScript, and a generated admin web interface so non-developers can edit the content. The README mentions a demo site as a way to see the admin UI in action. Getting started is shown in two ways. The recommended way is to run a Yeoman generator: install generator-keystone globally with npm, run "yo keystone", answer a few questions, and the tool scaffolds a new project. The other way is to add keystone as a dependency in an existing package.json and require it directly. Configuration is done either by passing an object to keystone.init or by calling keystone.set for each setting before keystone.start. A lot of Keystone's value is in its field types. On top of MongoDB's basic types, it provides richer fields for things like images (with resizing), dates and numbers (with formatting helpers), select options, and addresses backed by Google Places. Each field type also gets a matching widget in the admin UI. For production deployments, the README asks users to set NODE_ENV=production, which switches on template caching, HTML minification, and simpler error reporting. The project is MIT licensed, was led by Jed Watson, Joss Mackison, and Max Stoiber, and was supported by Thinkmill in Sydney, Australia.
Archived version 4 of KeystoneJS, a Node.js CMS and web framework built on Express and MongoDB with a generated admin UI. New projects should use Keystone 6 instead.
Mainly JavaScript. The stack also includes Node.js, Express, Mongoose.
MIT license, you can use, modify, and redistribute it freely, including commercially, as long as you keep the copyright notice.
Setup difficulty is rated moderate, with roughly 30min to a first successful run.
Mainly developer.
This repo across BitVibe Labs
Verify against the repo before relying on details.