Source: https://seerepo.com/r/every-app/open-seo/built
Markdown source: https://seerepo.com/r/every-app/open-seo/built.md
Description: open-seo is a TypeScript repo built with React, TanStack, Vite, alchemy, and fumadocs-core. It reaches it with Drizzle.

# What is open-seo built with?

open-seo is a TypeScript repo built with React, TanStack, Vite, alchemy, and fumadocs-core. It reaches it with Drizzle, signs people in with Better Auth, jose, and Cloudflare, uses AI through ai, agents, and OpenRouter, measures its use with PostHog, makes its content with Cheerio, react-markdown, remark-gfm, htmlparser2, papaparse, and 3 more, validates its data with Zod, is tested with Vitest and @playwright/test, and uses Postgres, SQLite, and MCP. It has 234,334 written lines, with 327 test files.

Read on November 8, 2026, at commit 46b815b.

Repository: https://github.com/every-app/open-seo

## Frontend (/)

### The base

- **[React](https://seerepo.com/uses/react)**: 286 files · [in package.json](https://github.com/every-app/open-seo/blob/46b815be34723e46ceeefe9b2b907bb62b62fd76/package.json)
- **TanStack**: 178 files
- **[Vite](https://seerepo.com/uses/vite)**: 2 files · [in package.json](https://github.com/every-app/open-seo/blob/46b815be34723e46ceeefe9b2b907bb62b62fd76/package.json)

### Styles

- **[Tailwind CSS](https://seerepo.com/uses/tailwind-css)**
- **[cn](https://seerepo.com/uses/cn)**: 61 files
- **[class-variance-authority](https://seerepo.com/uses/class-variance-authority)**: 10 files
- **@tailwindcss/vite**: 1 file

### Interface

- **[sonner](https://seerepo.com/uses/sonner)**: 67 files
- **[tanstack](https://seerepo.com/uses/tanstack)**: 51 files
- **[Base UI](https://seerepo.com/uses/base-ui)**: 24 files
- **[recharts](https://seerepo.com/uses/recharts)**: 10 files
- **[Leaflet](https://seerepo.com/uses/leaflet)**: 5 files
- **react-leaflet**: 3 files
- **takumi-js**: 1 file

### Icons

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

## Backend (/)

### Data

- **[Postgres](https://seerepo.com/uses/postgres)**: 1 file · [src/db/pg/client.ts, line 4](https://github.com/every-app/open-seo/blob/46b815be34723e46ceeefe9b2b907bb62b62fd76/src/db/pg/client.ts#L4)
- **[SQLite](https://seerepo.com/uses/sqlite)**: 1 file · [src/server/features/ai-visibility/aiVisibilityTestDb.ts, line 2](https://github.com/every-app/open-seo/blob/46b815be34723e46ceeefe9b2b907bb62b62fd76/src/server/features/ai-visibility/aiVisibilityTestDb.ts#L2)

### Data access

- **[Drizzle](https://seerepo.com/uses/drizzle)**: 77 files

### Sign-in

- **[Better Auth](https://seerepo.com/uses/better-auth)**: 13 files
- **[jose](https://seerepo.com/uses/jose)**: 4 files
- **Cloudflare**: 3 files

### AI

- **[ai](https://seerepo.com/uses/ai)**: 8 files
- **agents**: 7 files
- **[OpenRouter](https://seerepo.com/uses/openrouter)**: 2 files

### Services

- **[MCP](https://seerepo.com/uses/mcp)**: 5 files · [src/client/mcp-widgets/useWidgetHost.ts, line 3](https://github.com/every-app/open-seo/blob/46b815be34723e46ceeefe9b2b907bb62b62fd76/src/client/mcp-widgets/useWidgetHost.ts#L3)
- **[PostHog](https://seerepo.com/uses/posthog)**: 3 files · [src/client/lib/posthog.ts, line 9](https://github.com/every-app/open-seo/blob/46b815be34723e46ceeefe9b2b907bb62b62fd76/src/client/lib/posthog.ts#L9)

## Support (/)

### The base

- **alchemy**: 3 files

### Content

- **[Cheerio](https://seerepo.com/uses/cheerio)**: 5 files
- **[react-markdown](https://seerepo.com/uses/react-markdown)**: 3 files
- **[remark-gfm](https://seerepo.com/uses/remark-gfm)**: 3 files
- **[htmlparser2](https://seerepo.com/uses/htmlparser2)**: 2 files
- **[papaparse](https://seerepo.com/uses/papaparse)**: 2 files
- **[fast-xml-parser](https://seerepo.com/uses/fast-xml-parser)**: 1 file
- **[yaml](https://seerepo.com/uses/yaml)**: 1 file

### Validation

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

### Testing

- **Vitest**: 284 files
- **@playwright/test**: 11 files

### Tools

- **@cloudflare/workers-types**: 2 files
- **@tanstack/react-devtools**: 1 file
- **@vitejs/plugin-react**: 1 file
- **TypeScript**: 1 file
- **wrangler**: 1 file

### Other

- **[tanstack](https://seerepo.com/uses/tanstack)**: 160 files
- **remeda**: 54 files
- **tldts**: 4 files
- **Effect**: 3 files
- **autumn-js**: 1 file
- **robots-parser**: 1 file

## Frontend (web)

### The base

- **[Vite](https://seerepo.com/uses/vite)**: [in package.json](https://github.com/every-app/open-seo/blob/46b815be34723e46ceeefe9b2b907bb62b62fd76/package.json)
- **TanStack**: 104 files
- **[React](https://seerepo.com/uses/react)**: 29 files · [in package.json](https://github.com/every-app/open-seo/blob/46b815be34723e46ceeefe9b2b907bb62b62fd76/package.json)

### Styles

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

### Interface

- **fumadocs-ui**: 49 files
- **[Radix UI](https://seerepo.com/uses/radix-ui)**: 1 file

## Support (web)

### The base

- **fumadocs-core**: 1 file

### Content

- **fumadocs-mdx**: 3 files

### Validation

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

### Testing

- **Vitest**: 2 files
- **@playwright/test**: 1 file

## Other repos with a similar stack

- [cline/cline](https://seerepo.com/r/cline/cline/built): React, Vite, SQLite, MCP, PostHog, Tailwind CSS, class-variance-authority, sonner, Base UI, recharts, Lucide, ai, Cheerio, react-markdown, remark-gfm, yaml, Zod, Radix UI · [Compare](https://seerepo.com/compare/cline/cline/vs/every-app/open-seo)
- [CherryHQ/cherry-studio](https://seerepo.com/r/CherryHQ/cherry-studio/built): React, TanStack, Vite, SQLite, MCP, Tailwind CSS, class-variance-authority, Lucide, Drizzle, ai, OpenRouter, Cheerio, remark-gfm, htmlparser2, fast-xml-parser, yaml, Zod, Radix UI · [Compare](https://seerepo.com/compare/CherryHQ/cherry-studio/vs/every-app/open-seo)
- [supabase/supabase](https://seerepo.com/r/supabase/supabase/built): React, Vite, MCP, PostHog, Tailwind CSS, cn, class-variance-authority, sonner, recharts, Lucide, ai, Cheerio, react-markdown, remark-gfm, papaparse, Zod, Radix UI · [Compare](https://seerepo.com/compare/every-app/open-seo/vs/supabase/supabase)
- [paperclipai/paperclip](https://seerepo.com/r/paperclipai/paperclip/built): React, Vite, Postgres, MCP, Tailwind CSS, class-variance-authority, Base UI, Lucide, Drizzle, Better Auth, ai, react-markdown, remark-gfm, yaml, Zod, Radix UI · [Compare](https://seerepo.com/compare/every-app/open-seo/vs/paperclipai/paperclip)
- [reactive-resume/reactive-resume](https://seerepo.com/r/reactive-resume/reactive-resume/built): React, TanStack, Postgres, MCP, Tailwind CSS, cn, class-variance-authority, Base UI, Drizzle, Better Auth, jose, ai, react-markdown, remark-gfm, htmlparser2, Zod · [Compare](https://seerepo.com/compare/every-app/open-seo/vs/reactive-resume/reactive-resume)
- [ruvnet/ruflo](https://seerepo.com/r/ruvnet/ruflo/built): React, Vite, Postgres, SQLite, MCP, Tailwind CSS, class-variance-authority, sonner, recharts, Lucide, jose, htmlparser2, yaml, Zod, Radix UI · [Compare](https://seerepo.com/compare/every-app/open-seo/vs/ruvnet/ruflo)

## Frequently asked questions

### What language is open-seo written in?

open-seo is written in TypeScript, with 234,334 written lines.

### What framework does open-seo use?

open-seo is built with React, TanStack, Vite, alchemy, and fumadocs-core.

The proof: [in package.json](https://github.com/every-app/open-seo/blob/46b815be34723e46ceeefe9b2b907bb62b62fd76/package.json)

### What does open-seo sign people in with?

open-seo signs people in with Better Auth, jose, and Cloudflare.

### Does open-seo use AI?

Yes. open-seo uses AI through ai, agents, and OpenRouter.

### What services does open-seo use?

open-seo measures its use with PostHog and uses Postgres, SQLite, and MCP.

The proof: [src/client/lib/posthog.ts, line 9](https://github.com/every-app/open-seo/blob/46b815be34723e46ceeefe9b2b907bb62b62fd76/src/client/lib/posthog.ts#L9)

### Does open-seo have tests?

Yes. open-seo has 327 test files and is tested with Vitest and @playwright/test.

### Which repos have a stack like open-seo's?

The ones that share most of its stack: cline/cline, CherryHQ/cherry-studio, 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.
