Keystone is the easiest way to build a web application or content-managed website in node.js. It only takes a few lines of code to get up and running with:
Keystone will configure express - the de facto web server for node.js - for you and connect to your mongo database using mongoose, the leading ODM package.
Keystone starts with best practices for setting up your MV* application, and makes it easy to manage your templates, views and routes.
IDs, Strings, Booleans, Dates and Numbers are the building blocks of your database. Keystone builds on these with useful, real-world field types like name, email, password, address, image and relationship fields (and more)
Whether you use it while you're building out your application, or in production as a database content management system, Keystone's Admin UI will save you time and make managing your data easy.
Sometimes, async code can get complicated to do simple things. Keystone helps keep simple things - like loading data before displaying it in a view - simple.
Want to validate a form, upload an image, and update your database with a single line? Keystone can do that, based on the data models you've already defined.
Keystone comes ready out of the box with session management and authentication features, including automatic encryption for password fields.
Keystone makes it easy to set up, preview and send template-based emails for your application. It also integrates with Mandrill (Mailchimp's excellent transaction email sending service)
Keystone includes an optional updates framework, that can take care of running update scripts for you, making it easy to transition from development to production.
There are a lot of frameworks that make decisions for you, and many that take decisions away. Keystone doesn't do that. Use the features that suit you, and replace the ones that don't.
Keystone can configure Express for you, or you can take over and treat Keystone like any other Express middleware.
You can also easily integrate it into an existing Express app.
Mongoose, supported by MongoDB Inc, is the leading ODM for node.js and MongoDB. Keystone exposes mongoose to you when you need it, so anything you can build with MongoDB, you can build with Keystone.
Keystone is designed to be as light as you want - you can pick and choose the features you want to include.
Write your own routes, disable the Admin UI, whatever - it's up to you.
One of the greatest things about node.js is the vast number of quality packages available.
Keystone is designed to let you use any of them, without losing the benefits it provides.
Keystone has been built based on patterns and tools that have evolved in the real world, and the core team has used it in several production applications.
We have released Keystone under the MIT License to help other developers, and so the project can grow beyond what we're using it for.
Feedback and contributions are very welcome. We are currently working on documentation and examples, and have a lot of exciting features to add.