Source: https://seerepo.com/r/OpenWhispr/openwhispr/built
Markdown source: https://seerepo.com/r/OpenWhispr/openwhispr/built.md
Description: openwhispr is a TypeScript repo built with React, Vite, Electron, react-native, Expo, and 1 more. It stores its data in SQLite and reaches it with Drizzle.

# What is openwhispr built with?

openwhispr is a TypeScript repo built with React, Vite, Electron, react-native, Expo, and 1 more. It stores its data in SQLite, reaches it with Drizzle, signs people in with @aws-sdk/credential-providers, Better Auth, expo-auth-session, and expo-apple-authentication, uses AI through ai, ai-sdk, onnxruntime-node, tinfoil, @aws-sdk/client-bedrock, and 2 more, watches its errors with Sentry, makes its content with js-yaml, react-markdown, remark-gfm, and expo-document-picker, validates its data with Zod, is tested with happy-dom and @testing-library/react-native, and uses Qdrant, expo-secure-store, expo-sqlite, and @react-native-async-storage/async-storage. It has 801,420 written lines, with 1,548 test files.

Read on November 12, 2026, at commit 377ec98.

Repository: https://github.com/OpenWhispr/openwhispr

## Frontend (/)

### The base

- **[React](https://seerepo.com/uses/react)**: 523 files · [in package.json](https://github.com/OpenWhispr/openwhispr/blob/377ec98dace2399b5992384089e8669341c172ae/package.json)
- **[Vite](https://seerepo.com/uses/vite)**: 5 files · [in package.json](https://github.com/OpenWhispr/openwhispr/blob/377ec98dace2399b5992384089e8669341c172ae/package.json)

### Styles

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

### Interface

- **[Radix UI](https://seerepo.com/uses/radix-ui)**: 14 files
- **[tiptap](https://seerepo.com/uses/tiptap)**: 10 files
- **[TanStack](https://seerepo.com/uses/tanstack)**: 5 files
- **[canvas-confetti](https://seerepo.com/uses/canvas-confetti)**: 1 file
- **[tiptap-markdown](https://seerepo.com/uses/tiptap-markdown)**: 1 file

## Backend (/)

### Data

- **[SQLite](https://seerepo.com/uses/sqlite)**: 2 files · [src/helpers/database.js, line 1](https://github.com/OpenWhispr/openwhispr/blob/377ec98dace2399b5992384089e8669341c172ae/src/helpers/database.js#L1)
- **[Qdrant](https://seerepo.com/uses/qdrant)**: 1 file · [src/helpers/vectorIndex.js, line 1](https://github.com/OpenWhispr/openwhispr/blob/377ec98dace2399b5992384089e8669341c172ae/src/helpers/vectorIndex.js#L1)

### Sign-in

- **[@aws-sdk/credential-providers](https://seerepo.com/uses/aws-sdk-credential-providers)**: 3 files
- **[Better Auth](https://seerepo.com/uses/better-auth)**: 1 file

### AI

- **[ai](https://seerepo.com/uses/ai)**: 5 files
- **[ai-sdk](https://seerepo.com/uses/ai-sdk)**: 3 files
- **onnxruntime-node**: 2 files
- **tinfoil**: 2 files
- **@aws-sdk/client-bedrock**: 1 file

### Services

- **[Anthropic](https://seerepo.com/uses/anthropic)**: 1 file · [src/services/ai/providers.ts, line 3](https://github.com/OpenWhispr/openwhispr/blob/377ec98dace2399b5992384089e8669341c172ae/src/services/ai/providers.ts#L3)
- **[OpenAI](https://seerepo.com/uses/openai)**: 1 file · [src/services/ai/providers.ts, line 1](https://github.com/OpenWhispr/openwhispr/blob/377ec98dace2399b5992384089e8669341c172ae/src/services/ai/providers.ts#L1)

## Support (/)

### The base

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

### Content

- **[js-yaml](https://seerepo.com/uses/js-yaml)**: 1 file
- **[react-markdown](https://seerepo.com/uses/react-markdown)**: 1 file
- **[remark-gfm](https://seerepo.com/uses/remark-gfm)**: 1 file

### Validation

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

### Testing

- **happy-dom**: 17 files

### Tools

- **TypeScript**: 13 files
- **espree**: 1 file

### Other

- **react-i18next**: 286 files
- **zustand**: 47 files
- **i18next**: 20 files
- **ws**: 9 files
- **@homebridge/dbus-native**: 5 files
- **ffmpeg-static**: 3 files
- **tar**: 3 files
- **.ENV**: 2 files
- **unzipper**: 2 files
- **@napi-rs/keyring**: 1 file
- **agent-base**: 1 file
- **clsx**: 1 file
- **electron-updater**: 1 file
- **https-proxy-agent**: 1 file
- **opencc-js**: 1 file
- **ps-list**: 1 file

## Frontend (openwhispr-mobile)

### The base

- **[react-native](https://seerepo.com/uses/react-native)**: 190 files
- **[React](https://seerepo.com/uses/react)**: 156 files · [in package.json](https://github.com/OpenWhispr/openwhispr/blob/377ec98dace2399b5992384089e8669341c172ae/package.json)
- **[Expo](https://seerepo.com/uses/expo)**: 64 files · [in openwhispr-mobile/package.json](https://github.com/OpenWhispr/openwhispr/blob/377ec98dace2399b5992384089e8669341c172ae/openwhispr-mobile/package.json)
- **[react-navigation](https://seerepo.com/uses/react-navigation)**: 5 files

### Styles

- **[Tailwind CSS](https://seerepo.com/uses/tailwind-css)**
- **expo-font**: 2 files
- **@expo-google-fonts/space-grotesk**: 1 file
- **[class-variance-authority](https://seerepo.com/uses/class-variance-authority)**: 1 file
- **nativewind**: 1 file
- **[tailwind-merge](https://seerepo.com/uses/tailwind-merge)**: 1 file

### Interface

- **[react-native-safe-area-context](https://seerepo.com/uses/react-native-safe-area-context)**: 23 files
- **[react-native-reanimated](https://seerepo.com/uses/react-native-reanimated)**: 19 files
- **expo-linear-gradient**: 8 files
- **[react-native-gesture-handler](https://seerepo.com/uses/react-native-gesture-handler)**: 6 files
- **@react-native-menu/menu**: 4 files
- **[expo-status-bar](https://seerepo.com/uses/expo-status-bar)**: 3 files
- **[react-native-svg](https://seerepo.com/uses/react-native-svg)**: 3 files
- **expo-glass-effect**: 2 files
- **[expo-image](https://seerepo.com/uses/expo-image)**: 2 files
- **[expo-splash-screen](https://seerepo.com/uses/expo-splash-screen)**: 2 files
- **expo-blur**: 1 file

### Icons

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

## Backend (openwhispr-mobile)

### Data

- **[expo-secure-store](https://seerepo.com/uses/expo-secure-store)**: 7 files
- **expo-sqlite**: 7 files
- **[@react-native-async-storage/async-storage](https://seerepo.com/uses/react-native-async-storage-async-storage)**: 3 files

### Data access

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

### Sign-in

- **expo-auth-session**: 2 files
- **[Better Auth](https://seerepo.com/uses/better-auth)**: 1 file
- **expo-apple-authentication**: 1 file

### Services

- **[Sentry](https://seerepo.com/uses/sentry)**: 11 files · [openwhispr-mobile/src/lib/sentry.ts, line 1](https://github.com/OpenWhispr/openwhispr/blob/377ec98dace2399b5992384089e8669341c172ae/openwhispr-mobile/src/lib/sentry.ts#L1)

## Support (openwhispr-mobile)

### Content

- **[expo-document-picker](https://seerepo.com/uses/expo-document-picker)**: 1 file

### Validation

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

### Testing

- **@testing-library/react-native**: 104 files

### Tools

- **CocoaPods**

### Other

- **zustand**: 20 files
- **expo-application**: 17 files
- **expo-file-system**: 15 files
- **expo-clipboard**: 7 files
- **buffer**: 6 files
- **expo-crypto**: 3 files
- **react-native-purchases**: 3 files
- **expo-web-browser**: 2 files
- **clsx**: 1 file
- **expo-haptics**: 1 file
- **expo-tracking-transparency**: 1 file

## Frontend (openwhispr-mobile/modules/app-group-storage)

### The base

- **[Expo](https://seerepo.com/uses/expo)**: 1 file · [in openwhispr-mobile/package.json](https://github.com/OpenWhispr/openwhispr/blob/377ec98dace2399b5992384089e8669341c172ae/openwhispr-mobile/package.json)

## Support (openwhispr-mobile/modules/app-group-storage)

### The base

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

## Frontend (openwhispr-mobile/modules/apple-llm)

### The base

- **[Expo](https://seerepo.com/uses/expo)**: 1 file · [in openwhispr-mobile/package.json](https://github.com/OpenWhispr/openwhispr/blob/377ec98dace2399b5992384089e8669341c172ae/openwhispr-mobile/package.json)

## Support (openwhispr-mobile/modules/apple-llm)

### The base

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

## Frontend (openwhispr-mobile/modules/audio-tools)

### The base

- **[Expo](https://seerepo.com/uses/expo)**: 1 file · [in openwhispr-mobile/package.json](https://github.com/OpenWhispr/openwhispr/blob/377ec98dace2399b5992384089e8669341c172ae/openwhispr-mobile/package.json)

## Support (openwhispr-mobile/modules/audio-tools)

### The base

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

## Frontend (openwhispr-mobile/modules/background-uploader)

### The base

- **[Expo](https://seerepo.com/uses/expo)**: 2 files · [in openwhispr-mobile/package.json](https://github.com/OpenWhispr/openwhispr/blob/377ec98dace2399b5992384089e8669341c172ae/openwhispr-mobile/package.json)

## Support (openwhispr-mobile/modules/background-uploader)

### The base

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

## Frontend (openwhispr-mobile/modules/creator-link-input)

### The base

- **[Expo](https://seerepo.com/uses/expo)**: 1 file · [in openwhispr-mobile/package.json](https://github.com/OpenWhispr/openwhispr/blob/377ec98dace2399b5992384089e8669341c172ae/openwhispr-mobile/package.json)
- **[React](https://seerepo.com/uses/react)**: 1 file · [in package.json](https://github.com/OpenWhispr/openwhispr/blob/377ec98dace2399b5992384089e8669341c172ae/package.json)
- **[react-native](https://seerepo.com/uses/react-native)**: 1 file

## Support (openwhispr-mobile/modules/creator-link-input)

### Testing

- **@testing-library/react-native**: 2 files

## Frontend (openwhispr-mobile/modules/live-activity)

### The base

- **[Expo](https://seerepo.com/uses/expo)**: 1 file · [in openwhispr-mobile/package.json](https://github.com/OpenWhispr/openwhispr/blob/377ec98dace2399b5992384089e8669341c172ae/openwhispr-mobile/package.json)

## Support (openwhispr-mobile/modules/live-activity)

### The base

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

## Frontend (openwhispr-mobile/modules/live-pcm-streaming)

### The base

- **[Expo](https://seerepo.com/uses/expo)**: 1 file · [in openwhispr-mobile/package.json](https://github.com/OpenWhispr/openwhispr/blob/377ec98dace2399b5992384089e8669341c172ae/openwhispr-mobile/package.json)

## Support (openwhispr-mobile/modules/live-pcm-streaming)

### The base

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

## Frontend (openwhispr-mobile/modules/parakeet-asr)

### The base

- **[Expo](https://seerepo.com/uses/expo)**: 1 file · [in openwhispr-mobile/package.json](https://github.com/OpenWhispr/openwhispr/blob/377ec98dace2399b5992384089e8669341c172ae/openwhispr-mobile/package.json)

## Support (openwhispr-mobile/modules/parakeet-asr)

### The base

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

## Frontend (openwhispr-mobile/modules/pip-tutorial)

### The base

- **[Expo](https://seerepo.com/uses/expo)**: 1 file · [in openwhispr-mobile/package.json](https://github.com/OpenWhispr/openwhispr/blob/377ec98dace2399b5992384089e8669341c172ae/openwhispr-mobile/package.json)

## Support (openwhispr-mobile/modules/pip-tutorial)

### The base

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

## Frontend (openwhispr-mobile/modules/speaker-diarization)

### The base

- **[Expo](https://seerepo.com/uses/expo)**: 1 file · [in openwhispr-mobile/package.json](https://github.com/OpenWhispr/openwhispr/blob/377ec98dace2399b5992384089e8669341c172ae/openwhispr-mobile/package.json)

## Support (openwhispr-mobile/modules/speaker-diarization)

### The base

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

## Other repos with a similar stack

- [reactive-resume/reactive-resume](https://seerepo.com/r/reactive-resume/reactive-resume/built): React, Anthropic, OpenAI, react-native, Expo, expo-secure-store, expo-sqlite, Tailwind CSS, class-variance-authority, tiptap, TanStack, Better Auth, ai, ai-sdk, react-markdown, remark-gfm, Zod, expo-font, react-native-safe-area-context, react-native-reanimated, react-native-gesture-handler, expo-status-bar, react-native-svg, expo-image, expo-splash-screen, Drizzle, expo-auth-session, expo-document-picker · [Compare](https://seerepo.com/compare/OpenWhispr/openwhispr/vs/reactive-resume/reactive-resume)
- [multica-ai/multica](https://seerepo.com/r/multica-ai/multica/built): React, OpenAI, Electron, react-native, Expo, expo-secure-store, Tailwind CSS, class-variance-authority, tailwind-merge, tiptap, TanStack, react-markdown, remark-gfm, Zod, nativewind, react-native-safe-area-context, react-native-reanimated, react-native-gesture-handler, expo-status-bar, react-native-svg, expo-image, expo-document-picker · [Compare](https://seerepo.com/compare/multica-ai/multica/vs/OpenWhispr/openwhispr)
- [CherryHQ/cherry-studio](https://seerepo.com/r/CherryHQ/cherry-studio/built): React, Vite, SQLite, Anthropic, OpenAI, Electron, Sentry, Tailwind CSS, class-variance-authority, tailwind-merge, Radix UI, tiptap, TanStack, ai, ai-sdk, remark-gfm, Zod, Lucide, Drizzle · [Compare](https://seerepo.com/compare/CherryHQ/cherry-studio/vs/OpenWhispr/openwhispr)
- [paperclipai/paperclip](https://seerepo.com/r/paperclipai/paperclip/built): React, Vite, Anthropic, OpenAI, Sentry, Tailwind CSS, class-variance-authority, tailwind-merge, Radix UI, Better Auth, ai, ai-sdk, react-markdown, remark-gfm, Zod, Lucide, Drizzle · [Compare](https://seerepo.com/compare/OpenWhispr/openwhispr/vs/paperclipai/paperclip)
- [cline/cline](https://seerepo.com/r/cline/cline/built): React, Vite, SQLite, Anthropic, OpenAI, Tailwind CSS, class-variance-authority, tailwind-merge, Radix UI, ai, ai-sdk, js-yaml, react-markdown, remark-gfm, Zod, Lucide · [Compare](https://seerepo.com/compare/cline/cline/vs/OpenWhispr/openwhispr)
- [supabase/supabase](https://seerepo.com/r/supabase/supabase/built): React, Vite, OpenAI, Sentry, Tailwind CSS, class-variance-authority, Radix UI, @aws-sdk/credential-providers, ai, ai-sdk, js-yaml, react-markdown, remark-gfm, Zod, Lucide · [Compare](https://seerepo.com/compare/OpenWhispr/openwhispr/vs/supabase/supabase)

## Frequently asked questions

### What language is openwhispr written in?

openwhispr is written in TypeScript, with 801,420 written lines.

### What framework does openwhispr use?

openwhispr is built with React, Vite, Electron, react-native, Expo, and react-navigation.

The proof: [in package.json](https://github.com/OpenWhispr/openwhispr/blob/377ec98dace2399b5992384089e8669341c172ae/package.json)

### What database does openwhispr use?

openwhispr stores its data in SQLite and reaches it with Drizzle.

The proof: [src/helpers/database.js, line 1](https://github.com/OpenWhispr/openwhispr/blob/377ec98dace2399b5992384089e8669341c172ae/src/helpers/database.js#L1)

### What does openwhispr sign people in with?

openwhispr signs people in with @aws-sdk/credential-providers, Better Auth, expo-auth-session, and expo-apple-authentication.

### Does openwhispr use AI?

Yes. openwhispr uses AI through ai, ai-sdk, onnxruntime-node, tinfoil, @aws-sdk/client-bedrock, Anthropic, and OpenAI.

### What services does openwhispr use?

openwhispr watches its errors with Sentry and uses Qdrant, expo-secure-store, expo-sqlite, and @react-native-async-storage/async-storage.

The proof: [openwhispr-mobile/src/lib/sentry.ts, line 1](https://github.com/OpenWhispr/openwhispr/blob/377ec98dace2399b5992384089e8669341c172ae/openwhispr-mobile/src/lib/sentry.ts#L1)

### Does openwhispr have tests?

Yes. openwhispr has 1,548 test files and is tested with happy-dom and @testing-library/react-native.

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

The ones that share most of its stack: reactive-resume/reactive-resume, multica-ai/multica, and CherryHQ/cherry-studio.

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