Source: https://seerepo.com/r/rybbit-io/rybbit/built
Markdown source: https://seerepo.com/r/rybbit-io/rybbit/built.md
Description: rybbit is a TypeScript repo built with React, Next.js, react-native, Fastify, and @fastify/static.

# What is rybbit built with?

rybbit is a TypeScript repo built with React, Next.js, react-native, Fastify, and @fastify/static. It stores its data in @electric-sql/pglite, sqlstring, ClickHouse, node-cache, and Postgres, reaches it with Drizzle and kysely, signs people in with Better Auth and @marsidev/react-turnstile, takes payments with Stripe, sends email with Resend, makes its content with papaparse and @react-email/components, validates its data with @hookform/resolvers and Zod, is tested with Vitest, Testing Library, and Puppeteer, deploys with pino, and uses Redis and MCP. It has 297,531 written lines, with 327 test files.

Read on November 10, 2026, at commit 4288204.

Repository: https://github.com/rybbit-io/rybbit

## Frontend (client)

### The base

- **[React](https://seerepo.com/uses/react)**: 412 files · [in client/package.json](https://github.com/rybbit-io/rybbit/blob/4288204761ed2fc801fcaa0b3bbfacd1b8cc3936/client/package.json)
- **[Next.js](https://seerepo.com/uses/nextjs)**: 110 files · [in client/package.json](https://github.com/rybbit-io/rybbit/blob/4288204761ed2fc801fcaa0b3bbfacd1b8cc3936/client/package.json)

### Styles

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

### Interface

- **[Radix UI](https://seerepo.com/uses/radix-ui)**: 35 files
- **[@uidotdev/usehooks](https://seerepo.com/uses/uidotdev-usehooks)**: 30 files
- **[Framer](https://seerepo.com/uses/framer)**: 15 files
- **tanstack**: 15 files
- **@number-flow/react**: 13 files
- **nivo**: 11 files
- **Mapbox**: 10 files
- **ol**: 10 files
- **[D3](https://seerepo.com/uses/d3)**: 4 files
- **[React Hook Form](https://seerepo.com/uses/react-hook-form)**: 4 files
- **[react-syntax-highlighter](https://seerepo.com/uses/react-syntax-highlighter)**: 3 files
- **[cmdk](https://seerepo.com/uses/cmdk)**: 2 files
- **d3-scale**: 2 files
- **[react-day-picker](https://seerepo.com/uses/react-day-picker)**: 2 files
- **rrweb-player**: 2 files
- **[vaul](https://seerepo.com/uses/vaul)**: 2 files
- **[@monaco-editor/react](https://seerepo.com/uses/monaco-editor-react)**: 1 file
- **Cal.com**: 1 file
- **[embla-carousel-react](https://seerepo.com/uses/embla-carousel-react)**: 1 file
- **[react-grid-layout](https://seerepo.com/uses/react-grid-layout)**: 1 file
- **[react-hot-toast](https://seerepo.com/uses/react-hot-toast)**: 1 file
- **[react-resizable](https://seerepo.com/uses/react-resizable)**: 1 file

### Icons

- **[Lucide](https://seerepo.com/uses/lucide)**: 279 files
- **@icons-pack/react-simple-icons**: 5 files
- **[country-flag-icons](https://seerepo.com/uses/country-flag-icons)**: 3 files

## Backend (client)

### Sign-in

- **[Better Auth](https://seerepo.com/uses/better-auth)**: 2 files
- **@marsidev/react-turnstile**: 1 file

### Services

- **[Stripe](https://seerepo.com/uses/stripe)**: 1 file · [server/src/lib/stripe.ts, line 1](https://github.com/rybbit-io/rybbit/blob/4288204761ed2fc801fcaa0b3bbfacd1b8cc3936/server/src/lib/stripe.ts#L1)

## Support (client)

### Content

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

### Validation

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

### Testing

- **Vitest**: 133 files
- **Testing Library**: 69 files

### Tools

- **sql-formatter**: 2 files
- **@tanstack/react-query-devtools**: 1 file

### Other

- **next-intl**: 347 files
- **luxon**: 105 files
- **[TanStack](https://seerepo.com/uses/tanstack)**: 87 files
- **zustand**: 23 files
- **Lodash**: 13 files
- **nuqs**: 12 files
- **jszip**: 2 files
- **Axios**: 1 file
- **clsx**: 1 file
- **geojson**: 1 file
- **ip-address**: 1 file
- **unique-names-generator**: 1 file

## Support (react-native)

### The base

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

## Frontend (server)

### The base

- **[React](https://seerepo.com/uses/react)**: 18 files · [in client/package.json](https://github.com/rybbit-io/rybbit/blob/4288204761ed2fc801fcaa0b3bbfacd1b8cc3936/client/package.json)

## Backend (server)

### The base

- **Fastify**: 186 files · [in server/package.json](https://github.com/rybbit-io/rybbit/blob/4288204761ed2fc801fcaa0b3bbfacd1b8cc3936/server/package.json)

### Data

- **[@electric-sql/pglite](https://seerepo.com/uses/electric-sql-pglite)**: 19 files
- **sqlstring**: 17 files
- **[ClickHouse](https://seerepo.com/uses/clickhouse)**: 2 files
- **node-cache**: 2 files
- **[Postgres](https://seerepo.com/uses/postgres)**: 2 files · [server/src/db/postgres/postgres.ts, line 4](https://github.com/rybbit-io/rybbit/blob/4288204761ed2fc801fcaa0b3bbfacd1b8cc3936/server/src/db/postgres/postgres.ts#L4)
- **[Redis](https://seerepo.com/uses/redis)**: 2 files · [server/src/db/redis/redis.ts, line 1](https://github.com/rybbit-io/rybbit/blob/4288204761ed2fc801fcaa0b3bbfacd1b8cc3936/server/src/db/redis/redis.ts#L1)

### Data access

- **[Drizzle](https://seerepo.com/uses/drizzle)**: 108 files
- **[kysely](https://seerepo.com/uses/kysely)**: 1 file

### Sign-in

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

### Services

- **[MCP](https://seerepo.com/uses/mcp)**: 12 files · [server/src/mcp/index.ts, line 1](https://github.com/rybbit-io/rybbit/blob/4288204761ed2fc801fcaa0b3bbfacd1b8cc3936/server/src/mcp/index.ts#L1)
- **[Stripe](https://seerepo.com/uses/stripe)**: 10 files · [server/src/lib/stripe.ts, line 1](https://github.com/rybbit-io/rybbit/blob/4288204761ed2fc801fcaa0b3bbfacd1b8cc3936/server/src/lib/stripe.ts#L1)
- **[Resend](https://seerepo.com/uses/resend)**: 1 file · [server/src/lib/email/email.ts, line 2](https://github.com/rybbit-io/rybbit/blob/4288204761ed2fc801fcaa0b3bbfacd1b8cc3936/server/src/lib/email/email.ts#L2)

## Support (server)

### The base

- **@fastify/static**: 1 file

### Content

- **[@react-email/components](https://seerepo.com/uses/react-email-components)**: 2 files

### Validation

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

### Testing

- **Vitest**: 189 files
- **Puppeteer**: 1 file

### Deploy

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

### Tools

- **esbuild**: 1 file
- **safe-regex2**: 1 file

### Other

- **luxon**: 33 files
- **.ENV**: 6 files
- **ip-address**: 5 files
- **node-cron**: 5 files
- **ua-parser-js**: 3 files
- **@maxmind/geoip2-node**: 2 files
- **@smithy/node-http-handler**: 1 file
- **[fastify](https://seerepo.com/uses/fastify)**: 1 file
- **i18n-iso-countries**: 1 file
- **nanoid**: 1 file
- **psl**: 1 file
- **web-vitals**: 1 file

## Support (shared)

### Testing

- **Vitest**: 1 file

## Other repos with a similar stack

- [supabase/supabase](https://seerepo.com/r/supabase/supabase/built): React, Next.js, Stripe, MCP, Tailwind CSS, next-themes, class-variance-authority, Radix UI, @uidotdev/usehooks, tanstack, @number-flow/react, D3, React Hook Form, react-syntax-highlighter, cmdk, react-day-picker, vaul, react-grid-layout, react-resizable, Lucide, papaparse, @hookform/resolvers, Zod · [Compare](https://seerepo.com/compare/rybbit-io/rybbit/vs/supabase/supabase)
- [infiniflow/ragflow](https://seerepo.com/r/infiniflow/ragflow/built): React, Postgres, Redis, MCP, Tailwind CSS, next-themes, class-variance-authority, tailwind-merge, Radix UI, tanstack, D3, React Hook Form, react-syntax-highlighter, cmdk, react-day-picker, @monaco-editor/react, embla-carousel-react, Lucide, papaparse, @hookform/resolvers, Zod · [Compare](https://seerepo.com/compare/infiniflow/ragflow/vs/rybbit-io/rybbit)
- [Significant-Gravitas/AutoGPT](https://seerepo.com/r/Significant-Gravitas/AutoGPT/built): React, Next.js, Stripe, Postgres, Redis, Tailwind CSS, next-themes, class-variance-authority, tailwind-merge, Radix UI, Framer, React Hook Form, cmdk, react-day-picker, vaul, embla-carousel-react, Better Auth, @hookform/resolvers, Zod, kysely · [Compare](https://seerepo.com/compare/rybbit-io/rybbit/vs/Significant-Gravitas/AutoGPT)
- [calcom/cal.diy](https://seerepo.com/r/calcom/cal.diy/built): React, Next.js, Stripe, Postgres, Redis, Tailwind CSS, next-themes, class-variance-authority, tailwind-merge, Radix UI, Framer, React Hook Form, cmdk, react-day-picker, Lucide, @hookform/resolvers, Zod, kysely · [Compare](https://seerepo.com/compare/calcom/cal.diy/vs/rybbit-io/rybbit)
- [TryGhost/Ghost](https://seerepo.com/r/TryGhost/Ghost/built): React, Stripe, Tailwind CSS, class-variance-authority, tailwind-merge, Radix UI, @number-flow/react, D3, React Hook Form, cmdk, react-day-picker, Lucide, country-flag-icons, Better Auth, papaparse, @hookform/resolvers, Zod · [Compare](https://seerepo.com/compare/rybbit-io/rybbit/vs/TryGhost/Ghost)
- [ruvnet/ruflo](https://seerepo.com/r/ruvnet/ruflo/built): React, Postgres, MCP, Tailwind CSS, next-themes, class-variance-authority, tailwind-merge, Radix UI, React Hook Form, cmdk, react-day-picker, vaul, embla-carousel-react, Lucide, Zod, pino · [Compare](https://seerepo.com/compare/ruvnet/ruflo/vs/rybbit-io/rybbit)

## Frequently asked questions

### What language is rybbit written in?

rybbit is written in TypeScript, with 297,531 written lines.

### What framework does rybbit use?

rybbit is built with React, Next.js, react-native, Fastify, and @fastify/static.

The proof: [in client/package.json](https://github.com/rybbit-io/rybbit/blob/4288204761ed2fc801fcaa0b3bbfacd1b8cc3936/client/package.json)

### What database does rybbit use?

rybbit stores its data in @electric-sql/pglite, sqlstring, ClickHouse, node-cache, and Postgres and reaches it with Drizzle and kysely.

### What does rybbit sign people in with?

rybbit signs people in with Better Auth and @marsidev/react-turnstile.

### What does rybbit take payments with?

rybbit takes payments with Stripe.

The proof: [server/src/lib/stripe.ts, line 1](https://github.com/rybbit-io/rybbit/blob/4288204761ed2fc801fcaa0b3bbfacd1b8cc3936/server/src/lib/stripe.ts#L1)

### What services does rybbit use?

rybbit sends email with Resend and uses Redis and MCP.

The proof: [server/src/lib/email/email.ts, line 2](https://github.com/rybbit-io/rybbit/blob/4288204761ed2fc801fcaa0b3bbfacd1b8cc3936/server/src/lib/email/email.ts#L2)

### Does rybbit have tests?

Yes. rybbit has 327 test files and is tested with Vitest, Testing Library, and Puppeteer.

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

The ones that share most of its stack: supabase/supabase, infiniflow/ragflow, and Significant-Gravitas/AutoGPT.

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