Source: https://seerepo.com/r/MODSetter/SurfSense/built
Markdown source: https://seerepo.com/r/MODSetter/SurfSense/built.md
Description: SurfSense is a Python repo built with FastAPI, uvicorn, Electron, React, and Vite. It reaches it with alembic and signs people in with cryptography.

# What is SurfSense built with?

SurfSense is a Python repo built with FastAPI, uvicorn, Electron, React, and Vite. It reaches it with alembic, signs people in with cryptography, takes payments with Stripe, uses AI through torch, mcp, onnxruntime, chonkie, torchvision, and 1 more, measures its use with PostHog, makes its content with markdown-it-py, python-docx, python-pptx, pypdfium2, pillow, and 14 more, validates its data with email-validator, Pydantic, pathvalidate, and validators, is tested with Vitest and Testing Library, deploys with psutil, and uses Claude. It has 431,083 written lines, with 1,179 test files.

Read on November 7, 2026, at commit b764f28.

Repository: https://github.com/MODSetter/SurfSense

## Frontend (/)

### Interface

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

## Backend (/)

### The base

- **[FastAPI](https://seerepo.com/uses/fastapi)**: 119 files

### Data access

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

### Sign-in

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

### AI

- **[torch](https://seerepo.com/uses/torch)**
- **[mcp](https://seerepo.com/uses/mcp)**: 30 files
- **[onnxruntime](https://seerepo.com/uses/onnxruntime)**: 3 files
- **chonkie**: 1 file
- **[torchvision](https://seerepo.com/uses/torchvision)**: 1 file

### Services

- **Claude**: 11 files · [surfsense_local/backend/modules/agent/engines/claude_code/agent_options.py, line 7](https://github.com/MODSetter/SurfSense/blob/b764f2838969974fd1b0e8c386326039a0f3ad3a/surfsense_local/backend/modules/agent/engines/claude_code/agent_options.py#L7)
- **[Stripe](https://seerepo.com/uses/stripe)**: 2 files · [backend/license/stripe_client.py, line 8](https://github.com/MODSetter/SurfSense/blob/b764f2838969974fd1b0e8c386326039a0f3ad3a/backend/license/stripe_client.py#L8)
- **[PostHog](https://seerepo.com/uses/posthog)**: 1 file · [backend/license/analytics.py, line 36](https://github.com/MODSetter/SurfSense/blob/b764f2838969974fd1b0e8c386326039a0f3ad3a/backend/license/analytics.py#L36)

## Support (/)

### The base

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

### Content

- **[markdown-it-py](https://seerepo.com/uses/markdown-it-py)**
- **[python-docx](https://seerepo.com/uses/python-docx)**
- **[python-pptx](https://seerepo.com/uses/python-pptx)**
- **[pypdfium2](https://seerepo.com/uses/pypdfium2)**: 12 files
- **[pillow](https://seerepo.com/uses/pillow)**: 10 files
- **[pypdf](https://seerepo.com/uses/pypdf)**: 8 files
- **[xlsxwriter](https://seerepo.com/uses/xlsxwriter)**: 7 files
- **[openpyxl](https://seerepo.com/uses/openpyxl)**: 5 files
- **docling**: 4 files
- **[defusedxml](https://seerepo.com/uses/defusedxml)**: 1 file
- **[markdownify](https://seerepo.com/uses/markdownify)**: 1 file

### Validation

- **[email-validator](https://seerepo.com/uses/email-validator)**
- **[Pydantic](https://seerepo.com/uses/pydantic)**: 98 files
- **pathvalidate**: 3 files
- **validators**: 1 file

### Deploy

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

### Tools

- **Typer**: 14 files
- **uv**: 2 files

### Other

- **",**
- **opencv-python-headless**
- **pandas**
- **python-multipart**
- **s**
- **pydantic-settings**: 8 files
- **curl-cffi**: 2 files
- **orjson**: 2 files
- **lameenc**: 1 file
- **miniaudio**: 1 file
- **trafilatura**: 1 file

## Support (surfsense_local/electron)

### The base

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

### Other

- **electron-updater**: 3 files

## Frontend (surfsense_local/frontend)

### The base

- **[React](https://seerepo.com/uses/react)**: 240 files · [in surfsense_local/frontend/package.json](https://github.com/MODSetter/SurfSense/blob/b764f2838969974fd1b0e8c386326039a0f3ad3a/surfsense_local/frontend/package.json)
- **[Vite](https://seerepo.com/uses/vite)**: 2 files · [in surfsense_local/frontend/package.json](https://github.com/MODSetter/SurfSense/blob/b764f2838969974fd1b0e8c386326039a0f3ad3a/surfsense_local/frontend/package.json)

### Styles

- **[Tailwind CSS](https://seerepo.com/uses/tailwind-css)**
- **[class-variance-authority](https://seerepo.com/uses/class-variance-authority)**: 8 files
- **[tailwind-merge](https://seerepo.com/uses/tailwind-merge)**: 1 file

### Interface

- **[Base UI](https://seerepo.com/uses/base-ui)**: 21 files
- **[sonner](https://seerepo.com/uses/sonner)**: 12 files
- **atlaskit**: 4 files
- **@assistant-ui/react-streamdown**: 2 files
- **@streamdown/code**: 1 file
- **react-data-grid**: 1 file

### Icons

- **hugeicons**: 1 file

## Backend (surfsense_local/frontend)

### AI

- **@assistant-ui/react**: 19 files

## Support (surfsense_local/frontend)

### Content

- **[streamdown](https://seerepo.com/uses/streamdown)**: 6 files
- **docx-preview**: 3 files
- **@aiden0z/pptx-renderer**: 2 files
- **[pdfjs-dist](https://seerepo.com/uses/pdfjs-dist)**: 2 files
- **[exceljs](https://seerepo.com/uses/exceljs)**: 1 file
- **[katex](https://seerepo.com/uses/katex)**: 1 file
- **[shiki](https://seerepo.com/uses/shiki)**: 1 file
- **ssf**: 1 file

### Testing

- **Vitest**: 136 files
- **Testing Library**: 103 files

### Other

- **[TanStack](https://seerepo.com/uses/tanstack)**: 79 files
- **react-intl**: 2 files
- **clsx**: 1 file

## Other repos with a similar stack

- [Significant-Gravitas/AutoGPT](https://seerepo.com/r/Significant-Gravitas/AutoGPT/built): FastAPI, Claude, Stripe, PostHog, uvicorn, React, cryptography, markdown-it-py, python-docx, pypdfium2, pillow, pypdf, openpyxl, Pydantic, psutil, Tailwind CSS, class-variance-authority, tailwind-merge, sonner, hugeicons, streamdown, katex, shiki · [Compare](https://seerepo.com/compare/MODSetter/SurfSense/vs/Significant-Gravitas/AutoGPT)
- [unslothai/unsloth](https://seerepo.com/r/unslothai/unsloth/built): FastAPI, uvicorn, React, Vite, matplotlib, cryptography, torch, markdown-it-py, python-docx, pillow, Pydantic, psutil, Tailwind CSS, class-variance-authority, tailwind-merge, Base UI, sonner, @streamdown/code, hugeicons, @assistant-ui/react, streamdown, katex · [Compare](https://seerepo.com/compare/MODSetter/SurfSense/vs/unslothai/unsloth)
- [debpalash/VoiceStudio](https://seerepo.com/r/debpalash/VoiceStudio/built): FastAPI, PostHog, Electron, React, Vite, matplotlib, alembic, cryptography, torch, MCP, onnxruntime, torchvision, pillow, defusedxml, Pydantic, psutil, Tailwind CSS, class-variance-authority, tailwind-merge, Base UI, sonner · [Compare](https://seerepo.com/compare/debpalash/VoiceStudio/vs/MODSetter/SurfSense)
- [bojieli/ai-agent-book](https://seerepo.com/r/bojieli/ai-agent-book/built): FastAPI, PostHog, uvicorn, React, Vite, matplotlib, torch, MCP, python-docx, python-pptx, pillow, pypdf, xlsxwriter, openpyxl, Pydantic, psutil, Tailwind CSS, class-variance-authority, tailwind-merge, katex · [Compare](https://seerepo.com/compare/bojieli/ai-agent-book/vs/MODSetter/SurfSense)
- [HKUDS/DeepTutor](https://seerepo.com/r/HKUDS/DeepTutor/built): FastAPI, Electron, React, MCP, markdown-it-py, python-docx, python-pptx, pypdf, openpyxl, defusedxml, Pydantic, psutil, Tailwind CSS, tailwind-merge, docx-preview, pdfjs-dist, exceljs, katex · [Compare](https://seerepo.com/compare/HKUDS/DeepTutor/vs/MODSetter/SurfSense)
- [datawhalechina/hello-agents](https://seerepo.com/r/datawhalechina/hello-agents/built): FastAPI, uvicorn, React, Vite, matplotlib, alembic, torch, MCP, onnxruntime, python-docx, pillow, pypdf, openpyxl, email-validator, Pydantic, Tailwind CSS, katex · [Compare](https://seerepo.com/compare/datawhalechina/hello-agents/vs/MODSetter/SurfSense)

## Frequently asked questions

### What language is SurfSense written in?

SurfSense is written in Python, with 431,083 written lines.

### What framework does SurfSense use?

SurfSense is built with FastAPI, uvicorn, Electron, React, and Vite.

### What does SurfSense sign people in with?

SurfSense signs people in with cryptography.

### What does SurfSense take payments with?

SurfSense takes payments with Stripe.

The proof: [backend/license/stripe_client.py, line 8](https://github.com/MODSetter/SurfSense/blob/b764f2838969974fd1b0e8c386326039a0f3ad3a/backend/license/stripe_client.py#L8)

### Does SurfSense use AI?

Yes. SurfSense uses AI through torch, mcp, onnxruntime, chonkie, torchvision, and @assistant-ui/react.

### What services does SurfSense use?

SurfSense measures its use with PostHog and uses Claude.

The proof: [backend/license/analytics.py, line 36](https://github.com/MODSetter/SurfSense/blob/b764f2838969974fd1b0e8c386326039a0f3ad3a/backend/license/analytics.py#L36)

### Does SurfSense have tests?

Yes. SurfSense has 1,179 test files and is tested with Vitest and Testing Library.

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

The ones that share most of its stack: Significant-Gravitas/AutoGPT, unslothai/unsloth, and debpalash/VoiceStudio.

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