Source: https://seerepo.com/r/NapNeko/NapCatQQ/built
Markdown source: https://seerepo.com/r/NapNeko/NapCatQQ/built.md
Description: NapCatQQ is a TypeScript repo built with Express, Vite, React, and react-router-dom. It signs people in with @simplewebauthn/server.

# What is NapCatQQ built with?

NapCatQQ is a TypeScript repo built with Express, Vite, React, and react-router-dom. It signs people in with @simplewebauthn/server, makes its content with file-type, htmlparser2, fast-xml-parser, qrcode.react, react-markdown, and 1 more, validates its data with @sinclair/typebox and Zod, is tested with Vitest, and deploys with winston. It has 113,875 written lines, with 56 test files.

Read on November 10, 2026, at commit 72912f2.

Repository: https://github.com/NapNeko/NapCatQQ

## Backend (/)

### The base

- **[Express](https://seerepo.com/uses/express)**: [in package.json](https://github.com/NapNeko/NapCatQQ/blob/72912f293924f43463b5976b01fc094a8ae11481/package.json)

## Support (/)

### Validation

- **[@sinclair/typebox](https://seerepo.com/uses/sinclair-typebox)**: 7 files

### Testing

- **Vitest**: 52 files

### Tools

- **TypeScript**: 1 file

## Support (packages/napcat-core)

### Content

- **[file-type](https://seerepo.com/uses/file-type)**: 2 files
- **[htmlparser2](https://seerepo.com/uses/htmlparser2)**: 1 file

### Validation

- **[@sinclair/typebox](https://seerepo.com/uses/sinclair-typebox)**: 2 files

### Deploy

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

### Other

- **json5**: 3 files
- **@protobuf-ts/runtime**: 1 file
- **inversify**: 1 file
- **reflect-metadata**: 1 file

## Backend (packages/napcat-onebot)

### The base

- **[Express](https://seerepo.com/uses/express)**: 3 files · [in package.json](https://github.com/NapNeko/NapCatQQ/blob/72912f293924f43463b5976b01fc094a8ae11481/package.json)

## Support (packages/napcat-onebot)

### Content

- **[fast-xml-parser](https://seerepo.com/uses/fast-xml-parser)**: 1 file
- **[file-type](https://seerepo.com/uses/file-type)**: 1 file

### Validation

- **[@sinclair/typebox](https://seerepo.com/uses/sinclair-typebox)**: 189 files

### Other

- **json5**: 4 files
- **ws**: 3 files
- **cors**: 1 file
- **on-finished**: 1 file
- **type-is**: 1 file

## Support (packages/napcat-protobuf)

### Other

- **@protobuf-ts/runtime**: 1 file

## Backend (packages/napcat-protocol)

### The base

- **[Express](https://seerepo.com/uses/express)**: [in package.json](https://github.com/NapNeko/NapCatQQ/blob/72912f293924f43463b5976b01fc094a8ae11481/package.json)

## Support (packages/napcat-protocol)

### Validation

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

## Support (packages/napcat-pty)

### Other

- **@homebridge/node-pty-prebuilt-multiarch**: 6 files

## Support (packages/napcat-schema)

### Validation

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

## Backend (packages/napcat-webui-backend)

### The base

- **[Express](https://seerepo.com/uses/express)**: 36 files · [in package.json](https://github.com/NapNeko/NapCatQQ/blob/72912f293924f43463b5976b01fc094a8ae11481/package.json)

### Sign-in

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

## Support (packages/napcat-webui-backend)

### Validation

- **[@sinclair/typebox](https://seerepo.com/uses/sinclair-typebox)**: 4 files

### Other

- **multer**: 5 files
- **json5**: 3 files
- **ws**: 2 files
- **compression**: 1 file
- **express-rate-limit**: 1 file

## Frontend (packages/napcat-webui-frontend)

### The base

- **[Vite](https://seerepo.com/uses/vite)**: [in packages/napcat-webui-frontend/package.json](https://github.com/NapNeko/NapCatQQ/blob/72912f293924f43463b5976b01fc094a8ae11481/packages/napcat-webui-frontend/package.json)
- **[React](https://seerepo.com/uses/react)**: 82 files · [in packages/napcat-webui-frontend/package.json](https://github.com/NapNeko/NapCatQQ/blob/72912f293924f43463b5976b01fc094a8ae11481/packages/napcat-webui-frontend/package.json)
- **[react-router-dom](https://seerepo.com/uses/react-router-dom)**: 14 files

### Styles

- **[Tailwind CSS](https://seerepo.com/uses/tailwind-css)**
- **[@codemirror/theme-one-dark](https://seerepo.com/uses/codemirror-theme-one-dark)**: 1 file
- **tailwind-variants**: 1 file

### Interface

- **[react-hot-toast](https://seerepo.com/uses/react-hot-toast)**: 41 files
- **[@uidotdev/usehooks](https://seerepo.com/uses/uidotdev-usehooks)**: 26 files
- **[motion](https://seerepo.com/uses/motion)**: 10 files
- **[React Hook Form](https://seerepo.com/uses/react-hook-form)**: 10 files
- **@react-types/shared**: 7 files
- **quill**: 6 files
- **[dnd-kit](https://seerepo.com/uses/dnd-kit)**: 2 files
- **react-photo-view**: 2 files
- **@react-aria/visually-hidden**: 1 file
- **[@uiw/react-codemirror](https://seerepo.com/uses/uiw-react-codemirror)**: 1 file
- **[CodeMirror](https://seerepo.com/uses/codemirror)**: 1 file
- **[react-dropzone](https://seerepo.com/uses/react-dropzone)**: 1 file
- **[react-error-boundary](https://seerepo.com/uses/react-error-boundary)**: 1 file
- **[react-window](https://seerepo.com/uses/react-window)**: 1 file
- **[xterm](https://seerepo.com/uses/xterm)**: 1 file

### Icons

- **[react-icons](https://seerepo.com/uses/react-icons)**: 52 files

## Support (packages/napcat-webui-frontend)

### Content

- **[qrcode.react](https://seerepo.com/uses/qrcodereact)**: 3 files
- **[react-markdown](https://seerepo.com/uses/react-markdown)**: 1 file
- **[remark-gfm](https://seerepo.com/uses/remark-gfm)**: 1 file

### Validation

- **[@sinclair/typebox](https://seerepo.com/uses/sinclair-typebox)**: 3 files
- **[Zod](https://seerepo.com/uses/zod)**: 1 file

### Other

- **clsx**: 40 files
- **ahooks**: 12 files
- **path-browserify**: 5 files
- **crypto-js**: 4 files
- **event-source-polyfill**: 4 files
- **Axios**: 3 files
- **@reduxjs/toolkit**: 2 files
- **react-redux**: 2 files
- **react-use-websocket**: 2 files

## Other repos with a similar stack

- [CherryHQ/cherry-studio](https://seerepo.com/r/CherryHQ/cherry-studio/built): Vite, React, file-type, htmlparser2, winston, fast-xml-parser, Tailwind CSS, motion, React Hook Form, dnd-kit, @uiw/react-codemirror, CodeMirror, react-dropzone, react-error-boundary, qrcode.react, remark-gfm, Zod · [Compare](https://seerepo.com/compare/CherryHQ/cherry-studio/vs/NapNeko/NapCatQQ)
- [TryGhost/Ghost](https://seerepo.com/r/TryGhost/Ghost/built): Express, Vite, React, file-type, Tailwind CSS, @codemirror/theme-one-dark, React Hook Form, dnd-kit, @uiw/react-codemirror, CodeMirror, react-dropzone, react-error-boundary, Zod · [Compare](https://seerepo.com/compare/NapNeko/NapCatQQ/vs/TryGhost/Ghost)
- [supabase/supabase](https://seerepo.com/r/supabase/supabase/built): Vite, React, Tailwind CSS, @uidotdev/usehooks, motion, React Hook Form, dnd-kit, react-dropzone, react-error-boundary, react-markdown, remark-gfm, Zod · [Compare](https://seerepo.com/compare/NapNeko/NapCatQQ/vs/supabase/supabase)
- [paperclipai/paperclip](https://seerepo.com/r/paperclipai/paperclip/built): Express, Vite, React, react-router-dom, Tailwind CSS, motion, dnd-kit, CodeMirror, xterm, react-markdown, remark-gfm, Zod · [Compare](https://seerepo.com/compare/NapNeko/NapCatQQ/vs/paperclipai/paperclip)
- [strapi/strapi](https://seerepo.com/r/strapi/strapi/built): Vite, React, react-router-dom, file-type, winston, Tailwind CSS, motion, dnd-kit, react-dropzone, react-window, react-markdown, Zod · [Compare](https://seerepo.com/compare/NapNeko/NapCatQQ/vs/strapi/strapi)
- [ToolJet/ToolJet](https://seerepo.com/r/ToolJet/ToolJet/built): Express, React, react-router-dom, winston, Tailwind CSS, react-hot-toast, dnd-kit, @uiw/react-codemirror, CodeMirror, react-dropzone, react-markdown, remark-gfm · [Compare](https://seerepo.com/compare/NapNeko/NapCatQQ/vs/ToolJet/ToolJet)

## Frequently asked questions

### What language is NapCatQQ written in?

NapCatQQ is written in TypeScript, with 113,875 written lines.

### What framework does NapCatQQ use?

NapCatQQ is built with Express, Vite, React, and react-router-dom.

The proof: [in package.json](https://github.com/NapNeko/NapCatQQ/blob/72912f293924f43463b5976b01fc094a8ae11481/package.json)

### What does NapCatQQ sign people in with?

NapCatQQ signs people in with @simplewebauthn/server.

### Does NapCatQQ have tests?

Yes. NapCatQQ has 56 test files and is tested with Vitest.

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

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

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