Source: https://seerepo.com/r/keystonejs/keystone/built
Markdown source: https://seerepo.com/r/keystonejs/keystone/built.md
Description: keystone is a TypeScript repo built with React, Next.js, Express, @apollo/server, and @as-integrations/express5. It reaches its data with Prisma.

# What is keystone built with?

keystone is a TypeScript repo built with React, Next.js, Express, @apollo/server, and @as-integrations/express5. It reaches its data with Prisma, signs people in with @hapi/iron and bcryptjs, makes its content with image-size, @braintree/sanitize-url, mdast-util-from-markdown, mdast-util-gfm-autolink-literal, mdast-util-gfm-strikethrough, and 2 more, validates its data with Zod, is tested with Vitest, Testing Library, Jest, and slate-hyperscript, and uses Cloudinary, MySQL, Postgres, and SQLite. It has 118,054 written lines, with 219 test files.

Read on November 14, 2026, at commit 3101ebc.

Repository: https://github.com/keystonejs/keystone

## Frontend (packages/auth)

### The base

- **[React](https://seerepo.com/uses/react)**: 2 files · [in packages/create/starter/package.json](https://github.com/keystonejs/keystone/blob/3101ebcf7f1e24db30a6fbf63f2d1ae9fdd20aaa/packages/create/starter/package.json)

### Interface

- **[react-aria](https://seerepo.com/uses/react-aria)**: 1 file

## Support (packages/auth)

### Other

- **GraphQL**: 1 file

## Backend (packages/cloudinary)

### Services

- **Cloudinary**: 2 files · [packages/cloudinary/src/index.ts, line 11](https://github.com/keystonejs/keystone/blob/3101ebcf7f1e24db30a6fbf63f2d1ae9fdd20aaa/packages/cloudinary/src/index.ts#L11)

## Support (packages/cloudinary)

### Other

- **graphql-upload**: 1 file

## Frontend (packages/core)

### The base

- **[React](https://seerepo.com/uses/react)**: 47 files · [in packages/create/starter/package.json](https://github.com/keystonejs/keystone/blob/3101ebcf7f1e24db30a6fbf63f2d1ae9fdd20aaa/packages/create/starter/package.json)
- **[Next.js](https://seerepo.com/uses/nextjs)**: 4 files · [in packages/create/starter/package.json](https://github.com/keystonejs/keystone/blob/3101ebcf7f1e24db30a6fbf63f2d1ae9fdd20aaa/packages/create/starter/package.json)

### Interface

- **[react-aria](https://seerepo.com/uses/react-aria)**: 11 files

## Backend (packages/core)

### The base

- **[Express](https://seerepo.com/uses/express)**: 3 files · [in packages/core/package.json](https://github.com/keystonejs/keystone/blob/3101ebcf7f1e24db30a6fbf63f2d1ae9fdd20aaa/packages/core/package.json)

### Data

- **[MySQL](https://seerepo.com/uses/mysql)**: 1 file · [packages/core/src/testing/mysql.ts, line 1](https://github.com/keystonejs/keystone/blob/3101ebcf7f1e24db30a6fbf63f2d1ae9fdd20aaa/packages/core/src/testing/mysql.ts#L1)
- **[Postgres](https://seerepo.com/uses/postgres)**: 1 file · [packages/core/src/testing/postgresql.ts, line 1](https://github.com/keystonejs/keystone/blob/3101ebcf7f1e24db30a6fbf63f2d1ae9fdd20aaa/packages/core/src/testing/postgresql.ts#L1)
- **[SQLite](https://seerepo.com/uses/sqlite)**: 1 file · [packages/core/src/testing/sqlite.ts, line 4](https://github.com/keystonejs/keystone/blob/3101ebcf7f1e24db30a6fbf63f2d1ae9fdd20aaa/packages/core/src/testing/sqlite.ts#L4)

### Sign-in

- **@hapi/iron**: 1 file
- **[bcryptjs](https://seerepo.com/uses/bcryptjs)**: 1 file

## Support (packages/core)

### The base

- **@apollo/server**: 2 files
- **@as-integrations/express5**: 1 file

### Content

- **[image-size](https://seerepo.com/uses/image-size)**: 1 file

### Testing

- **Vitest**: 4 files

### Tools

- **@graphql-typed-document-node/core**: 1 file
- **@nodelib/fs.walk**: 1 file
- **ci-info**: 1 file

### Other

- **GraphQL**: 27 files
- **fast-deep-equal**: 5 files
- **@apollo/client**: 2 files
- **@internationalized/date**: 2 files
- **body-parser**: 2 files
- **cors**: 2 files
- **decimal.js**: 2 files
- **graphql-upload**: 2 files
- **apollo-upload-client**: 1 file
- **bytes**: 1 file
- **conf**: 1 file
- **cookie**: 1 file
- **[OpenTelemetry](https://seerepo.com/uses/opentelemetry)**: 1 file
- **pluralize**: 1 file

## Frontend (packages/create)

### Interface

- **[enquirer](https://seerepo.com/uses/enquirer)**: 1 file

## Support (packages/create)

### Tools

- **meow**: 1 file
- **package-json**: 1 file

## Frontend (packages/create/starter)

### The base

- **[Next.js](https://seerepo.com/uses/nextjs)**: [in packages/create/starter/package.json](https://github.com/keystonejs/keystone/blob/3101ebcf7f1e24db30a6fbf63f2d1ae9fdd20aaa/packages/create/starter/package.json)
- **[React](https://seerepo.com/uses/react)**: [in packages/create/starter/package.json](https://github.com/keystonejs/keystone/blob/3101ebcf7f1e24db30a6fbf63f2d1ae9fdd20aaa/packages/create/starter/package.json)

## Backend (packages/create/starter)

### Data

- **[SQLite](https://seerepo.com/uses/sqlite)**: 1 file · [packages/core/src/testing/sqlite.ts, line 4](https://github.com/keystonejs/keystone/blob/3101ebcf7f1e24db30a6fbf63f2d1ae9fdd20aaa/packages/core/src/testing/sqlite.ts#L4)

## Frontend (packages/document-renderer)

### The base

- **[React](https://seerepo.com/uses/react)**: 1 file · [in packages/create/starter/package.json](https://github.com/keystonejs/keystone/blob/3101ebcf7f1e24db30a6fbf63f2d1ae9fdd20aaa/packages/create/starter/package.json)

## Frontend (packages/fields-document)

### The base

- **[React](https://seerepo.com/uses/react)**: 24 files · [in packages/create/starter/package.json](https://github.com/keystonejs/keystone/blob/3101ebcf7f1e24db30a6fbf63f2d1ae9fdd20aaa/packages/create/starter/package.json)

### Styles

- **@emotion/weak-memoize**: 2 files

### Interface

- **slate**: 43 files
- **slate-react**: 20 files
- **[react-aria](https://seerepo.com/uses/react-aria)**: 3 files
- **react-stately**: 2 files
- **slate-history**: 2 files
- **[scroll-into-view-if-needed](https://seerepo.com/uses/scroll-into-view-if-needed)**: 1 file

## Support (packages/fields-document)

### Content

- **[@braintree/sanitize-url](https://seerepo.com/uses/braintree-sanitize-url)**: 3 files
- **[mdast-util-from-markdown](https://seerepo.com/uses/mdast-util-from-markdown)**: 1 file
- **mdast-util-gfm-autolink-literal**: 1 file
- **mdast-util-gfm-strikethrough**: 1 file
- **micromark-extension-gfm-autolink-literal**: 1 file
- **micromark-extension-gfm-strikethrough**: 1 file

### Validation

- **[Zod](https://seerepo.com/uses/zod)**: 1 file

### Testing

- **Vitest**: 31 files
- **Testing Library**: 2 files
- **Jest**: 1 file
- **slate-hyperscript**: 1 file

### Other

- **GraphQL**: 2 files
- **is-hotkey**: 1 file
- **match-sorter**: 1 file
- **pretty-format**: 1 file

## Backend (prisma-utils)

### Data access

- **[Prisma](https://seerepo.com/uses/prisma)**: 1 file

## Other repos with a similar stack

- [strapi/strapi](https://seerepo.com/r/strapi/strapi/built): React, @apollo/server, bcryptjs, slate, slate-react, slate-history, Zod · [Compare](https://seerepo.com/compare/keystonejs/keystone/vs/strapi/strapi)
- [nocodb/nocodb](https://seerepo.com/r/nocodb/nocodb/built): React, Express, Postgres, SQLite, bcryptjs, image-size, Zod · [Compare](https://seerepo.com/compare/keystonejs/keystone/vs/nocodb/nocodb)
- [n8n-io/n8n](https://seerepo.com/r/n8n-io/n8n/built): Express, MySQL, Postgres, SQLite, bcryptjs, Zod · [Compare](https://seerepo.com/compare/keystonejs/keystone/vs/n8n-io/n8n)
- [Significant-Gravitas/AutoGPT](https://seerepo.com/r/Significant-Gravitas/AutoGPT/built): React, Next.js, Postgres, bcryptjs, mdast-util-from-markdown, Zod · [Compare](https://seerepo.com/compare/keystonejs/keystone/vs/Significant-Gravitas/AutoGPT)
- [langgenius/dify](https://seerepo.com/r/langgenius/dify/built): React, Next.js, MySQL, Postgres, SQLite, Zod · [Compare](https://seerepo.com/compare/keystonejs/keystone/vs/langgenius/dify)
- [storybookjs/storybook](https://seerepo.com/r/storybookjs/storybook/built): React, Next.js, react-aria, react-stately, mdast-util-from-markdown, Zod · [Compare](https://seerepo.com/compare/keystonejs/keystone/vs/storybookjs/storybook)

## Frequently asked questions

### What language is keystone written in?

keystone is written in TypeScript, with 118,054 written lines.

### What framework does keystone use?

keystone is built with React, Next.js, Express, @apollo/server, and @as-integrations/express5.

The proof: [in packages/create/starter/package.json](https://github.com/keystonejs/keystone/blob/3101ebcf7f1e24db30a6fbf63f2d1ae9fdd20aaa/packages/create/starter/package.json)

### What does keystone sign people in with?

keystone signs people in with @hapi/iron and bcryptjs.

### What services does keystone use?

keystone uses Cloudinary, MySQL, Postgres, and SQLite.

The proof: [packages/cloudinary/src/index.ts, line 11](https://github.com/keystonejs/keystone/blob/3101ebcf7f1e24db30a6fbf63f2d1ae9fdd20aaa/packages/cloudinary/src/index.ts#L11)

### Does keystone have tests?

Yes. keystone has 219 test files and is tested with Vitest, Testing Library, Jest, and slate-hyperscript.

### Which repos have a stack like keystone's?

The ones that share most of its stack: strapi/strapi, nocodb/nocodb, and n8n-io/n8n.

## What is your repo built with?

Any public repo, with no account: https://seerepo.com/r/owner/repo/built, with the owner and name it has on GitHub.
