Source: https://seerepo.com/r/NanmiCoder/cc-haha/built
Markdown source: https://seerepo.com/r/NanmiCoder/cc-haha/built.md
Description: cc-haha is a TypeScript repo built with React, react-reconciler, grammy, Vite, Tauri, and 6 more.

# What is cc-haha built with?

cc-haha is a TypeScript repo built with React, react-reconciler, grammy, Vite, Tauri, and 6 more. It stores its data in lru-cache and @react-native-async-storage/async-storage, uses AI through agent-desktop-core, @aws-sdk/client-bedrock-runtime, and Anthropic, makes its content with qrcode, marked, png, yaml, highlight.js, and 14 more, validates its data with Zod and Ajv, is tested with Vitest and Testing Library, deploys with tracing, OpenTelemetry, tracing-subscriber, and psutil, and uses MCP and expo-secure-store. It has 1,895,975 written lines, with 3,172 test files.

Read on November 9, 2026, at commit 9800f4b.

Repository: https://github.com/NanmiCoder/cc-haha

## Frontend (/)

### The base

- **[React](https://seerepo.com/uses/react)**: 657 files · [in desktop/package.json](https://github.com/NanmiCoder/cc-haha/blob/9800f4b5b3747e758d61d9bf8f8886edbb202039/desktop/package.json)

### Interface

- **[x11rb](https://seerepo.com/uses/x11rb)**: 39 files
- **uiautomation**: 30 files
- **[usehooks-ts](https://seerepo.com/uses/usehooks-ts)**: 14 files
- **[core-graphics](https://seerepo.com/uses/core-graphics)**: 13 files
- **[ink](https://seerepo.com/uses/ink)**: 4 files
- **asciichart**: 1 file
- **cli-boxes**: 1 file

## Backend (/)

### Data

- **[lru-cache](https://seerepo.com/uses/lru-cache)**: 6 files

### AI

- **agent-desktop-core**
- **[@aws-sdk/client-bedrock-runtime](https://seerepo.com/uses/aws-sdk-client-bedrock-runtime)**: 2 files

### Services

- **[Anthropic](https://seerepo.com/uses/anthropic)**: 17 files · [src/utils/errors.ts, line 1](https://github.com/NanmiCoder/cc-haha/blob/9800f4b5b3747e758d61d9bf8f8886edbb202039/src/utils/errors.ts#L1)
- **[MCP](https://seerepo.com/uses/mcp)**: 17 files · [src/tools/ReadMcpResourceTool/ReadMcpResourceTool.ts, line 4](https://github.com/NanmiCoder/cc-haha/blob/9800f4b5b3747e758d61d9bf8f8886edbb202039/src/tools/ReadMcpResourceTool/ReadMcpResourceTool.ts#L4)

## Support (/)

### The base

- **react-reconciler**: 4 files

### Content

- **[qrcode](https://seerepo.com/uses/qrcode)**: 6 files
- **[marked](https://seerepo.com/uses/marked)**: 5 files
- **[png](https://seerepo.com/uses/png)**: 3 files
- **[yaml](https://seerepo.com/uses/yaml)**: 3 files
- **[highlight.js](https://seerepo.com/uses/highlightjs)**: 2 files
- **[pillow](https://seerepo.com/uses/pillow)**: 2 files
- **xss**: 2 files
- **[sharp](https://seerepo.com/uses/sharp)**: 1 file
- **[turndown](https://seerepo.com/uses/turndown)**: 1 file

### Validation

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

### Testing

- **Vitest**: 1 file

### Deploy

- **[tracing](https://seerepo.com/uses/tracing)**: 43 files
- **[OpenTelemetry](https://seerepo.com/uses/opentelemetry)**: 5 files
- **[tracing-subscriber](https://seerepo.com/uses/tracing-subscriber)**: 2 files
- **[psutil](https://seerepo.com/uses/psutil)**: 1 file

### Tools

- **clap**: 30 files
- **ignore**: 6 files
- **chokidar**: 5 files
- **type-fest**: 4 files
- **@commander-js/extra-typings**: 3 files
- **acorn**: 2 files
- **vscode-languageserver-types**: 2 files
- **acorn-walk**: 1 file
- **tree-kill**: 1 file

### Other

- **serde_json**: 388 files
- **serde**: 110 files
- **Lodash**: 109 files
- **figures**: 91 files
- **windows-sys**: 72 files
- **zbus**: 66 files
- **Axios**: 59 files
- **chalk**: 47 files
- **accessibility-sys**: 46 files
- **core-foundation**: 30 files
- **libc**: 29 files
- **diff**: 21 files
- **execa**: 15 files
- **futures-util**: 15 files
- **core-foundation-sys**: 13 files
- **strip-ansi**: 12 files
- **rustc-hash**: 10 files
- **rustix**: 10 files
- **windows**: 8 files
- **SemVer**: 6 files
- **ws**: 6 files
- **futures-lite**: 4 files
- **async-io**: 3 files
- **base64**: 3 files
- **fuse.js**: 3 files
- **smallvec**: 3 files
- **stream-json**: 3 files
- **@opentelemetry/core**: 2 files
- **fflate**: 2 files
- **https-proxy-agent**: 2 files
- **p-map**: 2 files
- **shell-quote**: 2 files
- **signal-exit**: 2 files
- **thiserror**: 2 files
- **undici**: 2 files
- **@growthbook/growthbook**: 1 file
- **auto-bind**: 1 file
- **bidi-js**: 1 file
- **code-excerpt**: 1 file
- **emoji-regex**: 1 file
- **env-paths**: 1 file
- **get-east-asian-width**: 1 file
- **indent-string**: 1 file
- **[jsonc-parser](https://seerepo.com/uses/jsonc-parser)**: 1 file
- **mss**: 1 file
- **picomatch**: 1 file
- **proper-lockfile**: 1 file
- **pyautogui**: 1 file
- **pyperclip**: 1 file
- **pywin32**: 1 file
- **screeninfo**: 1 file
- **stack-utils**: 1 file
- **supports-hyperlinks**: 1 file
- **vscode-jsonrpc**: 1 file
- **wrap-ansi**: 1 file

## Support (adapters)

### The base

- **grammy**: 2 files

### Content

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

### Other

- **@larksuiteoapi/node-sdk**: 5 files
- **@whiskeysockets/baileys**: 3 files
- **ws**: 2 files
- **@wecom/aibot-node-sdk**: 1 file
- **Axios**: 1 file
- **dingtalk-stream**: 1 file
- **proxy-agent**: 1 file
- **undici**: 1 file

## Frontend (desktop)

### The base

- **[Vite](https://seerepo.com/uses/vite)**: [in desktop/package.json](https://github.com/NanmiCoder/cc-haha/blob/9800f4b5b3747e758d61d9bf8f8886edbb202039/desktop/package.json)
- **[React](https://seerepo.com/uses/react)**: 304 files · [in desktop/package.json](https://github.com/NanmiCoder/cc-haha/blob/9800f4b5b3747e758d61d9bf8f8886edbb202039/desktop/package.json)
- **[Tauri](https://seerepo.com/uses/tauri)**: 2 files

### Styles

- **[Tailwind CSS](https://seerepo.com/uses/tailwind-css)**

### Interface

- **[prism-react-renderer](https://seerepo.com/uses/prism-react-renderer)**: 4 files
- **[xterm](https://seerepo.com/uses/xterm)**: 4 files
- **[ProseMirror](https://seerepo.com/uses/prosemirror)**: 2 files
- **prosemirror-state**: 2 files
- **[dnd-kit](https://seerepo.com/uses/dnd-kit)**: 1 file
- **[Mermaid](https://seerepo.com/uses/mermaid)**: 1 file
- **prosemirror-commands**: 1 file
- **prosemirror-history**: 1 file
- **prosemirror-keymap**: 1 file
- **[prosemirror-view](https://seerepo.com/uses/prosemirror-view)**: 1 file
- **react-diff-viewer-continued**: 1 file
- **react-shiki**: 1 file
- **[tauri-plugin-dialog](https://seerepo.com/uses/tauri-plugin-dialog)**: 1 file
- **[tauri-plugin-notification](https://seerepo.com/uses/tauri-plugin-notification)**: 1 file

### Icons

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

## Support (desktop)

### The base

- **tauri-runtime-wry**
- **[Electron](https://seerepo.com/uses/electron)**: 23 files

### Content

- **[dompurify](https://seerepo.com/uses/dompurify)**: 3 files
- **[qrcode](https://seerepo.com/uses/qrcode)**: 3 files
- **[marked](https://seerepo.com/uses/marked)**: 2 files
- **[pdfjs-dist](https://seerepo.com/uses/pdfjs-dist)**: 2 files
- **[docx-preview](https://seerepo.com/uses/docx-preview)**: 1 file
- **[html2canvas](https://seerepo.com/uses/html2canvas)**: 1 file
- **[katex](https://seerepo.com/uses/katex)**: 1 file
- **[shiki](https://seerepo.com/uses/shiki)**: 1 file
- **[xlsx](https://seerepo.com/uses/xlsx)**: 1 file
- **[yaml](https://seerepo.com/uses/yaml)**: 1 file

### Testing

- **Vitest**: 651 files
- **Testing Library**: 307 files

### Tools

- **TypeScript**: 3 files

### Other

- **anyhow**
- **reqwest**
- **zustand**: 53 files
- **serde_json**: 3 files
- **serde**: 2 files
- **electron-updater**: 1 file
- **fflate**: 1 file
- **node-pty**: 1 file
- **portable-pty**: 1 file
- **tauri-plugin-process**: 1 file
- **tauri-plugin-shell**: 1 file
- **tauri-plugin-single-instance**: 1 file
- **tauri-plugin-updater**: 1 file

## Frontend (mobile)

### The base

- **[react-native](https://seerepo.com/uses/react-native)**: 122 files
- **[React](https://seerepo.com/uses/react)**: 105 files · [in desktop/package.json](https://github.com/NanmiCoder/cc-haha/blob/9800f4b5b3747e758d61d9bf8f8886edbb202039/desktop/package.json)
- **[Expo](https://seerepo.com/uses/expo)**: 44 files · [in mobile/package.json](https://github.com/NanmiCoder/cc-haha/blob/9800f4b5b3747e758d61d9bf8f8886edbb202039/mobile/package.json)

### Styles

- **expo-font**: 1 file

### Interface

- **[react-native-safe-area-context](https://seerepo.com/uses/react-native-safe-area-context)**: 20 files
- **[react-native-svg](https://seerepo.com/uses/react-native-svg)**: 11 files
- **expo-linear-gradient**: 4 files
- **[expo-camera](https://seerepo.com/uses/expo-camera)**: 2 files
- **[expo-status-bar](https://seerepo.com/uses/expo-status-bar)**: 2 files
- **@expo/ui**: 1 file
- **expo-widgets**: 1 file
- **react-native-image-viewing**: 1 file

## Backend (mobile)

### The base

- **[androidx.core:core-ktx](https://seerepo.com/uses/androidxcore-core-ktx)**: 1 file

### Data

- **[@react-native-async-storage/async-storage](https://seerepo.com/uses/react-native-async-storage-async-storage)**: 4 files
- **[expo-secure-store](https://seerepo.com/uses/expo-secure-store)**: 1 file

## Support (mobile)

### The base

- **com.facebook.react:react-android**: 1 file

### Content

- **[expo-image-picker](https://seerepo.com/uses/expo-image-picker)**: 3 files
- **[expo-document-picker](https://seerepo.com/uses/expo-document-picker)**: 1 file
- **expo-image-manipulator**: 1 file

### Other

- **expo-notifications**: 8 files
- **expo-crypto**: 6 files
- **expo-clipboard**: 3 files
- **expo-constants**: 3 files
- **expo-file-system**: 3 files
- **expo-network**: 1 file
- **expo-sharing**: 1 file
- **react-native-audio-api**: 1 file
- **react-native-webrtc**: 1 file

## Other repos with a similar stack

- [open-webui/open-webui](https://seerepo.com/r/open-webui/open-webui/built): MCP, qrcode, marked, yaml, highlight.js, pillow, turndown, OpenTelemetry, psutil, Tailwind CSS, xterm, ProseMirror, Mermaid, prosemirror-history, prosemirror-keymap, prosemirror-view, dompurify, pdfjs-dist, docx-preview, katex, shiki, xlsx · [Compare](https://seerepo.com/compare/NanmiCoder/cc-haha/vs/open-webui/open-webui)
- [laurent22/joplin](https://seerepo.com/r/laurent22/joplin/built): React, Electron, react-native, Expo, qrcode, highlight.js, sharp, turndown, ProseMirror, prosemirror-commands, prosemirror-history, prosemirror-keymap, prosemirror-view, dompurify, pdfjs-dist, katex, react-native-safe-area-context, react-native-svg, expo-camera, expo-image-manipulator · [Compare](https://seerepo.com/compare/laurent22/joplin/vs/NanmiCoder/cc-haha)
- [multica-ai/multica](https://seerepo.com/r/multica-ai/multica/built): React, Electron, react-native, Expo, expo-secure-store, marked, yaml, Zod, Tailwind CSS, dnd-kit, Mermaid, katex, shiki, react-native-safe-area-context, react-native-svg, expo-status-bar, react-native-image-viewing, expo-image-picker, expo-document-picker · [Compare](https://seerepo.com/compare/multica-ai/multica/vs/NanmiCoder/cc-haha)
- [CherryHQ/cherry-studio](https://seerepo.com/r/CherryHQ/cherry-studio/built): React, lru-cache, Anthropic, MCP, grammy, Vite, Electron, qrcode, yaml, sharp, turndown, Zod, Tailwind CSS, dnd-kit, Lucide, dompurify, pdfjs-dist, docx-preview, katex · [Compare](https://seerepo.com/compare/CherryHQ/cherry-studio/vs/NanmiCoder/cc-haha)
- [NousResearch/hermes-agent](https://seerepo.com/r/NousResearch/hermes-agent/built): React, Vite, Tauri, Electron, qrcode, yaml, Zod, tracing, tracing-subscriber, Tailwind CSS, xterm, dnd-kit, Lucide, dompurify, katex, shiki · [Compare](https://seerepo.com/compare/NanmiCoder/cc-haha/vs/NousResearch/hermes-agent)
- [anomalyco/opencode](https://seerepo.com/r/anomalyco/opencode/built): React, Anthropic, MCP, Vite, Electron, marked, yaml, sharp, Zod, Tailwind CSS, dnd-kit, dompurify, katex, shiki · [Compare](https://seerepo.com/compare/anomalyco/opencode/vs/NanmiCoder/cc-haha)

## Frequently asked questions

### What language is cc-haha written in?

cc-haha is written in TypeScript, with 1,895,975 written lines.

### What framework does cc-haha use?

cc-haha is built with React, react-reconciler, grammy, Vite, Tauri, tauri-runtime-wry, Electron, react-native, Expo, androidx.core:core-ktx, and com.facebook.react:react-android.

The proof: [in desktop/package.json](https://github.com/NanmiCoder/cc-haha/blob/9800f4b5b3747e758d61d9bf8f8886edbb202039/desktop/package.json)

### What database does cc-haha use?

cc-haha stores its data in lru-cache and @react-native-async-storage/async-storage.

### Does cc-haha use AI?

Yes. cc-haha uses AI through agent-desktop-core, @aws-sdk/client-bedrock-runtime, and Anthropic.

### What services does cc-haha use?

cc-haha uses MCP and expo-secure-store.

The proof: [src/tools/ReadMcpResourceTool/ReadMcpResourceTool.ts, line 4](https://github.com/NanmiCoder/cc-haha/blob/9800f4b5b3747e758d61d9bf8f8886edbb202039/src/tools/ReadMcpResourceTool/ReadMcpResourceTool.ts#L4)

### Does cc-haha have tests?

Yes. cc-haha has 3,172 test files and is tested with Vitest and Testing Library.

### Which repos have a stack like cc-haha's?

The ones that share most of its stack: open-webui/open-webui, laurent22/joplin, and multica-ai/multica.

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