Source: https://seerepo.com/r/midday-ai/midday/built
Markdown source: https://seerepo.com/r/midday-ai/midday/built.md
Description: midday is a TypeScript repo built with Hono, tRPC, React, @trpc/server, Vite, and 6 more. It stores its data in Supabase, bullmq, and Postgres.

# What is midday built with?

midday is a TypeScript repo built with Hono, tRPC, React, @trpc/server, Vite, and 6 more. It stores its data in Supabase, bullmq, and Postgres, reaches it with Drizzle, signs people in with jose, takes payments with Stripe, sends email with Resend, uses AI through ai, chat, @ai-sdk/mcp, @composio/core, OpenAI, and 5 more, watches its errors with Sentry, connects to Google, makes its content with qrcode, papaparse, react-pdf, streamdown, react-markdown, and 10 more, validates its data with Zod, next-safe-action, @hookform/resolvers, and @t3-oss/env-core, deploys with @trigger.dev/sdk and pino, and uses lru-cache, MCP, and Next.js. It has 350,070 written lines, with 101 test files.

Read on November 8, 2026, at commit 5158731.

Repository: https://github.com/midday-ai/midday

## Frontend (apps/api)

### Interface

- **Scalar**: 1 file

## Backend (apps/api)

### The base

- **[Hono](https://seerepo.com/uses/hono)**: 41 files · [in apps/api/package.json](https://github.com/midday-ai/midday/blob/51587319f26a0ffaa9dfccab1920373cb65689b7/apps/api/package.json)

### Data

- **[Supabase](https://seerepo.com/uses/supabase)**: 3 files · [apps/api/src/services/supabase.ts, line 2](https://github.com/midday-ai/midday/blob/51587319f26a0ffaa9dfccab1920373cb65689b7/apps/api/src/services/supabase.ts#L2)
- **[lru-cache](https://seerepo.com/uses/lru-cache)**: 1 file

### Sign-in

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

### AI

- **[ai](https://seerepo.com/uses/ai)**: 7 files
- **chat**: 4 files
- **@ai-sdk/mcp**: 1 file
- **@composio/core**: 1 file

### Services

- **[MCP](https://seerepo.com/uses/mcp)**: 7 files · [apps/api/src/mcp/server.ts, line 1](https://github.com/midday-ai/midday/blob/51587319f26a0ffaa9dfccab1920373cb65689b7/apps/api/src/mcp/server.ts#L1)
- **[OpenAI](https://seerepo.com/uses/openai)**: 4 files · [packages/insights/src/content/generator.ts, line 1](https://github.com/midday-ai/midday/blob/51587319f26a0ffaa9dfccab1920373cb65689b7/packages/insights/src/content/generator.ts#L1)
- **[Sentry](https://seerepo.com/uses/sentry)**: 3 files · [apps/dashboard/sentry.edge.config.ts, line 6](https://github.com/midday-ai/midday/blob/51587319f26a0ffaa9dfccab1920373cb65689b7/apps/dashboard/sentry.edge.config.ts#L6)
- **[Stripe](https://seerepo.com/uses/stripe)**: 3 files · [apps/api/src/rest/routers/invoice-payments.ts, line 15](https://github.com/midday-ai/midday/blob/51587319f26a0ffaa9dfccab1920373cb65689b7/apps/api/src/rest/routers/invoice-payments.ts#L15)
- **[Anthropic](https://seerepo.com/uses/anthropic)**: 1 file · [apps/api/src/trpc/routers/transactions.ts, line 1](https://github.com/midday-ai/midday/blob/51587319f26a0ffaa9dfccab1920373cb65689b7/apps/api/src/trpc/routers/transactions.ts#L1)
- **[Resend](https://seerepo.com/uses/resend)**: 1 file · [apps/api/src/services/resend.ts, line 1](https://github.com/midday-ai/midday/blob/51587319f26a0ffaa9dfccab1920373cb65689b7/apps/api/src/services/resend.ts#L1)

## Support (apps/api)

### The base

- **[tRPC](https://seerepo.com/uses/trpc)**: 21 files

### Validation

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

### Deploy

- **@trigger.dev/sdk**: 7 files

### Other

- **date-fns**: 6 files
- **hono-rate-limiter**: 4 files
- **uuid**: 3 files
- **@polar-sh/sdk**: 2 files
- **nanoid**: 2 files
- **@chat-adapter/slack**: 1 file
- **@hono/trpc-server**: 1 file
- **@sindresorhus/slugify**: 1 file
- **chat-adapter-sendblue**: 1 file
- **superjson**: 1 file

## Frontend (apps/dashboard)

### The base

- **[React](https://seerepo.com/uses/react)**: 309 files · [in apps/desktop/package.json](https://github.com/midday-ai/midday/blob/51587319f26a0ffaa9dfccab1920373cb65689b7/apps/desktop/package.json)
- **@trpc/server**: 1 file

### Styles

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

### Interface

- **[tanstack](https://seerepo.com/uses/tanstack)**: 48 files
- **[Framer](https://seerepo.com/uses/framer)**: 44 files
- **[React Hook Form](https://seerepo.com/uses/react-hook-form)**: 42 files
- **[usehooks-ts](https://seerepo.com/uses/usehooks-ts)**: 28 files
- **[react-hotkeys-hook](https://seerepo.com/uses/react-hotkeys-hook)**: 16 files
- **[dnd-kit](https://seerepo.com/uses/dnd-kit)**: 12 files
- **@number-flow/react**: 9 files
- **[recharts](https://seerepo.com/uses/recharts)**: 9 files
- **[react-day-picker](https://seerepo.com/uses/react-day-picker)**: 6 files
- **[react-dropzone](https://seerepo.com/uses/react-dropzone)**: 6 files
- **[tiptap](https://seerepo.com/uses/tiptap)**: 3 files
- **react-number-format**: 2 files
- **react-zoom-pan-pinch**: 2 files
- **@react-google-maps/api**: 1 file
- **lottie-react**: 1 file
- **[react-colorful](https://seerepo.com/uses/react-colorful)**: 1 file
- **[react-intersection-observer](https://seerepo.com/uses/react-intersection-observer)**: 1 file
- **[tippy.js](https://seerepo.com/uses/tippyjs)**: 1 file
- **[use-stick-to-bottom](https://seerepo.com/uses/use-stick-to-bottom)**: 1 file

### Icons

- **[Lucide](https://seerepo.com/uses/lucide)**: 36 files
- **[Radix UI](https://seerepo.com/uses/radix-ui)**: 8 files
- **[react-icons](https://seerepo.com/uses/react-icons)**: 2 files

## Backend (apps/dashboard)

### Data

- **[Supabase](https://seerepo.com/uses/supabase)**: 3 files · [apps/api/src/services/supabase.ts, line 2](https://github.com/midday-ai/midday/blob/51587319f26a0ffaa9dfccab1920373cb65689b7/apps/api/src/services/supabase.ts#L2)

### AI

- **[ai](https://seerepo.com/uses/ai)**: 7 files
- **[@ai-sdk/react](https://seerepo.com/uses/ai-sdk-react)**: 2 files

### Services

- **[Next.js](https://seerepo.com/uses/nextjs)**: 37 files · [packages/events/src/client.tsx, line 5](https://github.com/midday-ai/midday/blob/51587319f26a0ffaa9dfccab1920373cb65689b7/packages/events/src/client.tsx#L5)
- **[Sentry](https://seerepo.com/uses/sentry)**: 9 files · [apps/dashboard/sentry.edge.config.ts, line 6](https://github.com/midday-ai/midday/blob/51587319f26a0ffaa9dfccab1920373cb65689b7/apps/dashboard/sentry.edge.config.ts#L6)
- **[OpenAI](https://seerepo.com/uses/openai)**: 1 file · [packages/insights/src/content/generator.ts, line 1](https://github.com/midday-ai/midday/blob/51587319f26a0ffaa9dfccab1920373cb65689b7/packages/insights/src/content/generator.ts#L1)
- **[Stripe](https://seerepo.com/uses/stripe)**: 1 file · [apps/api/src/rest/routers/invoice-payments.ts, line 15](https://github.com/midday-ai/midday/blob/51587319f26a0ffaa9dfccab1920373cb65689b7/apps/api/src/rest/routers/invoice-payments.ts#L15)

## Support (apps/dashboard)

### Content

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

### Validation

- **[Zod](https://seerepo.com/uses/zod)**: 40 files
- **next-safe-action**: 9 files
- **[@hookform/resolvers](https://seerepo.com/uses/hookform-resolvers)**: 4 files

### Deploy

- **@trigger.dev/sdk**: 3 files

### Other

- **TanStack**: 203 files
- **date-fns**: 77 files
- **nuqs**: 49 files
- **zustand**: 14 files
- **nanoid**: 5 files
- **superjson**: 3 files
- **@team-plain/typescript-sdk**: 2 files
- **[tRPC](https://seerepo.com/uses/trpc)**: 2 files
- **change-case**: 1 file
- **file-saver**: 1 file
- **little-date**: 1 file
- **server-only**: 1 file
- **tus-js-client**: 1 file

## Frontend (apps/desktop)

### The base

- **[Vite](https://seerepo.com/uses/vite)**: [in apps/desktop/package.json](https://github.com/midday-ai/midday/blob/51587319f26a0ffaa9dfccab1920373cb65689b7/apps/desktop/package.json)
- **[React](https://seerepo.com/uses/react)**: 1 file · [in apps/desktop/package.json](https://github.com/midday-ai/midday/blob/51587319f26a0ffaa9dfccab1920373cb65689b7/apps/desktop/package.json)
- **[Tauri](https://seerepo.com/uses/tauri)**: 1 file

### Interface

- **[tauri-plugin-dialog](https://seerepo.com/uses/tauri-plugin-dialog)**: 1 file

## Backend (apps/desktop)

### The base

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

## Support (apps/desktop)

### Content

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

### Other

- **serde**
- **serde_json**: 1 file
- **tauri-plugin-deep-link**: 1 file
- **tauri-plugin-fs**: 1 file
- **tauri-plugin-global-shortcut**: 1 file
- **tauri-plugin-opener**: 1 file
- **tauri-plugin-process**: 1 file
- **tauri-plugin-updater**: 1 file
- **tauri-plugin-upload**: 1 file

## Backend (apps/worker)

### The base

- **[Hono](https://seerepo.com/uses/hono)**: 1 file · [in apps/api/package.json](https://github.com/midday-ai/midday/blob/51587319f26a0ffaa9dfccab1920373cb65689b7/apps/api/package.json)

### Data

- **[bullmq](https://seerepo.com/uses/bullmq)**: 56 files

### AI

- **[ai](https://seerepo.com/uses/ai)**: 2 files
- **@ai-sdk/google**: 1 file

### Services

- **[Sentry](https://seerepo.com/uses/sentry)**: 3 files · [apps/dashboard/sentry.edge.config.ts, line 6](https://github.com/midday-ai/midday/blob/51587319f26a0ffaa9dfccab1920373cb65689b7/apps/dashboard/sentry.edge.config.ts#L6)
- **[OpenAI](https://seerepo.com/uses/openai)**: 1 file · [packages/insights/src/content/generator.ts, line 1](https://github.com/midday-ai/midday/blob/51587319f26a0ffaa9dfccab1920373cb65689b7/packages/insights/src/content/generator.ts#L1)
- **[Resend](https://seerepo.com/uses/resend)**: 1 file · [apps/api/src/services/resend.ts, line 1](https://github.com/midday-ai/midday/blob/51587319f26a0ffaa9dfccab1920373cb65689b7/apps/api/src/services/resend.ts#L1)

## Support (apps/worker)

### Content

- **@fast-csv/format**: 2 files
- **heic-convert**: 1 file
- **node-xlsx**: 1 file
- **[papaparse](https://seerepo.com/uses/papaparse)**: 1 file
- **[sharp](https://seerepo.com/uses/sharp)**: 1 file

### Validation

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

### Other

- **date-fns**: 6 files
- **archiver**: 2 files
- **@sindresorhus/slugify**: 1 file
- **uuid**: 1 file

## Support (packages/accounting)

### Validation

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

### Other

- **date-fns**: 3 files

## Backend (packages/app-store)

### Data

- **[Supabase](https://seerepo.com/uses/supabase)**: 1 file · [apps/api/src/services/supabase.ts, line 2](https://github.com/midday-ai/midday/blob/51587319f26a0ffaa9dfccab1920373cb65689b7/apps/api/src/services/supabase.ts#L2)

## Support (packages/app-store)

### The base

- **@slack/bolt**: 2 files

### Validation

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

### Other

- **@slack/web-api**: 3 files
- **date-fns**: 1 file

## Backend (packages/banking)

### Sign-in

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

## Support (packages/banking)

### Validation

- **@t3-oss/env-core**: 1 file
- **[Zod](https://seerepo.com/uses/zod)**: 1 file

### Other

- **change-case**: 4 files
- **date-fns**: 4 files
- **Axios**: 2 files

## Backend (packages/bot)

### AI

- **chat**: 1 file

## Support (packages/bot)

### Other

- **chat-adapter**: 1 file
- **chat-adapter-sendblue**: 1 file
- **date-fns**: 1 file
- **nanoid**: 1 file

## Backend (packages/categories)

### AI

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

## Support (packages/categories)

### Validation

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

## Frontend (packages/cli)

### Interface

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

## Support (packages/cli)

### Content

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

### Tools

- **commander**: 15 files
- **cli-table3**: 1 file

### Other

- **chalk**: 13 files
- **open**: 1 file

## Backend (packages/db)

### Data

- **[Postgres](https://seerepo.com/uses/postgres)**: 4 files · [packages/db/src/client.ts, line 6](https://github.com/midday-ai/midday/blob/51587319f26a0ffaa9dfccab1920373cb65689b7/packages/db/src/client.ts#L6)

### Data access

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

## Support (packages/db)

### Tools

- **drizzle-kit**: 1 file

### Other

- **date-fns**: 10 files
- **nanoid**: 8 files
- **@sindresorhus/slugify**: 1 file
- **camelcase-keys**: 1 file
- **uuid**: 1 file

## Frontend (packages/desktop-client)

### Styles

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

## Support (packages/desktop-client)

### The base

- **[@tauri-apps/api](https://seerepo.com/uses/tauri-apps-api)**: 2 files

### Other

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

## Backend (packages/documents)

### AI

- **[ai](https://seerepo.com/uses/ai)**: 5 files
- **[ai-sdk](https://seerepo.com/uses/ai-sdk)**: 5 files
- **[LangChain](https://seerepo.com/uses/langchain)**: 1 file

## Support (packages/documents)

### Content

- **officeparser**: 1 file
- **unpdf**: 1 file

### Validation

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

### Other

- **date-fns**: 2 files

## Frontend (packages/email)

### The base

- **[React](https://seerepo.com/uses/react)**: 2 files · [in apps/desktop/package.json](https://github.com/midday-ai/midday/blob/51587319f26a0ffaa9dfccab1920373cb65689b7/apps/desktop/package.json)

## Support (packages/email)

### Content

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

### Other

- **date-fns**: 5 files

## Backend (packages/encryption)

### Sign-in

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

## Backend (packages/events)

### Services

- **[Next.js](https://seerepo.com/uses/nextjs)**: 2 files · [packages/events/src/client.tsx, line 5](https://github.com/midday-ai/midday/blob/51587319f26a0ffaa9dfccab1920373cb65689b7/packages/events/src/client.tsx#L5)

## Support (packages/import)

### Validation

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

### Other

- **change-case**: 1 file
- **chrono-node**: 1 file
- **date-fns**: 1 file

## Backend (packages/inbox)

### Services

- **[Google](https://seerepo.com/uses/google)**: 1 file · [packages/inbox/src/providers/gmail.ts, line 6](https://github.com/midday-ai/midday/blob/51587319f26a0ffaa9dfccab1920373cb65689b7/packages/inbox/src/providers/gmail.ts#L6)

## Support (packages/inbox)

### Validation

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

### Other

- **@microsoft/microsoft-graph-client**: 1 file

## Backend (packages/insights)

### AI

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

### Services

- **[OpenAI](https://seerepo.com/uses/openai)**: 1 file · [packages/insights/src/content/generator.ts, line 1](https://github.com/midday-ai/midday/blob/51587319f26a0ffaa9dfccab1920373cb65689b7/packages/insights/src/content/generator.ts#L1)

## Support (packages/insights)

### Validation

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

### Other

- **date-fns**: 1 file

## Frontend (packages/invoice)

### Interface

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

## Backend (packages/invoice)

### Sign-in

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

## Support (packages/invoice)

### Content

- **@react-pdf/renderer**: 12 files
- **[qrcode](https://seerepo.com/uses/qrcode)**: 1 file

### Other

- **date-fns**: 5 files

## Backend (packages/job-client)

### Data

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

## Backend (packages/jobs)

### Data access

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

### AI

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

### Services

- **[Resend](https://seerepo.com/uses/resend)**: 1 file · [apps/api/src/services/resend.ts, line 1](https://github.com/midday-ai/midday/blob/51587319f26a0ffaa9dfccab1920373cb65689b7/apps/api/src/services/resend.ts#L1)

## Support (packages/jobs)

### Content

- **heic-convert**: 1 file
- **[sharp](https://seerepo.com/uses/sharp)**: 1 file

### Validation

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

### Deploy

- **@trigger.dev/sdk**: 35 files

### Other

- **date-fns**: 3 files
- **@sindresorhus/slugify**: 1 file
- **nanoid**: 1 file

## Frontend (packages/location)

### The base

- **[Next.js](https://seerepo.com/uses/nextjs)**: 1 file · [in apps/dashboard/package.json](https://github.com/midday-ai/midday/blob/51587319f26a0ffaa9dfccab1920373cb65689b7/apps/dashboard/package.json)

## Support (packages/logger)

### Deploy

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

## Frontend (packages/mcp-apps)

### The base

- **[Vite](https://seerepo.com/uses/vite)**: [in apps/desktop/package.json](https://github.com/midday-ai/midday/blob/51587319f26a0ffaa9dfccab1920373cb65689b7/apps/desktop/package.json)
- **[React](https://seerepo.com/uses/react)**: 4 files · [in apps/desktop/package.json](https://github.com/midday-ai/midday/blob/51587319f26a0ffaa9dfccab1920373cb65689b7/apps/desktop/package.json)

### Styles

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

## Backend (packages/mcp-apps)

### Services

- **[MCP](https://seerepo.com/uses/mcp)**: 1 file · [apps/api/src/mcp/server.ts, line 1](https://github.com/midday-ai/midday/blob/51587319f26a0ffaa9dfccab1920373cb65689b7/apps/api/src/mcp/server.ts#L1)

## Support (packages/mcp-apps)

### Other

- **date-fns**: 1 file

## Backend (packages/notifications)

### Services

- **[Resend](https://seerepo.com/uses/resend)**: 1 file · [apps/api/src/services/resend.ts, line 1](https://github.com/midday-ai/midday/blob/51587319f26a0ffaa9dfccab1920373cb65689b7/apps/api/src/services/resend.ts#L1)

## Support (packages/notifications)

### Validation

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

### Other

- **nanoid**: 1 file

## Frontend (packages/supabase)

### The base

- **[Next.js](https://seerepo.com/uses/nextjs)**: 2 files · [in apps/dashboard/package.json](https://github.com/midday-ai/midday/blob/51587319f26a0ffaa9dfccab1920373cb65689b7/apps/dashboard/package.json)
- **[React](https://seerepo.com/uses/react)**: 1 file · [in apps/desktop/package.json](https://github.com/midday-ai/midday/blob/51587319f26a0ffaa9dfccab1920373cb65689b7/apps/desktop/package.json)

## Backend (packages/supabase)

### Data

- **[Supabase](https://seerepo.com/uses/supabase)**: 4 files · [apps/api/src/services/supabase.ts, line 2](https://github.com/midday-ai/midday/blob/51587319f26a0ffaa9dfccab1920373cb65689b7/apps/api/src/services/supabase.ts#L2)

## Support (packages/supabase)

### Other

- **date-fns**: 1 file
- **server-only**: 1 file

## Support (packages/trpc)

### Other

- **superjson**: 1 file
- **[tRPC](https://seerepo.com/uses/trpc)**: 1 file

## Frontend (packages/ui)

### The base

- **[React](https://seerepo.com/uses/react)**: 75 files · [in apps/desktop/package.json](https://github.com/midday-ai/midday/blob/51587319f26a0ffaa9dfccab1920373cb65689b7/apps/desktop/package.json)
- **[Next.js](https://seerepo.com/uses/nextjs)**: 7 files · [in apps/dashboard/package.json](https://github.com/midday-ai/midday/blob/51587319f26a0ffaa9dfccab1920373cb65689b7/apps/dashboard/package.json)

### Styles

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

### Interface

- **[Radix UI](https://seerepo.com/uses/radix-ui)**: 26 files
- **[Framer](https://seerepo.com/uses/framer)**: 21 files
- **[tiptap](https://seerepo.com/uses/tiptap)**: 7 files
- **[cmdk](https://seerepo.com/uses/cmdk)**: 4 files
- **[react-day-picker](https://seerepo.com/uses/react-day-picker)**: 2 files
- **[embla-carousel-react](https://seerepo.com/uses/embla-carousel-react)**: 1 file
- **[input-otp](https://seerepo.com/uses/input-otp)**: 1 file
- **[React Hook Form](https://seerepo.com/uses/react-hook-form)**: 1 file
- **react-number-format**: 1 file
- **[recharts](https://seerepo.com/uses/recharts)**: 1 file
- **[tippy.js](https://seerepo.com/uses/tippyjs)**: 1 file
- **[vaul](https://seerepo.com/uses/vaul)**: 1 file

### Icons

- **[react-icons](https://seerepo.com/uses/react-icons)**: 15 files
- **[Lucide](https://seerepo.com/uses/lucide)**: 8 files
- **[@radix-ui/react-icons](https://seerepo.com/uses/radix-ui-react-icons)**: 7 files

## Support (packages/ui)

### Other

- **clsx**: 1 file
- **date-fns**: 1 file

## Support (packages/utils)

### Other

- **date-fns**: 2 files

## Frontend (packages/workbench)

### The base

- **[Vite](https://seerepo.com/uses/vite)**: [in apps/desktop/package.json](https://github.com/midday-ai/midday/blob/51587319f26a0ffaa9dfccab1920373cb65689b7/apps/desktop/package.json)
- **[React](https://seerepo.com/uses/react)**: 36 files · [in apps/desktop/package.json](https://github.com/midday-ai/midday/blob/51587319f26a0ffaa9dfccab1920373cb65689b7/apps/desktop/package.json)
- **TanStack**: 6 files

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

- **[Radix UI](https://seerepo.com/uses/radix-ui)**: 14 files
- **[xyflow](https://seerepo.com/uses/xyflow)**: 2 files
- **[cmdk](https://seerepo.com/uses/cmdk)**: 1 file
- **dagre**: 1 file
- **[Framer](https://seerepo.com/uses/framer)**: 1 file
- **[recharts](https://seerepo.com/uses/recharts)**: 1 file

### Icons

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

## Backend (packages/workbench)

### The base

- **[Hono](https://seerepo.com/uses/hono)**: 2 files · [in apps/api/package.json](https://github.com/midday-ai/midday/blob/51587319f26a0ffaa9dfccab1920373cb65689b7/apps/api/package.json)

### Data

- **[bullmq](https://seerepo.com/uses/bullmq)**: 4 files
- **[lru-cache](https://seerepo.com/uses/lru-cache)**: 1 file

## Support (packages/workbench)

### Validation

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

### Other

- **@tanstack/react-query**: 5 files
- **clsx**: 1 file

## Other repos with a similar stack

- [supabase/supabase](https://seerepo.com/r/supabase/supabase/built): Supabase, MCP, OpenAI, Sentry, Stripe, React, Next.js, Vite, ai, Zod, next-themes, React Hook Form, dnd-kit, @number-flow/react, recharts, react-day-picker, react-dropzone, use-stick-to-bottom, Lucide, Radix UI, @ai-sdk/react, papaparse, streamdown, react-markdown, @hookform/resolvers, Tailwind CSS, @react-pdf/renderer, class-variance-authority, cmdk, input-otp, vaul, xyflow · [Compare](https://seerepo.com/compare/midday-ai/midday/vs/supabase/supabase)
- [CherryHQ/cherry-studio](https://seerepo.com/r/CherryHQ/cherry-studio/built): lru-cache, MCP, OpenAI, Sentry, Anthropic, React, Vite, TanStack, ai, Zod, React Hook Form, react-hotkeys-hook, dnd-kit, react-day-picker, react-dropzone, tiptap, Lucide, Radix UI, qrcode, streamdown, @hookform/resolvers, sharp, Drizzle, Tailwind CSS, ai-sdk, officeparser, class-variance-authority, tailwind-merge, cmdk, vaul, xyflow · [Compare](https://seerepo.com/compare/CherryHQ/cherry-studio/vs/midday-ai/midday)
- [twentyhq/twenty](https://seerepo.com/r/twentyhq/twenty/built): MCP, OpenAI, Sentry, Stripe, Anthropic, React, Vite, bullmq, Postgres, Google, Scalar, jose, ai, Zod, Framer, React Hook Form, react-hotkeys-hook, react-dropzone, tiptap, react-intersection-observer, papaparse, react-markdown, @hookform/resolvers, sharp, ai-sdk, react-email, @react-pdf/renderer, input-otp, xyflow · [Compare](https://seerepo.com/compare/midday-ai/midday/vs/twentyhq/twenty)
- [Significant-Gravitas/AutoGPT](https://seerepo.com/r/Significant-Gravitas/AutoGPT/built): OpenAI, Sentry, Stripe, Anthropic, React, Next.js, Postgres, Google, jose, ai, Zod, next-themes, Framer, React Hook Form, recharts, react-day-picker, use-stick-to-bottom, Radix UI, @ai-sdk/react, streamdown, react-markdown, @hookform/resolvers, Tailwind CSS, class-variance-authority, tailwind-merge, cmdk, embla-carousel-react, vaul · [Compare](https://seerepo.com/compare/midday-ai/midday/vs/Significant-Gravitas/AutoGPT)
- [TryGhost/Ghost](https://seerepo.com/r/TryGhost/Ghost/built): Hono, lru-cache, Sentry, Stripe, React, Vite, bullmq, jose, Zod, React Hook Form, dnd-kit, @number-flow/react, recharts, react-day-picker, react-dropzone, tiptap, react-colorful, Lucide, Radix UI, papaparse, @hookform/resolvers, sharp, Tailwind CSS, class-variance-authority, tailwind-merge, cmdk, xyflow · [Compare](https://seerepo.com/compare/midday-ai/midday/vs/TryGhost/Ghost)
- [calcom/cal.diy](https://seerepo.com/r/calcom/cal.diy/built): lru-cache, Sentry, Stripe, tRPC, React, @trpc/server, Next.js, Postgres, Google, TanStack, jose, Zod, next-themes, Framer, React Hook Form, react-day-picker, react-colorful, Lucide, Radix UI, qrcode, @hookform/resolvers, sharp, Tailwind CSS, class-variance-authority, tailwind-merge, cmdk · [Compare](https://seerepo.com/compare/calcom/cal.diy/vs/midday-ai/midday)

## Frequently asked questions

### What language is midday written in?

midday is written in TypeScript, with 350,070 written lines.

### What framework does midday use?

midday is built with Hono, tRPC, React, @trpc/server, Vite, Tauri, Tokio, @slack/bolt, @tauri-apps/api, Next.js, and TanStack.

The proof: [in apps/api/package.json](https://github.com/midday-ai/midday/blob/51587319f26a0ffaa9dfccab1920373cb65689b7/apps/api/package.json)

### What database does midday use?

midday stores its data in Supabase, bullmq, and Postgres and reaches it with Drizzle.

The proof: [apps/api/src/services/supabase.ts, line 2](https://github.com/midday-ai/midday/blob/51587319f26a0ffaa9dfccab1920373cb65689b7/apps/api/src/services/supabase.ts#L2)

### What does midday sign people in with?

midday signs people in with jose.

### What does midday take payments with?

midday takes payments with Stripe.

The proof: [apps/api/src/rest/routers/invoice-payments.ts, line 15](https://github.com/midday-ai/midday/blob/51587319f26a0ffaa9dfccab1920373cb65689b7/apps/api/src/rest/routers/invoice-payments.ts#L15)

### Does midday use AI?

Yes. midday uses AI through ai, chat, @ai-sdk/mcp, @composio/core, OpenAI, Anthropic, @ai-sdk/react, @ai-sdk/google, ai-sdk, and LangChain.

### What services does midday use?

midday sends email with Resend, watches its errors with Sentry, connects to Google, and uses lru-cache, MCP, and Next.js.

The proof: [apps/api/src/services/resend.ts, line 1](https://github.com/midday-ai/midday/blob/51587319f26a0ffaa9dfccab1920373cb65689b7/apps/api/src/services/resend.ts#L1)

### Does midday have tests?

Yes. midday has 101 test files.

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

The ones that share most of its stack: supabase/supabase, CherryHQ/cherry-studio, and twentyhq/twenty.

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