Source: https://seerepo.com/r/puckeditor/puck/built
Markdown source: https://seerepo.com/r/puckeditor/puck/built.md
Description: puck is a TypeScript repo built with React, Next.js, and React Router. It makes its content with handlebars and is tested with Testing Library.

# What is puck built with?

puck is a TypeScript repo built with React, Next.js, and React Router. It makes its content with handlebars, is tested with Testing Library, and uses Contentful. It has 47,700 written lines, with 68 test files.

Read on November 9, 2026, at commit d05542f.

Repository: https://github.com/puckeditor/puck

## Frontend (packages/core)

### The base

- **[React](https://seerepo.com/uses/react)**: 131 files · [in recipes/next/package.json](https://github.com/puckeditor/puck/blob/d05542f4ddc3ade0275860cb91756dadd7ea791a/recipes/next/package.json)

### Styles

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

### Interface

- **[dnd-kit](https://seerepo.com/uses/dnd-kit)**: 21 files
- **[tiptap](https://seerepo.com/uses/tiptap)**: 15 files
- **[TanStack](https://seerepo.com/uses/tanstack)**: 3 files
- **[Radix UI](https://seerepo.com/uses/radix-ui)**: 1 file

### Icons

- **[Lucide](https://seerepo.com/uses/lucide)**: 52 files

## Support (packages/core)

### Testing

- **Testing Library**: 22 files

### Other

- **zustand**: 23 files
- **fast-equals**: 4 files
- **use-debounce**: 2 files
- **flat**: 1 file
- **object-hash**: 1 file

## Support (packages/create-puck-app)

### Content

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

### Tools

- **commander**: 1 file
- **glob**: 1 file
- **[Inquirer](https://seerepo.com/uses/inquirer)**: 1 file

## Support (packages/eslint-config-custom)

### Tools

- **eslint-config-next**: 1 file
- **eslint-config-prettier**: 1 file
- **eslint-config-turbo**: 1 file

## Backend (packages/field-contentful)

### Services

- **Contentful**: 1 file · [packages/field-contentful/index.ts, line 3](https://github.com/puckeditor/puck/blob/d05542f4ddc3ade0275860cb91756dadd7ea791a/packages/field-contentful/index.ts#L3)

## Frontend (packages/plugin-emotion-cache)

### The base

- **[React](https://seerepo.com/uses/react)**: 1 file · [in recipes/next/package.json](https://github.com/puckeditor/puck/blob/d05542f4ddc3ade0275860cb91756dadd7ea791a/recipes/next/package.json)

### Styles

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

## Frontend (packages/plugin-heading-analyzer)

### The base

- **[React](https://seerepo.com/uses/react)**: 1 file · [in recipes/next/package.json](https://github.com/puckeditor/puck/blob/d05542f4ddc3ade0275860cb91756dadd7ea791a/recipes/next/package.json)

### Icons

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

## Support (packages/plugin-heading-analyzer)

### Testing

- **Testing Library**: 1 file

## Frontend (packages/tsup-config)

### The base

- **[React](https://seerepo.com/uses/react)**: 1 file · [in recipes/next/package.json](https://github.com/puckeditor/puck/blob/d05542f4ddc3ade0275860cb91756dadd7ea791a/recipes/next/package.json)

### Styles

- **[PostCSS](https://seerepo.com/uses/postcss)**: 1 file
- **postcss-modules**: 1 file

## Support (packages/tsup-config)

### Tools

- **esbuild**: 1 file
- **tsup**: 1 file

## Frontend (recipes/next-ai)

### The base

- **[React](https://seerepo.com/uses/react)**: [in recipes/next/package.json](https://github.com/puckeditor/puck/blob/d05542f4ddc3ade0275860cb91756dadd7ea791a/recipes/next/package.json)
- **[Next.js](https://seerepo.com/uses/nextjs)**: 5 files · [in recipes/next/package.json](https://github.com/puckeditor/puck/blob/d05542f4ddc3ade0275860cb91756dadd7ea791a/recipes/next/package.json)

## Frontend (recipes/next)

### The base

- **[React](https://seerepo.com/uses/react)**: [in recipes/next/package.json](https://github.com/puckeditor/puck/blob/d05542f4ddc3ade0275860cb91756dadd7ea791a/recipes/next/package.json)
- **[Next.js](https://seerepo.com/uses/nextjs)**: 4 files · [in recipes/next/package.json](https://github.com/puckeditor/puck/blob/d05542f4ddc3ade0275860cb91756dadd7ea791a/recipes/next/package.json)

## Frontend (recipes/react-router-ai)

### The base

- **[React Router](https://seerepo.com/uses/react-router)**: 3 files · [in recipes/react-router/package.json](https://github.com/puckeditor/puck/blob/d05542f4ddc3ade0275860cb91756dadd7ea791a/recipes/react-router/package.json)
- **[React](https://seerepo.com/uses/react)**: 1 file · [in recipes/next/package.json](https://github.com/puckeditor/puck/blob/d05542f4ddc3ade0275860cb91756dadd7ea791a/recipes/next/package.json)

## Support (recipes/react-router-ai)

### Tools

- **@react-router/dev**: 1 file

## Frontend (recipes/react-router)

### The base

- **[React](https://seerepo.com/uses/react)**: [in recipes/next/package.json](https://github.com/puckeditor/puck/blob/d05542f4ddc3ade0275860cb91756dadd7ea791a/recipes/next/package.json)
- **[React Router](https://seerepo.com/uses/react-router)**: 2 files · [in recipes/react-router/package.json](https://github.com/puckeditor/puck/blob/d05542f4ddc3ade0275860cb91756dadd7ea791a/recipes/react-router/package.json)

## Support (recipes/react-router)

### Tools

- **@react-router/dev**: 1 file

## Other repos with a similar stack

- [shadcn-ui/ui](https://seerepo.com/r/shadcn-ui/ui/built): React, Next.js, React Router, dnd-kit, TanStack, Radix UI, Lucide, PostCSS · [Compare](https://seerepo.com/compare/puckeditor/puck/vs/shadcn-ui/ui)
- [TryGhost/Ghost](https://seerepo.com/r/TryGhost/Ghost/built): React, React Router, dnd-kit, tiptap, Radix UI, Lucide, handlebars · [Compare](https://seerepo.com/compare/puckeditor/puck/vs/TryGhost/Ghost)
- [CherryHQ/cherry-studio](https://seerepo.com/r/CherryHQ/cherry-studio/built): React, dnd-kit, tiptap, TanStack, Radix UI, Lucide, PostCSS · [Compare](https://seerepo.com/compare/CherryHQ/cherry-studio/vs/puckeditor/puck)
- [calcom/cal.diy](https://seerepo.com/r/calcom/cal.diy/built): React, Next.js, classnames, TanStack, Radix UI, Lucide, handlebars · [Compare](https://seerepo.com/compare/calcom/cal.diy/vs/puckeditor/puck)
- [ToolJet/ToolJet](https://seerepo.com/r/ToolJet/ToolJet/built): React, classnames, dnd-kit, TanStack, Radix UI, Lucide, handlebars · [Compare](https://seerepo.com/compare/puckeditor/puck/vs/ToolJet/ToolJet)
- [novuhq/novu](https://seerepo.com/r/novuhq/novu/built): React, Next.js, tiptap, Radix UI, Lucide, handlebars, PostCSS · [Compare](https://seerepo.com/compare/novuhq/novu/vs/puckeditor/puck)

## Frequently asked questions

### What language is puck written in?

puck is written in TypeScript, with 47,700 written lines.

### What framework does puck use?

puck is built with React, Next.js, and React Router.

The proof: [in recipes/next/package.json](https://github.com/puckeditor/puck/blob/d05542f4ddc3ade0275860cb91756dadd7ea791a/recipes/next/package.json)

### What services does puck use?

puck uses Contentful.

The proof: [packages/field-contentful/index.ts, line 3](https://github.com/puckeditor/puck/blob/d05542f4ddc3ade0275860cb91756dadd7ea791a/packages/field-contentful/index.ts#L3)

### Does puck have tests?

Yes. puck has 68 test files and is tested with Testing Library.

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

The ones that share most of its stack: shadcn-ui/ui, TryGhost/Ghost, and CherryHQ/cherry-studio.

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