Source: https://seerepo.com/r/decaporg/decap-cms/built
Markdown source: https://seerepo.com/r/decaporg/decap-cms/built.md
Description: decap-cms is a JavaScript repo built with React, react-router-dom, history, create-react-class, and Express. It signs people in with jwt-decode.

# What is decap-cms built with?

decap-cms is a JavaScript repo built with React, react-router-dom, history, create-react-class, and Express. It signs people in with jwt-decode, makes its content with unist-util-visit, yaml, gray-matter, react-markdown, remark-gfm, and 15 more, validates its data with prop-types, react-immutable-proptypes, Ajv, ajv-errors, ajv-keywords, and 1 more, is tested with @simonsmith/cypress-image-snapshot, cypress-plugin-tab, mockserver-client, Testing Library, nock, and 2 more, deploys with winston and morgan, and uses localforage and MCP. It has 137,466 written lines, with 262 test files.

Read on November 6, 2026, at commit 61ceb6e.

Repository: https://github.com/decaporg/decap-cms

## Support (/)

### Content

- **[unist-util-visit](https://seerepo.com/uses/unist-util-visit)**: 1 file
- **[yaml](https://seerepo.com/uses/yaml)**: 1 file

### Testing

- **@simonsmith/cypress-image-snapshot**: 2 files
- **cypress-plugin-tab**: 1 file
- **mockserver-client**: 1 file
- **Testing Library**: 1 file

### Tools

- **simple-git**: 1 file

### Other

- **Lodash**: 6 files
- **fs-extra**: 5 files
- **common-tags**: 3 files
- **url**: 2 files
- **.ENV**: 1 file
- **execa**: 1 file
- **node-fetch**: 1 file

## Frontend (packages/decap-cms-backend-aws-cognito-github-proxy)

### The base

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

### Styles

- **@emotion/styled**: 1 file

## Support (packages/decap-cms-backend-aws-cognito-github-proxy)

### Validation

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

## Frontend (packages/decap-cms-backend-azure)

### The base

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

### Styles

- **@emotion/styled**: 1 file

## Support (packages/decap-cms-backend-azure)

### Validation

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

### Other

- **Lodash**: 2 files
- **immutable**: 1 file
- **js-base64**: 1 file
- **semaphore**: 1 file

## Frontend (packages/decap-cms-backend-bitbucket)

### The base

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

### Styles

- **@emotion/styled**: 1 file

## Support (packages/decap-cms-backend-bitbucket)

### Validation

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

### Other

- **common-tags**: 2 files
- **Lodash**: 2 files
- **semaphore**: 2 files
- **minimatch**: 1 file

## Frontend (packages/decap-cms-backend-forgejo)

### The base

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

### Styles

- **@emotion/styled**: 1 file

## Support (packages/decap-cms-backend-forgejo)

### Validation

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

### Other

- **Lodash**: 2 files
- **semaphore**: 2 files
- **common-tags**: 1 file
- **js-base64**: 1 file

## Backend (packages/decap-cms-backend-git-gateway)

### Sign-in

- **jwt-decode**: 1 file

## Support (packages/decap-cms-backend-git-gateway)

### Other

- **Lodash**: 2 files
- **ini**: 1 file
- **minimatch**: 1 file

## Frontend (packages/decap-cms-backend-gitea)

### The base

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

### Styles

- **@emotion/styled**: 1 file

## Support (packages/decap-cms-backend-gitea)

### Validation

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

### Other

- **Lodash**: 2 files
- **semaphore**: 2 files
- **common-tags**: 1 file
- **js-base64**: 1 file

## Frontend (packages/decap-cms-backend-github)

### The base

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

### Styles

- **@emotion/styled**: 1 file

## Support (packages/decap-cms-backend-github)

### Validation

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

### Other

- **common-tags**: 3 files
- **graphql-tag**: 3 files
- **Lodash**: 3 files
- **semaphore**: 2 files
- **GraphQL**: 1 file
- **js-base64**: 1 file

## Frontend (packages/decap-cms-backend-gitlab)

### The base

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

### Styles

- **@emotion/styled**: 1 file

## Support (packages/decap-cms-backend-gitlab)

### Validation

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

### Testing

- **nock**: 1 file

### Other

- **common-tags**: 2 files
- **Lodash**: 2 files
- **graphql-tag**: 1 file
- **immutable**: 1 file
- **js-base64**: 1 file
- **semaphore**: 1 file

## Frontend (packages/decap-cms-backend-proxy)

### The base

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

### Styles

- **@emotion/styled**: 1 file

## Support (packages/decap-cms-backend-proxy)

### Validation

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

## Frontend (packages/decap-cms-backend-test)

### The base

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

### Styles

- **@emotion/styled**: 1 file

## Support (packages/decap-cms-backend-test)

### Validation

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

### Other

- **Lodash**: 1 file

## Support (packages/decap-cms-backend-turbo-gitlab)

### Other

- **common-tags**: 1 file

## Frontend (packages/decap-cms-core)

### The base

- **[React](https://seerepo.com/uses/react)**: 37 files

### Styles

- **emotion**: 41 files

### Interface

- **react-toastify**: 3 files
- **react-frame-component**: 2 files
- **react-dnd**: 1 file
- **react-dnd-html5-backend**: 1 file
- **react-modal**: 1 file
- **react-split-pane**: 1 file
- **react-virtualized-auto-sizer**: 1 file
- **react-window**: 1 file

## Support (packages/decap-cms-core)

### The base

- **[react-router-dom](https://seerepo.com/uses/react-router-dom)**: 10 files
- **history**: 1 file

### Content

- **[yaml](https://seerepo.com/uses/yaml)**: 3 files
- **[gray-matter](https://seerepo.com/uses/gray-matter)**: 1 file
- **[react-markdown](https://seerepo.com/uses/react-markdown)**: 1 file
- **[remark-gfm](https://seerepo.com/uses/remark-gfm)**: 1 file
- **sanitize-filename**: 1 file

### Validation

- **[prop-types](https://seerepo.com/uses/prop-types)**: 47 files
- **react-immutable-proptypes**: 29 files
- **[Ajv](https://seerepo.com/uses/ajv)**: 1 file
- **ajv-errors**: 1 file
- **ajv-keywords**: 1 file

### Testing

- **Testing Library**: 16 files
- **redux-mock-store**: 13 files
- **Jest**: 2 files

### Tools

- **redux-devtools-extension**: 1 file

### Other

- **immutable**: 33 files
- **Lodash**: 31 files
- **Redux**: 17 files
- **react-redux**: 16 files
- **redux-thunk**: 12 files
- **Immer**: 11 files
- **common-tags**: 3 files
- **dayjs**: 2 files
- **fuzzy**: 2 files
- **[Vercel](https://seerepo.com/uses/vercel)**: 2 files
- **@iarna/toml**: 1 file
- **buffer**: 1 file
- **deepmerge**: 1 file
- **diacritics**: 1 file
- **react-is**: 1 file
- **url-join**: 1 file

## Frontend (packages/decap-cms-default-exports)

### The base

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

### Styles

- **emotion**: 1 file

## Support (packages/decap-cms-default-exports)

### Validation

- **[prop-types](https://seerepo.com/uses/prop-types)**: 1 file
- **react-immutable-proptypes**: 1 file

### Other

- **immutable**: 1 file
- **Lodash**: 1 file

## Support (packages/decap-cms-lib-auth)

### Other

- **Lodash**: 3 files
- **immutable**: 1 file

## Frontend (packages/decap-cms-lib-turbo)

### The base

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

### Styles

- **@emotion/styled**: 1 file

## Support (packages/decap-cms-lib-turbo)

### Validation

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

### Testing

- **Testing Library**: 1 file

## Backend (packages/decap-cms-lib-util)

### Data

- **localforage**: 1 file

## Support (packages/decap-cms-lib-util)

### Testing

- **nock**: 1 file

### Other

- **Lodash**: 5 files
- **immutable**: 3 files
- **semaphore**: 2 files
- **common-tags**: 1 file
- **js-sha256**: 1 file

## Support (packages/decap-cms-lib-widgets)

### Other

- **immutable**: 2 files
- **Lodash**: 2 files
- **dayjs**: 1 file

## Support (packages/decap-cms-media-library-cloudinary)

### Other

- **Lodash**: 1 file

## Frontend (packages/decap-cms-media-library-s3)

### The base

- **[React](https://seerepo.com/uses/react)**: 5 files

### Styles

- **emotion**: 1 file

## Support (packages/decap-cms-media-library-uploadcare)

### Other

- **immutable**: 1 file

## Frontend (packages/decap-cms-ui-auth)

### The base

- **[React](https://seerepo.com/uses/react)**: 2 files

### Styles

- **@emotion/styled**: 2 files

## Backend (packages/decap-cms-ui-auth)

### Sign-in

- **jwt-decode**: 1 file

## Support (packages/decap-cms-ui-auth)

### Validation

- **[prop-types](https://seerepo.com/uses/prop-types)**: 2 files

### Testing

- **Testing Library**: 1 file

### Other

- **Lodash**: 1 file

## Frontend (packages/decap-cms-ui-default)

### The base

- **[React](https://seerepo.com/uses/react)**: 6 files

### Styles

- **emotion**: 12 files

### Interface

- **react-transition-group**: 1 file

## Support (packages/decap-cms-ui-default)

### Validation

- **[prop-types](https://seerepo.com/uses/prop-types)**: 8 files
- **react-immutable-proptypes**: 1 file

### Other

- **Lodash**: 1 file

## Frontend (packages/decap-cms-widget-boolean)

### The base

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

### Styles

- **@emotion/react**: 1 file

## Support (packages/decap-cms-widget-boolean)

### Validation

- **[prop-types](https://seerepo.com/uses/prop-types)**: 1 file
- **react-immutable-proptypes**: 1 file

## Frontend (packages/decap-cms-widget-code)

### The base

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

### Styles

- **emotion**: 3 files

### Interface

- **[codemirror](https://seerepo.com/uses/codemirror)**: 2 files
- **react-select**: 1 file

## Support (packages/decap-cms-widget-code)

### Validation

- **[prop-types](https://seerepo.com/uses/prop-types)**: 2 files
- **react-immutable-proptypes**: 1 file

### Other

- **immutable**: 2 files
- **Lodash**: 2 files
- **is-hotkey**: 1 file

## Frontend (packages/decap-cms-widget-colorstring)

### The base

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

### Styles

- **@emotion/styled**: 1 file

### Interface

- **react-color**: 1 file

## Support (packages/decap-cms-widget-colorstring)

### Validation

- **[prop-types](https://seerepo.com/uses/prop-types)**: 2 files

### Other

- **tinycolor2**: 1 file

## Frontend (packages/decap-cms-widget-datetime)

### The base

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

### Styles

- **@emotion/react**: 1 file

## Support (packages/decap-cms-widget-datetime)

### Validation

- **[prop-types](https://seerepo.com/uses/prop-types)**: 2 files

### Testing

- **Testing Library**: 1 file

### Other

- **dayjs**: 1 file

## Frontend (packages/decap-cms-widget-file)

### The base

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

### Styles

- **emotion**: 2 files

### Interface

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

## Support (packages/decap-cms-widget-file)

### Validation

- **[prop-types](https://seerepo.com/uses/prop-types)**: 2 files
- **react-immutable-proptypes**: 1 file

### Testing

- **Testing Library**: 1 file

### Other

- **immutable**: 2 files
- **array-move**: 1 file
- **common-tags**: 1 file
- **Lodash**: 1 file

## Frontend (packages/decap-cms-widget-image)

### The base

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

### Styles

- **@emotion/styled**: 1 file

## Support (packages/decap-cms-widget-image)

### Validation

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

### Other

- **immutable**: 1 file

## Frontend (packages/decap-cms-widget-list)

### The base

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

### Styles

- **emotion**: 1 file

### Interface

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

## Support (packages/decap-cms-widget-list)

### Validation

- **[prop-types](https://seerepo.com/uses/prop-types)**: 1 file
- **react-immutable-proptypes**: 1 file

### Testing

- **Testing Library**: 2 files

### Other

- **immutable**: 1 file
- **Lodash**: 1 file

## Frontend (packages/decap-cms-widget-map)

### The base

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

### Styles

- **@emotion/react**: 1 file

### Interface

- **ol**: 1 file

## Support (packages/decap-cms-widget-map)

### Validation

- **[prop-types](https://seerepo.com/uses/prop-types)**: 2 files

## Frontend (packages/decap-cms-widget-markdown)

### The base

- **[React](https://seerepo.com/uses/react)**: 7 files

### Styles

- **emotion**: 9 files

### Interface

- **slate**: 56 files
- **slate-react**: 6 files
- **slate-history**: 2 files

## Support (packages/decap-cms-widget-markdown)

### Content

- **mdast-util-to-string**: 3 files
- **[dompurify](https://seerepo.com/uses/dompurify)**: 2 files
- **commonmark**: 1 file
- **commonmark-spec**: 1 file
- **mdast-util-definitions**: 1 file
- **rehype-parse**: 1 file
- **rehype-remark**: 1 file
- **rehype-remove-comments**: 1 file
- **[rehype-stringify](https://seerepo.com/uses/rehype-stringify)**: 1 file
- **[remark](https://seerepo.com/uses/remark)**: 1 file
- **[remark-parse](https://seerepo.com/uses/remark-parse)**: 1 file
- **remark-stringify**: 1 file
- **[unified](https://seerepo.com/uses/unified)**: 1 file
- **[unist-util-visit](https://seerepo.com/uses/unist-util-visit)**: 1 file
- **unist-util-visit-parents**: 1 file

### Validation

- **[prop-types](https://seerepo.com/uses/prop-types)**: 6 files
- **react-immutable-proptypes**: 4 files

### Testing

- **Testing Library**: 2 files

### Other

- **Lodash**: 11 files
- **unist-builder**: 6 files
- **immutable**: 4 files
- **is-hotkey**: 3 files

## Frontend (packages/decap-cms-widget-number)

### The base

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

## Support (packages/decap-cms-widget-number)

### Validation

- **[prop-types](https://seerepo.com/uses/prop-types)**: 2 files
- **react-immutable-proptypes**: 1 file

### Testing

- **Testing Library**: 1 file

### Other

- **immutable**: 1 file

## Frontend (packages/decap-cms-widget-object)

### The base

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

### Styles

- **@emotion/react**: 1 file

## Support (packages/decap-cms-widget-object)

### Validation

- **react-immutable-proptypes**: 2 files
- **[prop-types](https://seerepo.com/uses/prop-types)**: 1 file

### Other

- **immutable**: 2 files
- **Lodash**: 1 file

## Frontend (packages/decap-cms-widget-relation)

### The base

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

### Interface

- **[dnd-kit](https://seerepo.com/uses/dnd-kit)**: 1 file
- **react-select**: 1 file
- **react-window**: 1 file

## Support (packages/decap-cms-widget-relation)

### Validation

- **[prop-types](https://seerepo.com/uses/prop-types)**: 2 files
- **react-immutable-proptypes**: 1 file

### Testing

- **Testing Library**: 1 file

### Other

- **immutable**: 1 file
- **Lodash**: 1 file

## Frontend (packages/decap-cms-widget-richtext)

### The base

- **[React](https://seerepo.com/uses/react)**: 8 files

### Styles

- **emotion**: 16 files

### Interface

- **slate**: 1 file

## Support (packages/decap-cms-widget-richtext)

### Content

- **mdast-util-to-string**: 3 files
- **commonmark**: 1 file
- **commonmark-spec**: 1 file
- **[dompurify](https://seerepo.com/uses/dompurify)**: 1 file
- **mdast-util-definitions**: 1 file
- **rehype-parse**: 1 file
- **rehype-remark**: 1 file
- **rehype-remove-comments**: 1 file
- **[rehype-stringify](https://seerepo.com/uses/rehype-stringify)**: 1 file
- **[remark](https://seerepo.com/uses/remark)**: 1 file
- **[remark-parse](https://seerepo.com/uses/remark-parse)**: 1 file
- **remark-stringify**: 1 file
- **[unified](https://seerepo.com/uses/unified)**: 1 file
- **[unist-util-visit](https://seerepo.com/uses/unist-util-visit)**: 1 file
- **unist-util-visit-parents**: 1 file

### Validation

- **[prop-types](https://seerepo.com/uses/prop-types)**: 7 files
- **react-immutable-proptypes**: 5 files

### Testing

- **Testing Library**: 1 file

### Other

- **Lodash**: 10 files
- **immutable**: 6 files
- **unist-builder**: 6 files

## Frontend (packages/decap-cms-widget-select)

### The base

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

### Interface

- **react-select**: 1 file

## Support (packages/decap-cms-widget-select)

### Validation

- **[prop-types](https://seerepo.com/uses/prop-types)**: 2 files
- **react-immutable-proptypes**: 2 files

### Testing

- **Testing Library**: 1 file

### Other

- **immutable**: 2 files
- **Lodash**: 1 file

## Frontend (packages/decap-cms-widget-string)

### The base

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

## Support (packages/decap-cms-widget-string)

### Validation

- **[prop-types](https://seerepo.com/uses/prop-types)**: 2 files

## Frontend (packages/decap-cms-widget-text)

### The base

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

### Interface

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

## Support (packages/decap-cms-widget-text)

### Validation

- **[prop-types](https://seerepo.com/uses/prop-types)**: 2 files

## Frontend (packages/decap-cms-widget-uuid)

### The base

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

## Support (packages/decap-cms-widget-uuid)

### Validation

- **[prop-types](https://seerepo.com/uses/prop-types)**: 2 files

### Testing

- **Testing Library**: 1 file

### Other

- **immutable**: 1 file

## Frontend (packages/decap-cms)

### The base

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

## Support (packages/decap-cms)

### The base

- **create-react-class**: 1 file

## Backend (packages/decap)

### The base

- **[Express](https://seerepo.com/uses/express)**: 6 files · [in packages/decap/package.json](https://github.com/decaporg/decap-cms/blob/61ceb6e0680bb0362dba6d0cfe346c51e3ca3a58/packages/decap/package.json)

### Services

- **[MCP](https://seerepo.com/uses/mcp)**: 1 file · [packages/decap/src/mcp.ts, line 1](https://github.com/decaporg/decap-cms/blob/61ceb6e0680bb0362dba6d0cfe346c51e3ca3a58/packages/decap/src/mcp.ts#L1)

## Support (packages/decap)

### Validation

- **@hapi/joi**: 2 files

### Deploy

- **[winston](https://seerepo.com/uses/winston)**: 4 files
- **morgan**: 1 file

### Tools

- **simple-git**: 1 file

### Other

- **.ENV**: 1 file
- **async-mutex**: 1 file
- **cors**: 1 file

## Other repos with a similar stack

- [CherryHQ/cherry-studio](https://seerepo.com/r/CherryHQ/cherry-studio/built): React, MCP, unist-util-visit, yaml, gray-matter, remark-gfm, dnd-kit, dompurify, rehype-parse, rehype-stringify, remark-parse, remark-stringify, unified, winston · [Compare](https://seerepo.com/compare/CherryHQ/cherry-studio/vs/decaporg/decap-cms)
- [apache/superset](https://seerepo.com/r/apache/superset/built): React, Express, MCP, prop-types, jwt-decode, emotion, react-window, react-markdown, remark-gfm, @emotion/react, dompurify, winston, morgan · [Compare](https://seerepo.com/compare/apache/superset/vs/decaporg/decap-cms)
- [strapi/strapi](https://seerepo.com/r/strapi/strapi/built): React, react-router-dom, MCP, prop-types, react-dnd, react-dnd-html5-backend, react-window, react-markdown, Ajv, react-select, dnd-kit, dompurify, winston · [Compare](https://seerepo.com/compare/decaporg/decap-cms/vs/strapi/strapi)
- [gatsbyjs/gatsby](https://seerepo.com/r/gatsbyjs/gatsby/built): React, history, Express, unist-util-visit, @emotion/styled, prop-types, gray-matter, react-markdown, @emotion/react, remark-parse, remark-stringify, unified, @hapi/joi · [Compare](https://seerepo.com/compare/decaporg/decap-cms/vs/gatsbyjs/gatsby)
- [RocketChat/Rocket.Chat](https://seerepo.com/r/RocketChat/Rocket.Chat/built): React, react-router-dom, history, localforage, Express, react-split-pane, Ajv, codemirror, mdast-util-to-string, dompurify, remark-parse, remark-stringify, unified · [Compare](https://seerepo.com/compare/decaporg/decap-cms/vs/RocketChat/Rocket.Chat)
- [cline/cline](https://seerepo.com/r/cline/cline/built): React, MCP, unist-util-visit, yaml, jwt-decode, react-markdown, remark-gfm, dompurify, rehype-parse, remark-stringify, unified, react-textarea-autosize · [Compare](https://seerepo.com/compare/cline/cline/vs/decaporg/decap-cms)

## Frequently asked questions

### What language is decap-cms written in?

decap-cms is written in JavaScript, with 137,466 written lines.

### What framework does decap-cms use?

decap-cms is built with React, react-router-dom, history, create-react-class, and Express.

### What does decap-cms sign people in with?

decap-cms signs people in with jwt-decode.

### What services does decap-cms use?

decap-cms uses localforage and MCP.

### Does decap-cms have tests?

Yes. decap-cms has 262 test files and is tested with @simonsmith/cypress-image-snapshot, cypress-plugin-tab, mockserver-client, Testing Library, nock, redux-mock-store, and Jest.

### Which repos have a stack like decap-cms's?

The ones that share most of its stack: CherryHQ/cherry-studio, apache/superset, and strapi/strapi.

## 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.
