Source: https://seerepo.com/r/baptisteArno/typebot.io/built
Markdown source: https://seerepo.com/r/baptisteArno/typebot.io/built.md
Description: typebot.io is a TypeScript repo built with Next.js, React, @orpc/server, Vite, TanStack, and 2 more. It stores its data in MinIO and Postgres.

# What is typebot.io built with?

typebot.io is a TypeScript repo built with Next.js, React, @orpc/server, Vite, TanStack, and 2 more. It stores its data in MinIO and Postgres, signs people in with next-auth, jsonwebtoken, and @auth/core, takes payments with Stripe, uses AI through ai, OpenAI, @ai-sdk/ui-utils, @ai-sdk/deepseek, dify-ai-provider, and 4 more, measures its use with PostHog, watches its errors with Sentry, makes its content with papaparse, nodemailer, react-markdown, @content-collections/core, @shikijs/transformers, and 15 more, validates its data with Zod, @orpc/zod, zod-validation-error, mailchecker, and validator, is tested with @playwright/test, Prisma, Vitest, @testcontainers/postgresql, and @effect/vitest, deploys with opentelemetry, @effect/platform-bun, OpenTelemetry, and @effect/opentelemetry, and uses GIPHY, Unsplash, Redis, and MySQL. It has 168,431 written lines, with 146 test files.

Read on November 13, 2026, at commit 532c83e.

Repository: https://github.com/baptisteArno/typebot.io

## Frontend (/)

### The base

- **[Next.js](https://seerepo.com/uses/nextjs)**: 2 files · [in apps/viewer/package.json](https://github.com/baptisteArno/typebot.io/blob/532c83e78cf2ad3c7b86e7db847456609e363213/apps/viewer/package.json)
- **[React](https://seerepo.com/uses/react)**: 1 file · [in apps/viewer/package.json](https://github.com/baptisteArno/typebot.io/blob/532c83e78cf2ad3c7b86e7db847456609e363213/apps/viewer/package.json)

## Support (/)

### The base

- **@orpc/server**: 1 file

### Testing

- **@playwright/test**: 9 files
- **[Prisma](https://seerepo.com/uses/prisma)**: 1 file

### Tools

- **jiti**: 1 file

### Other

- **@orpc/openapi**: 1 file

## Frontend (apps/builder)

### The base

- **[React](https://seerepo.com/uses/react)**: 232 files · [in apps/viewer/package.json](https://github.com/baptisteArno/typebot.io/blob/532c83e78cf2ad3c7b86e7db847456609e363213/apps/viewer/package.json)
- **[Next.js](https://seerepo.com/uses/nextjs)**: 50 files · [in apps/viewer/package.json](https://github.com/baptisteArno/typebot.io/blob/532c83e78cf2ad3c7b86e7db847456609e363213/apps/viewer/package.json)

### Styles

- **[Tailwind CSS](https://seerepo.com/uses/tailwind-css)**
- **[next-themes](https://seerepo.com/uses/next-themes)**: 5 files
- **@uiw/codemirror-theme-github**: 1 file

### Interface

- **[motion](https://seerepo.com/uses/motion)**: 7 files
- **[@use-gesture/react](https://seerepo.com/uses/use-gesture-react)**: 6 files
- **[@tanstack/react-table](https://seerepo.com/uses/tanstack-react-table)**: 4 files
- **platejs**: 3 files
- **@giphy/react-components**: 1 file
- **[Base UI](https://seerepo.com/uses/base-ui)**: 1 file
- **[canvas-confetti](https://seerepo.com/uses/canvas-confetti)**: 1 file
- **[dnd-kit](https://seerepo.com/uses/dnd-kit)**: 1 file
- **[uiw](https://seerepo.com/uses/uiw)**: 1 file

## Backend (apps/builder)

### Data access

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

### Sign-in

- **[next-auth](https://seerepo.com/uses/next-auth)**: 4 files
- **[jsonwebtoken](https://seerepo.com/uses/jsonwebtoken)**: 2 files

### AI

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

### Services

- **[Sentry](https://seerepo.com/uses/sentry)**: 4 files · [packages/telemetry/src/reportWorkflowFailureToSentry.ts, line 1](https://github.com/baptisteArno/typebot.io/blob/532c83e78cf2ad3c7b86e7db847456609e363213/packages/telemetry/src/reportWorkflowFailureToSentry.ts#L1)
- **GIPHY**: 1 file · [apps/builder/src/components/ImageUploadContent/GiphyPicker.tsx, line 1](https://github.com/baptisteArno/typebot.io/blob/532c83e78cf2ad3c7b86e7db847456609e363213/apps/builder/src/components/ImageUploadContent/GiphyPicker.tsx#L1)
- **[OpenAI](https://seerepo.com/uses/openai)**: 1 file · [packages/forge/blocks/openai/src/handlers/createSafeOpenAIClient.ts, line 2](https://github.com/baptisteArno/typebot.io/blob/532c83e78cf2ad3c7b86e7db847456609e363213/packages/forge/blocks/openai/src/handlers/createSafeOpenAIClient.ts#L2)
- **[Stripe](https://seerepo.com/uses/stripe)**: 1 file · [packages/billing/src/api/handleStripeWebhook.ts, line 7](https://github.com/baptisteArno/typebot.io/blob/532c83e78cf2ad3c7b86e7db847456609e363213/packages/billing/src/api/handleStripeWebhook.ts#L7)
- **Unsplash**: 1 file · [apps/builder/src/components/ImageUploadContent/UnsplashPicker.tsx, line 9](https://github.com/baptisteArno/typebot.io/blob/532c83e78cf2ad3c7b86e7db847456609e363213/apps/builder/src/components/ImageUploadContent/UnsplashPicker.tsx#L9)

## Support (apps/builder)

### The base

- **@orpc/server**: 78 files

### Content

- **[papaparse](https://seerepo.com/uses/papaparse)**: 2 files
- **[nodemailer](https://seerepo.com/uses/nodemailer)**: 1 file
- **[react-markdown](https://seerepo.com/uses/react-markdown)**: 1 file

### Validation

- **[Zod](https://seerepo.com/uses/zod)**: 115 files
- **@orpc/zod**: 1 file
- **[zod-validation-error](https://seerepo.com/uses/zod-validation-error)**: 1 file

### Deploy

- **opentelemetry**: 1 file

### Tools

- **Prettier**: 14 files

### Other

- **[TanStack](https://seerepo.com/uses/tanstack)**: 67 files
- **@paralleldrive/cuid2**: 15 files
- **orpc**: 12 files
- **use-debounce**: 8 files
- **zustand**: 7 files
- **Effect**: 6 files
- **Immer**: 6 files
- **dequal**: 5 files
- **nuqs**: 5 files
- **qs**: 4 files
- **ky**: 2 files
- **deep-object-diff**: 1 file
- **[OpenTelemetry](https://seerepo.com/uses/opentelemetry)**: 1 file
- **partysocket**: 1 file
- **tinycolor2**: 1 file

## Frontend (apps/landing-page)

### The base

- **[Vite](https://seerepo.com/uses/vite)**: [in apps/landing-page/package.json](https://github.com/baptisteArno/typebot.io/blob/532c83e78cf2ad3c7b86e7db847456609e363213/apps/landing-page/package.json)
- **[React](https://seerepo.com/uses/react)**: 31 files · [in apps/viewer/package.json](https://github.com/baptisteArno/typebot.io/blob/532c83e78cf2ad3c7b86e7db847456609e363213/apps/viewer/package.json)
- **[TanStack](https://seerepo.com/uses/tanstack)**: 25 files

### Styles

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

### Interface

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

## Support (apps/landing-page)

### Content

- **@content-collections/core**: 1 file
- **@shikijs/transformers**: 1 file
- **rehype-autolink-headings**: 1 file
- **rehype-pretty-code**: 1 file
- **[rehype-slug](https://seerepo.com/uses/rehype-slug)**: 1 file
- **[remark-gfm](https://seerepo.com/uses/remark-gfm)**: 1 file
- **[unified](https://seerepo.com/uses/unified)**: 1 file
- **[unist-util-visit](https://seerepo.com/uses/unist-util-visit)**: 1 file

### Validation

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

## Frontend (apps/viewer)

### The base

- **[Next.js](https://seerepo.com/uses/nextjs)**: 9 files · [in apps/viewer/package.json](https://github.com/baptisteArno/typebot.io/blob/532c83e78cf2ad3c7b86e7db847456609e363213/apps/viewer/package.json)
- **[React](https://seerepo.com/uses/react)**: 4 files · [in apps/viewer/package.json](https://github.com/baptisteArno/typebot.io/blob/532c83e78cf2ad3c7b86e7db847456609e363213/apps/viewer/package.json)

## Backend (apps/viewer)

### Services

- **[Sentry](https://seerepo.com/uses/sentry)**: 4 files · [packages/telemetry/src/reportWorkflowFailureToSentry.ts, line 1](https://github.com/baptisteArno/typebot.io/blob/532c83e78cf2ad3c7b86e7db847456609e363213/packages/telemetry/src/reportWorkflowFailureToSentry.ts#L1)

## Support (apps/viewer)

### The base

- **@orpc/server**: 3 files

### Validation

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

### Testing

- **@playwright/test**: 26 files
- **[papaparse](https://seerepo.com/uses/papaparse)**: 1 file

### Other

- **@paralleldrive/cuid2**: 12 files
- **@orpc/openapi**: 2 files

## Backend (apps/workflows)

### Services

- **[Sentry](https://seerepo.com/uses/sentry)**: 2 files · [packages/telemetry/src/reportWorkflowFailureToSentry.ts, line 1](https://github.com/baptisteArno/typebot.io/blob/532c83e78cf2ad3c7b86e7db847456609e363213/packages/telemetry/src/reportWorkflowFailureToSentry.ts#L1)

## Support (apps/workflows)

### Deploy

- **@effect/platform-bun**: 1 file

### Other

- **Effect**: 2 files

## Backend (packages/ai)

### AI

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

## Support (packages/ai)

### Validation

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

### Other

- **ky**: 1 file

## Frontend (packages/auth)

### The base

- **[Next.js](https://seerepo.com/uses/nextjs)**: 1 file · [in apps/viewer/package.json](https://github.com/baptisteArno/typebot.io/blob/532c83e78cf2ad3c7b86e7db847456609e363213/apps/viewer/package.json)

## Backend (packages/auth)

### Data

- **[Redis](https://seerepo.com/uses/redis)**: 1 file · [packages/lib/src/redis/RedisClient.ts, line 12](https://github.com/baptisteArno/typebot.io/blob/532c83e78cf2ad3c7b86e7db847456609e363213/packages/lib/src/redis/RedisClient.ts#L12)

### Sign-in

- **[next-auth](https://seerepo.com/uses/next-auth)**: 3 files
- **@auth/core**: 1 file

## Support (packages/auth)

### The base

- **@orpc/server**: 2 files

### Validation

- **[Zod](https://seerepo.com/uses/zod)**: 2 files
- **mailchecker**: 1 file

### Testing

- **Vitest**: 3 files
- **[Prisma](https://seerepo.com/uses/prisma)**: 1 file

### Other

- **@paralleldrive/cuid2**: 1 file
- **Effect**: 1 file
- **nanoid**: 1 file

## Backend (packages/billing)

### Services

- **[Stripe](https://seerepo.com/uses/stripe)**: 9 files · [packages/billing/src/api/handleStripeWebhook.ts, line 7](https://github.com/baptisteArno/typebot.io/blob/532c83e78cf2ad3c7b86e7db847456609e363213/packages/billing/src/api/handleStripeWebhook.ts#L7)

## Support (packages/billing)

### The base

- **@orpc/server**: 9 files

### Validation

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

## Support (packages/blocks/base)

### Validation

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

## Support (packages/blocks/bubbles)

### Validation

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

## Support (packages/blocks/core)

### Validation

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

## Support (packages/blocks/fileInput)

### The base

- **@orpc/server**: 2 files

### Validation

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

## Support (packages/blocks/inputs)

### Validation

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

## Support (packages/blocks/integrations)

### Validation

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

## Support (packages/blocks/logic)

### Validation

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

## Support (packages/blocks/webhook)

### The base

- **@orpc/server**: 6 files

### Validation

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

### Testing

- **Vitest**: 1 file

### Other

- **partysocket**: 1 file

## Frontend (packages/bot-engine)

### The base

- **[Next.js](https://seerepo.com/uses/nextjs)**: 1 file · [in apps/viewer/package.json](https://github.com/baptisteArno/typebot.io/blob/532c83e78cf2ad3c7b86e7db847456609e363213/apps/viewer/package.json)

## Backend (packages/bot-engine)

### Services

- **[OpenAI](https://seerepo.com/uses/openai)**: 3 files · [packages/forge/blocks/openai/src/handlers/createSafeOpenAIClient.ts, line 2](https://github.com/baptisteArno/typebot.io/blob/532c83e78cf2ad3c7b86e7db847456609e363213/packages/forge/blocks/openai/src/handlers/createSafeOpenAIClient.ts#L2)
- **[Sentry](https://seerepo.com/uses/sentry)**: 1 file · [packages/telemetry/src/reportWorkflowFailureToSentry.ts, line 1](https://github.com/baptisteArno/typebot.io/blob/532c83e78cf2ad3c7b86e7db847456609e363213/packages/telemetry/src/reportWorkflowFailureToSentry.ts#L1)
- **[Stripe](https://seerepo.com/uses/stripe)**: 1 file · [packages/billing/src/api/handleStripeWebhook.ts, line 7](https://github.com/baptisteArno/typebot.io/blob/532c83e78cf2ad3c7b86e7db847456609e363213/packages/billing/src/api/handleStripeWebhook.ts#L7)

## Support (packages/bot-engine)

### The base

- **@orpc/server**: 20 files

### Content

- **[nodemailer](https://seerepo.com/uses/nodemailer)**: 2 files
- **google-spreadsheet**: 1 file
- **[node-html-parser](https://seerepo.com/uses/node-html-parser)**: 1 file

### Validation

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

### Other

- **@paralleldrive/cuid2**: 5 files
- **chrono-node**: 2 files
- **date-fns**: 2 files
- **ky**: 2 files
- **date-fns-tz**: 1 file
- **libphonenumber-js**: 1 file
- **qs**: 1 file
- **undici**: 1 file

## Support (packages/chat-api)

### Validation

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

## Backend (packages/chat-session)

### Services

- **[Sentry](https://seerepo.com/uses/sentry)**: 1 file · [packages/telemetry/src/reportWorkflowFailureToSentry.ts, line 1](https://github.com/baptisteArno/typebot.io/blob/532c83e78cf2ad3c7b86e7db847456609e363213/packages/telemetry/src/reportWorkflowFailureToSentry.ts#L1)

## Support (packages/chat-session)

### Validation

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

## Support (packages/conditions)

### Validation

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

## Backend (packages/config)

### Services

- **[Sentry](https://seerepo.com/uses/sentry)**: 2 files · [packages/telemetry/src/reportWorkflowFailureToSentry.ts, line 1](https://github.com/baptisteArno/typebot.io/blob/532c83e78cf2ad3c7b86e7db847456609e363213/packages/telemetry/src/reportWorkflowFailureToSentry.ts#L1)

## Support (packages/config)

### The base

- **@orpc/server**: 2 files

### Testing

- **[Prisma](https://seerepo.com/uses/prisma)**: 2 files
- **Vitest**: 2 files
- **@testcontainers/postgresql**: 1 file

### Other

- **@orpc/openapi**: 3 files
- **Effect**: 3 files

## Support (packages/credentials)

### Content

- **google-spreadsheet**: 1 file

### Validation

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

## Backend (packages/deprecated/legacy)

### Services

- **[OpenAI](https://seerepo.com/uses/openai)**: 1 file · [packages/forge/blocks/openai/src/handlers/createSafeOpenAIClient.ts, line 2](https://github.com/baptisteArno/typebot.io/blob/532c83e78cf2ad3c7b86e7db847456609e363213/packages/forge/blocks/openai/src/handlers/createSafeOpenAIClient.ts#L2)

## Frontend (packages/emails)

### The base

- **[React](https://seerepo.com/uses/react)**: 19 files · [in apps/viewer/package.json](https://github.com/baptisteArno/typebot.io/blob/532c83e78cf2ad3c7b86e7db847456609e363213/apps/viewer/package.json)

## Support (packages/emails)

### Content

- **[react-email](https://seerepo.com/uses/react-email)**: 19 files
- **[nodemailer](https://seerepo.com/uses/nodemailer)**: 8 files

### Other

- **Effect**: 1 file

## Frontend (packages/embeds/js)

### The base

- **[Solid](https://seerepo.com/uses/solid)**: 68 files

### Styles

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

### Interface

- **@ark-ui/solid**: 10 files

## Backend (packages/embeds/js)

### AI

- **@ai-sdk/ui-utils**: 1 file

### Services

- **[Stripe](https://seerepo.com/uses/stripe)**: 1 file · [packages/billing/src/api/handleStripeWebhook.ts, line 7](https://github.com/baptisteArno/typebot.io/blob/532c83e78cf2ad3c7b86e7db847456609e363213/packages/billing/src/api/handleStripeWebhook.ts#L7)

## Support (packages/embeds/js)

### The base

- **solid-element**: 1 file

### Content

- **[dompurify](https://seerepo.com/uses/dompurify)**: 2 files
- **@fix-webm-duration/fix**: 1 file
- **[marked](https://seerepo.com/uses/marked)**: 1 file

### Other

- **ky**: 4 files
- **partysocket**: 1 file

## Frontend (packages/embeds/react)

### The base

- **[React](https://seerepo.com/uses/react)**: 3 files · [in apps/viewer/package.json](https://github.com/baptisteArno/typebot.io/blob/532c83e78cf2ad3c7b86e7db847456609e363213/apps/viewer/package.json)

## Support (packages/env)

### Validation

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

### Other

- **@t3-oss/env-nextjs**: 1 file

## Support (packages/events)

### Validation

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

## Support (packages/forge/blocks/anthropic)

### Validation

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

## Support (packages/forge/blocks/blink)

### Other

- **ky**: 4 files

## Support (packages/forge/blocks/chatNode)

### Other

- **ky**: 1 file

## Backend (packages/forge/blocks/deepseek)

### AI

- **@ai-sdk/deepseek**: 1 file

## Support (packages/forge/blocks/deepseek)

### Testing

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

## Backend (packages/forge/blocks/difyAi)

### AI

- **@ai-sdk/ui-utils**: 1 file
- **dify-ai-provider**: 1 file

## Support (packages/forge/blocks/elevenlabs)

### Other

- **ky**: 1 file

## Support (packages/forge/blocks/gmail)

### Content

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

## Backend (packages/forge/blocks/groq)

### AI

- **@ai-sdk/groq**: 1 file

## Support (packages/forge/blocks/groq)

### Testing

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

## Backend (packages/forge/blocks/mistral)

### AI

- **@ai-sdk/mistral**: 3 files

## Frontend (packages/forge/blocks/nocodb)

### The base

- **[React](https://seerepo.com/uses/react)**: 1 file · [in apps/viewer/package.json](https://github.com/baptisteArno/typebot.io/blob/532c83e78cf2ad3c7b86e7db847456609e363213/apps/viewer/package.json)

## Frontend (packages/forge/blocks/openRouter)

### The base

- **[React](https://seerepo.com/uses/react)**: 1 file · [in apps/viewer/package.json](https://github.com/baptisteArno/typebot.io/blob/532c83e78cf2ad3c7b86e7db847456609e363213/apps/viewer/package.json)

## Backend (packages/forge/blocks/openRouter)

### AI

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

## Backend (packages/forge/blocks/openai)

### AI

- **@ai-sdk/ui-utils**: 2 files

### Services

- **[OpenAI](https://seerepo.com/uses/openai)**: 5 files · [packages/forge/blocks/openai/src/handlers/createSafeOpenAIClient.ts, line 2](https://github.com/baptisteArno/typebot.io/blob/532c83e78cf2ad3c7b86e7db847456609e363213/packages/forge/blocks/openai/src/handlers/createSafeOpenAIClient.ts#L2)

## Support (packages/forge/blocks/openai)

### Validation

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

### Testing

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

### Other

- **ky**: 2 files

## Support (packages/forge/blocks/perplexity)

### Testing

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

## Backend (packages/forge/blocks/posthog)

### Services

- **[PostHog](https://seerepo.com/uses/posthog)**: 1 file · [packages/services/feature-flags/src/infrastructure/PostHogFeatureFlags.ts, line 3](https://github.com/baptisteArno/typebot.io/blob/532c83e78cf2ad3c7b86e7db847456609e363213/packages/services/feature-flags/src/infrastructure/PostHogFeatureFlags.ts#L3)

## Support (packages/forge/blocks/qrcode)

### Content

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

## Support (packages/forge/blocks/segment)

### Other

- **@segment/analytics-node**: 4 files

## Frontend (packages/forge/blocks/togetherAi)

### The base

- **[React](https://seerepo.com/uses/react)**: 1 file · [in apps/viewer/package.json](https://github.com/baptisteArno/typebot.io/blob/532c83e78cf2ad3c7b86e7db847456609e363213/apps/viewer/package.json)

## Backend (packages/forge/blocks/togetherAi)

### AI

- **@ai-sdk/togetherai**: 1 file

## Backend (packages/forge/blocks/zendesk)

### Sign-in

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

## Frontend (packages/forge/cli)

### Interface

- **[@clack/prompts](https://seerepo.com/uses/clack-prompts)**: 1 file

## Frontend (packages/forge/core)

### The base

- **[React](https://seerepo.com/uses/react)**: 1 file · [in apps/viewer/package.json](https://github.com/baptisteArno/typebot.io/blob/532c83e78cf2ad3c7b86e7db847456609e363213/apps/viewer/package.json)

## Support (packages/forge/core)

### Validation

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

## Support (packages/forge/repository)

### Validation

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

## Support (packages/groups)

### Validation

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

## Frontend (packages/lib)

### The base

- **[React](https://seerepo.com/uses/react)**: [in apps/viewer/package.json](https://github.com/baptisteArno/typebot.io/blob/532c83e78cf2ad3c7b86e7db847456609e363213/apps/viewer/package.json)
- **[Next.js](https://seerepo.com/uses/nextjs)**: 1 file · [in apps/viewer/package.json](https://github.com/baptisteArno/typebot.io/blob/532c83e78cf2ad3c7b86e7db847456609e363213/apps/viewer/package.json)

## Backend (packages/lib)

### Data

- **[MinIO](https://seerepo.com/uses/minio)**: 3 files · [packages/lib/src/s3/initClient.ts, line 2](https://github.com/baptisteArno/typebot.io/blob/532c83e78cf2ad3c7b86e7db847456609e363213/packages/lib/src/s3/initClient.ts#L2)
- **[Redis](https://seerepo.com/uses/redis)**: 2 files · [packages/lib/src/redis/RedisClient.ts, line 12](https://github.com/baptisteArno/typebot.io/blob/532c83e78cf2ad3c7b86e7db847456609e363213/packages/lib/src/redis/RedisClient.ts#L12)

### Services

- **[Sentry](https://seerepo.com/uses/sentry)**: 1 file · [packages/telemetry/src/reportWorkflowFailureToSentry.ts, line 1](https://github.com/baptisteArno/typebot.io/blob/532c83e78cf2ad3c7b86e7db847456609e363213/packages/telemetry/src/reportWorkflowFailureToSentry.ts#L1)

## Support (packages/lib)

### The base

- **@orpc/server**: 1 file

### Content

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

### Validation

- **[Zod](https://seerepo.com/uses/zod)**: 2 files
- **[validator](https://seerepo.com/uses/validator)**: 1 file

### Other

- **Effect**: 3 files
- **undici**: 3 files
- **@paralleldrive/cuid2**: 1 file
- **ky**: 1 file
- **uuidv7**: 1 file

## Support (packages/logs)

### Validation

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

## Support (packages/partykit)

### Other

- **partyserver**: 1 file

## Backend (packages/prisma)

### Data

- **[Postgres](https://seerepo.com/uses/postgres)**: 2 files · [packages/prisma/src/createPrismaAdapter.ts, line 1](https://github.com/baptisteArno/typebot.io/blob/532c83e78cf2ad3c7b86e7db847456609e363213/packages/prisma/src/createPrismaAdapter.ts#L1)
- **[MySQL](https://seerepo.com/uses/mysql)**: 1 file · [packages/prisma/mysql/schema.prisma, line 6](https://github.com/baptisteArno/typebot.io/blob/532c83e78cf2ad3c7b86e7db847456609e363213/packages/prisma/mysql/schema.prisma#L6)

### Data access

- **[Prisma](https://seerepo.com/uses/prisma)**: 5 files

## Support (packages/prisma)

### Other

- **Effect**: 1 file

## Frontend (packages/results)

### The base

- **[React](https://seerepo.com/uses/react)**: 2 files · [in apps/viewer/package.json](https://github.com/baptisteArno/typebot.io/blob/532c83e78cf2ad3c7b86e7db847456609e363213/apps/viewer/package.json)

## Support (packages/results)

### Content

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

### Validation

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

### Other

- **Effect**: 4 files
- **date-fns**: 1 file
- **date-fns-tz**: 1 file

## Frontend (packages/rich-text)

### Interface

- **platejs**: 8 files

## Support (packages/rich-text)

### Content

- **@platejs/markdown**: 1 file
- **mdast**: 1 file
- **[unified](https://seerepo.com/uses/unified)**: 1 file

## Support (packages/runtime-session-store)

### Other

- **isolated-vm**: 1 file

## Support (packages/schemas)

### Validation

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

## Backend (packages/services/feature-flags)

### Services

- **[PostHog](https://seerepo.com/uses/posthog)**: 1 file · [packages/services/feature-flags/src/infrastructure/PostHogFeatureFlags.ts, line 3](https://github.com/baptisteArno/typebot.io/blob/532c83e78cf2ad3c7b86e7db847456609e363213/packages/services/feature-flags/src/infrastructure/PostHogFeatureFlags.ts#L3)

## Support (packages/services/feature-flags)

### The base

- **@orpc/server**: 1 file

### Testing

- **@effect/vitest**: 1 file

### Other

- **Effect**: 4 files

## Support (packages/settings)

### Validation

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

## Support (packages/shared-core)

### Other

- **Effect**: 2 files

## Frontend (packages/spaces)

### The base

- **[React](https://seerepo.com/uses/react)**: 1 file · [in apps/viewer/package.json](https://github.com/baptisteArno/typebot.io/blob/532c83e78cf2ad3c7b86e7db847456609e363213/apps/viewer/package.json)

## Support (packages/spaces)

### The base

- **@orpc/server**: 4 files

### Testing

- **@effect/vitest**: 1 file

### Other

- **Effect**: 10 files

## Backend (packages/telemetry)

### Services

- **[PostHog](https://seerepo.com/uses/posthog)**: 2 files · [packages/services/feature-flags/src/infrastructure/PostHogFeatureFlags.ts, line 3](https://github.com/baptisteArno/typebot.io/blob/532c83e78cf2ad3c7b86e7db847456609e363213/packages/services/feature-flags/src/infrastructure/PostHogFeatureFlags.ts#L3)
- **[Sentry](https://seerepo.com/uses/sentry)**: 1 file · [packages/telemetry/src/reportWorkflowFailureToSentry.ts, line 1](https://github.com/baptisteArno/typebot.io/blob/532c83e78cf2ad3c7b86e7db847456609e363213/packages/telemetry/src/reportWorkflowFailureToSentry.ts#L1)

## Support (packages/telemetry)

### Validation

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

### Deploy

- **[OpenTelemetry](https://seerepo.com/uses/opentelemetry)**: 4 files
- **@effect/opentelemetry**: 2 files

### Other

- **Effect**: 3 files
- **cookie**: 1 file

## Support (packages/theme)

### Validation

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

## Support (packages/typebot)

### Validation

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

### Other

- **Effect**: 3 files

## Frontend (packages/ui)

### The base

- **[Next.js](https://seerepo.com/uses/nextjs)**: [in apps/viewer/package.json](https://github.com/baptisteArno/typebot.io/blob/532c83e78cf2ad3c7b86e7db847456609e363213/apps/viewer/package.json)
- **[React](https://seerepo.com/uses/react)**: 32 files · [in apps/viewer/package.json](https://github.com/baptisteArno/typebot.io/blob/532c83e78cf2ad3c7b86e7db847456609e363213/apps/viewer/package.json)

### Styles

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

### Interface

- **[Base UI](https://seerepo.com/uses/base-ui)**: 24 files
- **[input-otp](https://seerepo.com/uses/input-otp)**: 1 file

## Support (packages/ui)

### Validation

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

### Other

- **emojilib**: 1 file
- **use-debounce**: 1 file

## Support (packages/user)

### Validation

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

### Other

- **Effect**: 2 files

## Support (packages/variables)

### Validation

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

### Other

- **isolated-vm**: 2 files

## Frontend (packages/whatsapp)

### The base

- **[Next.js](https://seerepo.com/uses/nextjs)**: 2 files · [in apps/viewer/package.json](https://github.com/baptisteArno/typebot.io/blob/532c83e78cf2ad3c7b86e7db847456609e363213/apps/viewer/package.json)

## Backend (packages/whatsapp)

### Services

- **[Sentry](https://seerepo.com/uses/sentry)**: 5 files · [packages/telemetry/src/reportWorkflowFailureToSentry.ts, line 1](https://github.com/baptisteArno/typebot.io/blob/532c83e78cf2ad3c7b86e7db847456609e363213/packages/telemetry/src/reportWorkflowFailureToSentry.ts#L1)

## Support (packages/whatsapp)

### The base

- **@orpc/server**: 10 files

### Validation

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

### Testing

- **Vitest**: 6 files

### Other

- **@paralleldrive/cuid2**: 1 file

## Support (packages/workspaces)

### Validation

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

### Other

- **Effect**: 3 files

## Other repos with a similar stack

- [supabase/supabase](https://seerepo.com/r/supabase/supabase/built): Next.js, React, Sentry, OpenAI, Stripe, Vite, PostHog, Tailwind CSS, next-themes, motion, dnd-kit, ai, papaparse, react-markdown, Zod, remark-gfm, unified, unist-util-visit, mdast, class-variance-authority, input-otp · [Compare](https://seerepo.com/compare/baptisteArno/typebot.io/vs/supabase/supabase)
- [CherryHQ/cherry-studio](https://seerepo.com/r/CherryHQ/cherry-studio/built): React, Sentry, OpenAI, Vite, TanStack, PostHog, Tailwind CSS, motion, dnd-kit, uiw, ai, Zod, opentelemetry, remark-gfm, unified, unist-util-visit, dompurify, OpenRouter, qrcode, class-variance-authority, tailwind-merge · [Compare](https://seerepo.com/compare/baptisteArno/typebot.io/vs/CherryHQ/cherry-studio)
- [calcom/cal.diy](https://seerepo.com/r/calcom/cal.diy/built): Next.js, React, Sentry, Stripe, TanStack, Redis, PostHog, Postgres, Tailwind CSS, next-themes, Base UI, Prisma, next-auth, nodemailer, Zod, node-html-parser, dompurify, marked, qrcode, class-variance-authority, tailwind-merge · [Compare](https://seerepo.com/compare/baptisteArno/typebot.io/vs/calcom/cal.diy)
- [Significant-Gravitas/AutoGPT](https://seerepo.com/r/Significant-Gravitas/AutoGPT/built): Next.js, React, Sentry, OpenAI, Stripe, Redis, PostHog, Postgres, Tailwind CSS, next-themes, motion, canvas-confetti, ai, react-markdown, Zod, rehype-autolink-headings, rehype-slug, remark-gfm, class-variance-authority, tailwind-merge · [Compare](https://seerepo.com/compare/baptisteArno/typebot.io/vs/Significant-Gravitas/AutoGPT)
- [cline/cline](https://seerepo.com/r/cline/cline/built): React, OpenAI, Vite, PostHog, Tailwind CSS, next-themes, motion, Base UI, ai, react-markdown, Zod, opentelemetry, remark-gfm, unified, unist-util-visit, dompurify, marked, @clack/prompts, class-variance-authority, tailwind-merge · [Compare](https://seerepo.com/compare/baptisteArno/typebot.io/vs/cline/cline)
- [twentyhq/twenty](https://seerepo.com/r/twentyhq/twenty/built): React, Sentry, OpenAI, Stripe, Vite, Redis, Postgres, Base UI, jsonwebtoken, ai, papaparse, nodemailer, react-markdown, Zod, opentelemetry, remark-gfm, react-email, dompurify, marked, input-otp · [Compare](https://seerepo.com/compare/baptisteArno/typebot.io/vs/twentyhq/twenty)

## Frequently asked questions

### What language is typebot.io written in?

typebot.io is written in TypeScript, with 168,431 written lines.

### What framework does typebot.io use?

typebot.io is built with Next.js, React, @orpc/server, Vite, TanStack, Solid, and solid-element.

The proof: [in apps/viewer/package.json](https://github.com/baptisteArno/typebot.io/blob/532c83e78cf2ad3c7b86e7db847456609e363213/apps/viewer/package.json)

### What database does typebot.io use?

typebot.io stores its data in MinIO and Postgres.

The proof: [packages/lib/src/s3/initClient.ts, line 2](https://github.com/baptisteArno/typebot.io/blob/532c83e78cf2ad3c7b86e7db847456609e363213/packages/lib/src/s3/initClient.ts#L2)

### What does typebot.io sign people in with?

typebot.io signs people in with next-auth, jsonwebtoken, and @auth/core.

### What does typebot.io take payments with?

typebot.io takes payments with Stripe.

The proof: [packages/billing/src/api/handleStripeWebhook.ts, line 7](https://github.com/baptisteArno/typebot.io/blob/532c83e78cf2ad3c7b86e7db847456609e363213/packages/billing/src/api/handleStripeWebhook.ts#L7)

### Does typebot.io use AI?

Yes. typebot.io uses AI through ai, OpenAI, @ai-sdk/ui-utils, @ai-sdk/deepseek, dify-ai-provider, @ai-sdk/groq, @ai-sdk/mistral, OpenRouter, and @ai-sdk/togetherai.

### What services does typebot.io use?

typebot.io measures its use with PostHog, watches its errors with Sentry, and uses GIPHY, Unsplash, Redis, and MySQL.

The proof: [packages/services/feature-flags/src/infrastructure/PostHogFeatureFlags.ts, line 3](https://github.com/baptisteArno/typebot.io/blob/532c83e78cf2ad3c7b86e7db847456609e363213/packages/services/feature-flags/src/infrastructure/PostHogFeatureFlags.ts#L3)

### Does typebot.io have tests?

Yes. typebot.io has 146 test files and is tested with @playwright/test, Prisma, Vitest, @testcontainers/postgresql, and @effect/vitest.

### Which repos have a stack like typebot.io's?

The ones that share most of its stack: supabase/supabase, CherryHQ/cherry-studio, and calcom/cal.diy.

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