Source: https://seerepo.com/r/genspark-ai/genoffice/built
Markdown source: https://seerepo.com/r/genspark-ai/genoffice/built.md
Description: genoffice is a TypeScript repo built with Vite, React, Electron, and @univerjs/core.

# What is genoffice built with?

genoffice is a TypeScript repo built with Vite, React, Electron, and @univerjs/core. It makes its content with parse5, katex, @tiptap/markdown, pdfjs-dist, @embedpdf/pdfium, and 10 more, validates its data with Zod, is tested with Vitest, @playwright/test, marked, pdf-lib, pngjs, and 3 more, and uses MCP. It has 1,319,272 written lines, with 2,472 test files.

Read on November 11, 2026, at commit 1738aec.

Repository: https://github.com/genspark-ai/genoffice

## Frontend (apps/html)

### The base

- **[Vite](https://seerepo.com/uses/vite)**: [in apps/pdf/package.json](https://github.com/genspark-ai/genoffice/blob/1738aecba0b40c7806485104101405033ded7601/apps/pdf/package.json)
- **[React](https://seerepo.com/uses/react)**: 19 files · [in apps/pdf/package.json](https://github.com/genspark-ai/genoffice/blob/1738aecba0b40c7806485104101405033ded7601/apps/pdf/package.json)

### Interface

- **[CodeMirror](https://seerepo.com/uses/codemirror)**: 5 files
- **[@lezer/highlight](https://seerepo.com/uses/lezer-highlight)**: 1 file

## Support (apps/html)

### The base

- **[Electron](https://seerepo.com/uses/electron)**: 4 files

### Content

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

### Testing

- **Vitest**: 41 files

## Frontend (apps/markdown)

### The base

- **[Vite](https://seerepo.com/uses/vite)**: [in apps/pdf/package.json](https://github.com/genspark-ai/genoffice/blob/1738aecba0b40c7806485104101405033ded7601/apps/pdf/package.json)
- **[React](https://seerepo.com/uses/react)**: 22 files · [in apps/pdf/package.json](https://github.com/genspark-ai/genoffice/blob/1738aecba0b40c7806485104101405033ded7601/apps/pdf/package.json)

### Interface

- **[tiptap](https://seerepo.com/uses/tiptap)**: 46 files
- **[CodeMirror](https://seerepo.com/uses/codemirror)**: 2 files
- **[@lezer/highlight](https://seerepo.com/uses/lezer-highlight)**: 1 file
- **[Mermaid](https://seerepo.com/uses/mermaid)**: 1 file
- **wavedrom**: 1 file

## Support (apps/markdown)

### The base

- **[Electron](https://seerepo.com/uses/electron)**: 3 files

### Content

- **[katex](https://seerepo.com/uses/katex)**: 3 files
- **[@tiptap/markdown](https://seerepo.com/uses/tiptap-markdown)**: 1 file
- **[pdfjs-dist](https://seerepo.com/uses/pdfjs-dist)**: 1 file

### Testing

- **Vitest**: 75 files
- **@playwright/test**: 7 files
- **[marked](https://seerepo.com/uses/marked)**: 3 files
- **[pdf-lib](https://seerepo.com/uses/pdf-lib)**: 1 file

### Other

- **json5**: 1 file

## Frontend (apps/pdf)

### The base

- **[Vite](https://seerepo.com/uses/vite)**: [in apps/pdf/package.json](https://github.com/genspark-ai/genoffice/blob/1738aecba0b40c7806485104101405033ded7601/apps/pdf/package.json)
- **[React](https://seerepo.com/uses/react)**: 34 files · [in apps/pdf/package.json](https://github.com/genspark-ai/genoffice/blob/1738aecba0b40c7806485104101405033ded7601/apps/pdf/package.json)

## Support (apps/pdf)

### The base

- **[Electron](https://seerepo.com/uses/electron)**: 3 files

### Content

- **[pdfjs-dist](https://seerepo.com/uses/pdfjs-dist)**: 14 files
- **[pdf-lib](https://seerepo.com/uses/pdf-lib)**: 10 files
- **@embedpdf/pdfium**: 1 file

### Testing

- **Vitest**: 89 files
- **[pngjs](https://seerepo.com/uses/pngjs)**: 1 file

### Other

- **node-forge**: 3 files

## Frontend (apps/sheets)

### The base

- **[Vite](https://seerepo.com/uses/vite)**: [in apps/pdf/package.json](https://github.com/genspark-ai/genoffice/blob/1738aecba0b40c7806485104101405033ded7601/apps/pdf/package.json)
- **[React](https://seerepo.com/uses/react)**: 59 files · [in apps/pdf/package.json](https://github.com/genspark-ai/genoffice/blob/1738aecba0b40c7806485104101405033ded7601/apps/pdf/package.json)

### Interface

- **univerjs**: 33 files

### Icons

- **@fluentui/react-icons**: 2 files

## Support (apps/sheets)

### The base

- **@univerjs/core**: 82 files
- **[Electron](https://seerepo.com/uses/electron)**: 4 files

### Content

- **univerjs**: 22 files
- **[zip](https://seerepo.com/uses/zip)**: 12 files
- **[quick-xml](https://seerepo.com/uses/quick-xml)**: 5 files
- **[roxmltree](https://seerepo.com/uses/roxmltree)**: 5 files
- **calamine**: 1 file
- **cfb**: 1 file
- **[pdf-lib](https://seerepo.com/uses/pdf-lib)**: 1 file

### Validation

- **[Zod](https://seerepo.com/uses/zod)**: 5 files

### Testing

- **Vitest**: 386 files

### Other

- **jszip**: 41 files
- **serde**: 7 files
- **serde_json**: 7 files
- **rxjs**: 5 files
- **base64**: 1 file
- **undici**: 1 file
- **uuid**: 1 file

## Frontend (apps/shell)

### The base

- **[Vite](https://seerepo.com/uses/vite)**: [in apps/pdf/package.json](https://github.com/genspark-ai/genoffice/blob/1738aecba0b40c7806485104101405033ded7601/apps/pdf/package.json)
- **[React](https://seerepo.com/uses/react)**: 13 files · [in apps/pdf/package.json](https://github.com/genspark-ai/genoffice/blob/1738aecba0b40c7806485104101405033ded7601/apps/pdf/package.json)

## Backend (apps/shell)

### Services

- **[MCP](https://seerepo.com/uses/mcp)**: 1 file · [apps/shell/src/main/mcp/mcp-server.ts, line 4](https://github.com/genspark-ai/genoffice/blob/1738aecba0b40c7806485104101405033ded7601/apps/shell/src/main/mcp/mcp-server.ts#L4)

## Support (apps/shell)

### The base

- **[Electron](https://seerepo.com/uses/electron)**: 26 files

### Content

- **@embedpdf/pdfium**: 1 file

### Validation

- **[Zod](https://seerepo.com/uses/zod)**: 7 files

### Testing

- **Vitest**: 115 files
- **[pdf-lib](https://seerepo.com/uses/pdf-lib)**: 2 files
- **[pngjs](https://seerepo.com/uses/pngjs)**: 1 file

### Tools

- **TypeScript**: 1 file

### Other

- **electron-updater**: 1 file
- **jszip**: 1 file
- **undici**: 1 file

## Frontend (apps/slides)

### The base

- **[Vite](https://seerepo.com/uses/vite)**: [in apps/pdf/package.json](https://github.com/genspark-ai/genoffice/blob/1738aecba0b40c7806485104101405033ded7601/apps/pdf/package.json)
- **[React](https://seerepo.com/uses/react)**: 55 files · [in apps/pdf/package.json](https://github.com/genspark-ai/genoffice/blob/1738aecba0b40c7806485104101405033ded7601/apps/pdf/package.json)

### Styles

- **opentype.js**: 1 file

### Interface

- **react-konva**: 8 files
- **Konva**: 6 files
- **[three](https://seerepo.com/uses/three)**: 1 file

## Support (apps/slides)

### The base

- **[Electron](https://seerepo.com/uses/electron)**: 8 files

### Content

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

### Testing

- **Vitest**: 152 files

### Tools

- **acorn**: 1 file

### Other

- **jszip**: 4 files
- **undici**: 1 file

## Support (packages/agent-core)

### Testing

- **Vitest**: 16 files

## Support (packages/ai-provider)

### Testing

- **Vitest**: 40 files

## Backend (packages/ai-search)

### Services

- **[MCP](https://seerepo.com/uses/mcp)**: 1 file · [apps/shell/src/main/mcp/mcp-server.ts, line 4](https://github.com/genspark-ai/genoffice/blob/1738aecba0b40c7806485104101405033ded7601/apps/shell/src/main/mcp/mcp-server.ts#L4)

## Support (packages/ai-search)

### The base

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

### Testing

- **Vitest**: 15 files

## Frontend (packages/cli)

### Interface

- **@tiptap/core**: 2 files

## Backend (packages/cli)

### Services

- **[MCP](https://seerepo.com/uses/mcp)**: 2 files · [apps/shell/src/main/mcp/mcp-server.ts, line 4](https://github.com/genspark-ai/genoffice/blob/1738aecba0b40c7806485104101405033ded7601/apps/shell/src/main/mcp/mcp-server.ts#L4)

## Support (packages/cli)

### Content

- **@embedpdf/pdfium**: 1 file
- **numfmt**: 1 file
- **[pngjs](https://seerepo.com/uses/pngjs)**: 1 file

### Validation

- **[Zod](https://seerepo.com/uses/zod)**: 4 files

### Testing

- **Vitest**: 71 files
- **jsdom**: 1 file

### Tools

- **esbuild**: 1 file

### Other

- **jszip**: 5 files
- **undici**: 1 file

## Support (packages/compound-file)

### Content

- **cfb**: 1 file

### Testing

- **Vitest**: 1 file

## Support (packages/doc2docx)

### Testing

- **Vitest**: 18 files
- **cfb**: 2 files

### Other

- **jszip**: 1 file

## Support (packages/docx-engine)

### Content

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

### Testing

- **Vitest**: 219 files

### Other

- **jszip**: 14 files

## Support (packages/electron-utils)

### The base

- **[Electron](https://seerepo.com/uses/electron)**: 9 files

### Content

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

### Testing

- **Vitest**: 27 files

### Other

- **undici**: 2 files

## Support (packages/file-parse)

### Content

- **[fast-xml-parser](https://seerepo.com/uses/fast-xml-parser)**: 2 files
- **cfb**: 1 file
- **[pdfjs-dist](https://seerepo.com/uses/pdfjs-dist)**: 1 file
- **word-extractor**: 1 file

### Testing

- **Vitest**: 12 files

### Other

- **jszip**: 3 files

## Support (packages/font-metrics)

### Testing

- **Vitest**: 8 files

## Support (packages/html2docx)

### The base

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

### Content

- **docx**: 8 files

### Testing

- **Vitest**: 13 files
- **playwright-core**: 3 files

### Other

- **jszip**: 5 files

## Support (packages/hwp2docx)

### Content

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

### Testing

- **Vitest**: 5 files

### Other

- **jszip**: 6 files

## Support (packages/i18n)

### Testing

- **Vitest**: 2 files

## Support (packages/odf2ooxml)

### Content

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

### Testing

- **Vitest**: 4 files

### Other

- **jszip**: 1 file

## Support (packages/pdf2docx)

### Testing

- **Vitest**: 55 files
- **[pdf-lib](https://seerepo.com/uses/pdf-lib)**: 4 files
- **@embedpdf/pdfium**: 1 file

### Other

- **bidi-js**: 1 file
- **jszip**: 1 file

## Support (packages/pipelines)

### Testing

- **Vitest**: 6 files

## Support (packages/ppt2pptx)

### Testing

- **cfb**: 2 files
- **Vitest**: 1 file

### Other

- **jszip**: 1 file

## Support (packages/pptx-engine)

### Content

- **[fast-xml-parser](https://seerepo.com/uses/fast-xml-parser)**: 8 files

### Testing

- **Vitest**: 132 files
- **pptxgenjs**: 4 files

### Other

- **jszip**: 3 files

## Support (packages/pptx-ops)

### Testing

- **Vitest**: 17 files

## Support (packages/pptx-render)

### Testing

- **Vitest**: 28 files

### Other

- **bidi-js**: 1 file

## Support (packages/project-store)

### Testing

- **Vitest**: 11 files

## Frontend (packages/ui)

### The base

- **[React](https://seerepo.com/uses/react)**: 25 files · [in apps/pdf/package.json](https://github.com/genspark-ai/genoffice/blob/1738aecba0b40c7806485104101405033ded7601/apps/pdf/package.json)

## Support (packages/ui)

### Testing

- **Vitest**: 23 files

## Support (packages/xlsx-gateway)

### Content

- **numfmt**: 1 file

### Validation

- **[Zod](https://seerepo.com/uses/zod)**: 3 files

### Testing

- **Vitest**: 59 files

### Other

- **jszip**: 2 files

## Support (packages/zip-gate)

### Testing

- **Vitest**: 1 file

### Other

- **jszip**: 1 file

## Other repos with a similar stack

- [CherryHQ/cherry-studio](https://seerepo.com/r/CherryHQ/cherry-studio/built): Vite, React, Electron, MCP, CodeMirror, @lezer/highlight, tiptap, katex, @tiptap/markdown, pdfjs-dist, pdf-lib, Zod, numfmt, fast-xml-parser, word-extractor, docx · [Compare](https://seerepo.com/compare/CherryHQ/cherry-studio/vs/genspark-ai/genoffice)
- [n8n-io/n8n](https://seerepo.com/r/n8n-io/n8n/built): Vite, MCP, CodeMirror, @lezer/highlight, tiptap, katex, pdfjs-dist, Zod · [Compare](https://seerepo.com/compare/genspark-ai/genoffice/vs/n8n-io/n8n)
- [paperclipai/paperclip](https://seerepo.com/r/paperclipai/paperclip/built): Vite, React, MCP, CodeMirror, @lezer/highlight, Mermaid, Zod, three · [Compare](https://seerepo.com/compare/genspark-ai/genoffice/vs/paperclipai/paperclip)
- [laurent22/joplin](https://seerepo.com/r/laurent22/joplin/built): React, Electron, CodeMirror, @lezer/highlight, katex, pdfjs-dist, pdf-lib, fast-xml-parser · [Compare](https://seerepo.com/compare/genspark-ai/genoffice/vs/laurent22/joplin)
- [reactive-resume/reactive-resume](https://seerepo.com/r/reactive-resume/reactive-resume/built): React, MCP, CodeMirror, @lezer/highlight, tiptap, pdfjs-dist, Zod, docx · [Compare](https://seerepo.com/compare/genspark-ai/genoffice/vs/reactive-resume/reactive-resume)
- [THU-MAIC/OpenMAIC](https://seerepo.com/r/THU-MAIC/OpenMAIC/built): React, parse5, katex, pdfjs-dist, pdf-lib, cfb, Zod, docx · [Compare](https://seerepo.com/compare/genspark-ai/genoffice/vs/THU-MAIC/OpenMAIC)

## Frequently asked questions

### What language is genoffice written in?

genoffice is written in TypeScript, with 1,319,272 written lines.

### What framework does genoffice use?

genoffice is built with Vite, React, Electron, and @univerjs/core.

The proof: [in apps/pdf/package.json](https://github.com/genspark-ai/genoffice/blob/1738aecba0b40c7806485104101405033ded7601/apps/pdf/package.json)

### What services does genoffice use?

genoffice uses MCP.

The proof: [apps/shell/src/main/mcp/mcp-server.ts, line 4](https://github.com/genspark-ai/genoffice/blob/1738aecba0b40c7806485104101405033ded7601/apps/shell/src/main/mcp/mcp-server.ts#L4)

### Does genoffice have tests?

Yes. genoffice has 2,472 test files and is tested with Vitest, @playwright/test, marked, pdf-lib, pngjs, jsdom, playwright-core, and pptxgenjs.

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

The ones that share most of its stack: CherryHQ/cherry-studio, n8n-io/n8n, and paperclipai/paperclip.

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