# Keystone > The superpowered Node.js Headless CMS for developers. Build faster and scale further with the programmable open source GraphQL API back-end for structured content projects. ## Start - [Docs Home](https://keystonejs.com/docs) - [Walkthroughs](https://keystonejs.com/docs/walkthroughs) - [Examples](https://keystonejs.com/docs/examples) ## Guides - [Overview](https://keystonejs.com/docs/guides/overview) - [Migrate to @keystone-6/core@8.0.0](https://keystonejs.com/docs/guides/migrate-to-8.md): Upgrade an existing Keystone project to @keystone-6/core@8.0.0 - [Command Line](https://keystonejs.com/docs/guides/cli.md): Learn how to use Keystone's command line interface (CLI) to develop, build, and deploy your Keystone projects. - [Understanding Relationships](https://keystonejs.com/docs/guides/relationships.md): Learn how to reason about and configure relationships in Keystone so you can bring value to your project through structured content. - [Choosing the right Database](https://keystonejs.com/docs/guides/choosing-a-database.md): How to choose the right database for your Keystone project - [Database Migration](https://keystonejs.com/docs/guides/database-migration.md): How to manage and apply database migrations in Keystone. - [GraphQL Queries - Filters](https://keystonejs.com/docs/guides/filters.md): Learn how to use query filters get the data you need from Keystone’s powerful GraphQL API. - [Hooks](https://keystonejs.com/docs/guides/hooks.md): Learn how to use Keystone’s Hooks API to enhance your core operations with custome business logic. - [Authentication and Access Control](https://keystonejs.com/docs/guides/auth-and-access-control.md): Learn how to use Keystone's built-in Authentication and Access Control systems. - [Images and Files](https://keystonejs.com/docs/guides/images-and-files.md): Learn how to add Images and Files to your project using Keystone’s Storage configuration - [GraphQL Schema Extension](https://keystonejs.com/docs/guides/schema-extension.md): Learn how to extend your GraphQL Schema using extendGraphqlSchema. - [Testing](https://keystonejs.com/docs/guides/testing.md): Learn how to write tests that check the behaviour of Keystone application. - [How To Use Document Fields](https://keystonejs.com/docs/guides/document-fields.md): Learn how to configure Keystone’s highly customizable Rich Text editor. The Document field is built with Slate and stores your content as JSON-structured data. - [Document Fields Demo](https://keystonejs.com/docs/guides/document-field-demo) - [Virtual Fields](https://keystonejs.com/docs/guides/virtual-fields.md): Learn how to extend your GraphQL API in powerful ways with the Virtual Fields feature. - [Custom Fields](https://keystonejs.com/docs/guides/custom-fields.md): Learn how to expand Keystone with your own custom fields. Guidance on backend setup, and frontend implementation in Keystone‘s Admin UI. - [Custom Admin UI Logo](https://keystonejs.com/docs/guides/custom-admin-ui-logo.md): Learn how to customize Keystone’s Admin UI with your own logo. - [Custom Admin UI Pages](https://keystonejs.com/docs/guides/custom-admin-ui-pages.md): Learn how to add custom pages to the Keystone Admin UI. - [Custom Admin UI Navigation](https://keystonejs.com/docs/guides/custom-admin-ui-navigation.md): In this guide, we'll show you how to create a custom Navigation component to be rendered in the Admin UI. ## Configuration - [Overview](https://keystonejs.com/docs/config/overview) - [System Configuration](https://keystonejs.com/docs/config/config.md): API reference for configuring your Keystone system: Lists, Database, Admin UI, Server, Sessions, GraphQl, Files, Images, and experimental options. - [Lists API](https://keystonejs.com/docs/config/lists.md): Reference docs for Keystone’s Lists API, which defines the data model of your system. - [Authentication](https://keystonejs.com/docs/config/auth.md): API reference for supporting authentication against a password field using the createAuth() function in the `@keystone-6/auth` package. - [Access Control](https://keystonejs.com/docs/config/access-control.md): Complete reference docs for Keystone’s Access Control API. Configure who can read, create, update, and delete items in your Keystone system. - [Hooks](https://keystonejs.com/docs/config/hooks.md): Hooks let you to execute code at different stages of the mutation lifecycle when performing create, update, and delete operations. - [Session](https://keystonejs.com/docs/config/session.md): Reference docs for the session property of Keystone’s system configuration object. ## Fields - [Fields](https://keystonejs.com/docs/fields/overview.md): A reference of Keystone’s field types, and the configuration options they accept. - [BigInt](https://keystonejs.com/docs/fields/bigint.md): A reference of Keystone's bigInt field type, configuration and options. - [Bytes](https://keystonejs.com/docs/fields/bytes.md): A reference of Keystone's bytes field type, configuration and options. - [Calendar Day](https://keystonejs.com/docs/fields/calendarday.md): A reference of Keystone's calendarday field type, configuration and options. - [Checkbox](https://keystonejs.com/docs/fields/checkbox.md): A reference of Keystone's checkbox field type, configuration and options. - [Cloudinary Image](https://keystonejs.com/docs/fields/cloudinaryimage.md): A reference of Keystone's cloudinaryImage field type, configuration and options. - [Decimal](https://keystonejs.com/docs/fields/decimal.md): A reference of Keystone's decimal field type, configuration and options. - [Document](https://keystonejs.com/docs/fields/document.md): A reference of Keystone's document field type, configuration and options. - [File](https://keystonejs.com/docs/fields/file.md): A reference of Keystone's file field type, configuration and options. - [Float](https://keystonejs.com/docs/fields/float.md): A reference of Keystone's float field type, configuration and options. - [Image](https://keystonejs.com/docs/fields/image.md): A reference of Keystone's image field type, configuration and options. - [Integer](https://keystonejs.com/docs/fields/integer.md): A reference of Keystone’s integer field type, configuration and options. - [JSON](https://keystonejs.com/docs/fields/json.md): A reference of Keystone's json field type, configuration and options. - [Multiselect](https://keystonejs.com/docs/fields/multiselect.md): A reference of Keystone's multiselect field type, configuration and options. - [Password](https://keystonejs.com/docs/fields/password.md): A reference of Keystone's password field type, configuration and options. - [Relationship](https://keystonejs.com/docs/fields/relationship.md): A reference of Keystone's relationship field type, configuration and options. - [Select](https://keystonejs.com/docs/fields/select.md): A reference of Keystone's select field type, configuration and options. - [Text](https://keystonejs.com/docs/fields/text.md): A reference of Keystone's text field type, configuration and options. - [Timestamp](https://keystonejs.com/docs/fields/timestamp.md): A reference of Keystone's timestamp field type, configuration and options. - [Virtual](https://keystonejs.com/docs/fields/virtual.md): A reference of Keystone's virtual field type, configuration and options. ## Context - [Context Overview](https://keystonejs.com/docs/context/overview.md): The Context object is the primary API entry point for all of the run-time functionality of your system. It's APIs can be used to write things like access control, hooks, testing and GraphQL schema extensions. - [Get Context](https://keystonejs.com/docs/context/get-context.md): getContext is a function exported by @keystone-6/core/context to support operations without starting a HTTP server - [Query](https://keystonejs.com/docs/context/query.md): Reference docs for Keystone‘s Query API: a programmatic API for running CRUD operations against your GraphQL API. - [Database](https://keystonejs.com/docs/context/db-items.md): Keystone's database API is a programmatic API for running CRUD operations against the internal GraphQL resolvers in your system. It bypasses the GraphQL Server itself, invoking resolver functions directly. ## GraphQL - [GraphQL Overview](https://keystonejs.com/docs/graphql/overview.md): Reference docs for Keystone’s CRUD (create, read, update, delete) GraphQL API. Based on the schema definitions outlined in your system config. - [GraphQL Query Filters](https://keystonejs.com/docs/graphql/filters.md): A reference list of every filters available for every Keystone field type. Keystone filters are typically named after the field they are filtering. ## Reference - [Privacy Policy (Telemetry)](https://keystonejs.com/docs/reference/telemetry.md): Keystone collects anonymous telemetry events when running `keystone dev` - Learn what is sent, what the information is used for, and how to opt-out ## Additional pages - [Getting started](https://keystonejs.com/docs/getting-started.md): Learn how to get your first Keystone project up and running using the `create-keystone-app` Command Line Interface. - [Custom Field Views](https://keystonejs.com/docs/guides/custom-field-views.md): We've planned this page but not had a chance to write it yet. - [Lesson 1: Installing Keystone](https://keystonejs.com/docs/walkthroughs/lesson-1.md): Learn Keystone: Lesson 1 - [Lesson 2: Creating relationships](https://keystonejs.com/docs/walkthroughs/lesson-2.md): Learn Keystone: Lesson 2 - [Lesson 3: Publishing workflows](https://keystonejs.com/docs/walkthroughs/lesson-3.md): Learn Keystone: Lesson 3 - [Lesson 4: Auth & Sessions](https://keystonejs.com/docs/walkthroughs/lesson-4.md): Learn Keystone: Lesson 4 - [Lesson 5: Document field](https://keystonejs.com/docs/walkthroughs/lesson-5.md): Learn Keystone: Lesson 5