Source: https://seerepo.com/r/web-infra-dev/midscene/built
Markdown source: https://seerepo.com/r/web-infra-dev/midscene/built.md
Description: midscene is a TypeScript repo built with React, Electron, and Express. It signs people in with jose and uses AI through OpenAI.

# What is midscene built with?

midscene is a TypeScript repo built with React, Electron, and Express. It signs people in with jose, uses AI through OpenAI, makes its content with highlight.js, js-yaml, sharp, and @silvia-odwyer/photon, validates its data with Zod, and is tested with @rstest/core, Vitest, appium-adb, Puppeteer, playwright, and 1 more. It has 414,757 written lines, with 971 test files.

Read on November 8, 2026, at commit 485dba8.

Repository: https://github.com/web-infra-dev/midscene

## Support (apps/badge)

### Testing

- **@rstest/core**: 4 files

## Frontend (apps/chrome-extension)

### The base

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

### Styles

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

### Interface

- **[antd](https://seerepo.com/uses/antd)**: 18 files
- **[canvas-confetti](https://seerepo.com/uses/canvas-confetti)**: 1 file
- **react-highlight**: 1 file

### Icons

- **[Ant Design](https://seerepo.com/uses/ant-design)**: 9 files

## Backend (apps/chrome-extension)

### Sign-in

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

## Support (apps/chrome-extension)

### Content

- **[highlight.js](https://seerepo.com/uses/highlightjs)**: 1 file

### Testing

- **@rstest/core**: 22 files

### Other

- **dayjs**: 1 file
- **file-saver**: 1 file
- **jszip**: 1 file
- **zustand**: 1 file

## Frontend (apps/recorder-form)

### The base

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

### Interface

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

## Frontend (apps/report)

### The base

- **[React](https://seerepo.com/uses/react)**: 38 files

### Interface

- **[antd](https://seerepo.com/uses/antd)**: 19 files
- **[react-resizable-panels](https://seerepo.com/uses/react-resizable-panels)**: 2 files
- **react-json-view-lite**: 1 file

### Icons

- **[Ant Design](https://seerepo.com/uses/ant-design)**: 21 files

## Support (apps/report)

### Content

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

### Testing

- **@rstest/core**: 49 files

### Tools

- **TypeScript**: 1 file

### Other

- **fflate**: 1 file
- **zustand**: 1 file

## Frontend (apps/studio)

### The base

- **[React](https://seerepo.com/uses/react)**: 31 files

### Styles

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

### Interface

- **[antd](https://seerepo.com/uses/antd)**: 7 files

## Support (apps/studio)

### The base

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

### Testing

- **Vitest**: 66 files

### Other

- **electron-updater**: 1 file
- **jszip**: 1 file

## Backend (packages/android-playground)

### The base

- **[Express](https://seerepo.com/uses/express)**: 1 file · [in packages/playground/package.json](https://github.com/web-infra-dev/midscene/blob/485dba8f7f7bf6c4beb95e74f05c4b81b528850f/packages/playground/package.json)

## Support (packages/android-playground)

### Testing

- **@rstest/core**: 5 files

### Other

- **Socket.io**: 2 files
- **cors**: 1 file
- **open**: 1 file
- **socket.io-client**: 1 file

## Support (packages/android)

### Validation

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

### Testing

- **@rstest/core**: 32 files
- **appium-adb**: 10 files

### Tools

- **TypeScript**: 1 file

### Other

- **undici**: 1 file

## Backend (packages/cli)

### Sign-in

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

## Support (packages/cli)

### Content

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

### Testing

- **@rstest/core**: 30 files
- **Puppeteer**: 6 files

### Tools

- **http-server**: 2 files
- **glob**: 1 file
- **yargs**: 1 file

### Other

- **execa**: 4 files
- **Lodash**: 3 files
- **chalk**: 2 files
- **minimist**: 1 file
- **p-limit**: 1 file

## Support (packages/computer)

### Testing

- **@rstest/core**: 42 files

### Other

- **clipboardy**: 1 file

## Backend (packages/core)

### Sign-in

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

### Services

- **[OpenAI](https://seerepo.com/uses/openai)**: 1 file · [packages/core/src/ai-model/service-caller/openai/openai-client.ts, line 9](https://github.com/web-infra-dev/midscene/blob/485dba8f7f7bf6c4beb95e74f05c4b81b528850f/packages/core/src/ai-model/service-caller/openai/openai-client.ts#L9)

## Support (packages/core)

### Content

- **[js-yaml](https://seerepo.com/uses/js-yaml)**: 5 files
- **[sharp](https://seerepo.com/uses/sharp)**: 4 files

### Validation

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

### Testing

- **@rstest/core**: 216 files

### Tools

- **TypeScript**: 1 file

### Other

- **undici**: 3 files
- **.ENV**: 2 files
- **fetch-socks**: 2 files
- **dayjs**: 1 file
- **jsonrepair**: 1 file
- **SemVer**: 1 file

## Frontend (packages/harmony)

### Interface

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

## Support (packages/harmony)

### Validation

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

### Testing

- **@rstest/core**: 15 files

### Other

- **open**: 1 file

## Support (packages/ios)

### Validation

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

### Testing

- **@rstest/core**: 24 files

### Other

- **open**: 1 file

## Frontend (packages/playground-app)

### The base

- **[React](https://seerepo.com/uses/react)**: 11 files

### Interface

- **[antd](https://seerepo.com/uses/antd)**: 9 files
- **[react-resizable-panels](https://seerepo.com/uses/react-resizable-panels)**: 1 file

## Support (packages/playground-app)

### Testing

- **@rstest/core**: 15 files

### Other

- **socket.io-client**: 1 file

## Backend (packages/playground)

### The base

- **[Express](https://seerepo.com/uses/express)**: 3 files · [in packages/playground/package.json](https://github.com/web-infra-dev/midscene/blob/485dba8f7f7bf6c4beb95e74f05c4b81b528850f/packages/playground/package.json)

## Support (packages/playground)

### Testing

- **@rstest/core**: 25 files

### Other

- **.ENV**: 1 file
- **cors**: 1 file

## Frontend (packages/recorder)

### The base

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

### Interface

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

### Icons

- **[Ant Design](https://seerepo.com/uses/ant-design)**: 1 file

## Support (packages/shared)

### Content

- **@silvia-odwyer/photon**: 4 files
- **[sharp](https://seerepo.com/uses/sharp)**: 1 file

### Validation

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

### Testing

- **@rstest/core**: 42 files

### Other

- **.ENV**: 1 file
- **debug**: 1 file
- **js-sha256**: 1 file
- **uuid**: 1 file

## Frontend (packages/visualizer)

### The base

- **[React](https://seerepo.com/uses/react)**: 27 files

### Interface

- **[antd](https://seerepo.com/uses/antd)**: 17 files

### Icons

- **[Ant Design](https://seerepo.com/uses/ant-design)**: 9 files

## Support (packages/visualizer)

### Testing

- **@rstest/core**: 25 files

### Other

- **zustand**: 2 files
- **dayjs**: 1 file

## Support (packages/web-integration)

### Content

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

### Validation

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

### Testing

- **@rstest/core**: 112 files
- **Puppeteer**: 35 files
- **playwright**: 32 files
- **puppeteer-core**: 4 files

### Tools

- **http-server**: 2 files
- **devtools-protocol**: 1 file

### Other

- **.ENV**: 2 files
- **socket.io-client**: 2 files
- **SemVer**: 1 file
- **Socket.io**: 1 file
- **ws**: 1 file

## Support (packages/webdriver)

### Testing

- **@rstest/core**: 3 files

## Other repos with a similar stack

- [ruvnet/ruflo](https://seerepo.com/r/ruvnet/ruflo/built): React, Express, OpenAI, Tailwind CSS, jose, highlight.js, react-resizable-panels, js-yaml, Zod, sharp · [Compare](https://seerepo.com/compare/ruvnet/ruflo/vs/web-infra-dev/midscene)
- [cheaper-inference/OmniRoute](https://seerepo.com/r/cheaper-inference/OmniRoute/built): React, Electron, Express, Tailwind CSS, jose, js-yaml, Zod, sharp · [Compare](https://seerepo.com/compare/cheaper-inference/OmniRoute/vs/web-infra-dev/midscene)
- [usebruno/bruno](https://seerepo.com/r/usebruno/bruno/built): React, Electron, Express, OpenAI, Tailwind CSS, highlight.js, js-yaml, Zod · [Compare](https://seerepo.com/compare/usebruno/bruno/vs/web-infra-dev/midscene)
- [Significant-Gravitas/AutoGPT](https://seerepo.com/r/Significant-Gravitas/AutoGPT/built): React, OpenAI, Tailwind CSS, canvas-confetti, jose, highlight.js, Zod · [Compare](https://seerepo.com/compare/Significant-Gravitas/AutoGPT/vs/web-infra-dev/midscene)
- [immich-app/immich](https://seerepo.com/r/immich-app/immich/built): React, Express, Tailwind CSS, jose, js-yaml, Zod, sharp · [Compare](https://seerepo.com/compare/immich-app/immich/vs/web-infra-dev/midscene)
- [paperclipai/paperclip](https://seerepo.com/r/paperclipai/paperclip/built): React, Express, OpenAI, Tailwind CSS, react-resizable-panels, Zod, sharp · [Compare](https://seerepo.com/compare/paperclipai/paperclip/vs/web-infra-dev/midscene)

## Frequently asked questions

### What language is midscene written in?

midscene is written in TypeScript, with 414,757 written lines.

### What framework does midscene use?

midscene is built with React, Electron, and Express.

### What does midscene sign people in with?

midscene signs people in with jose.

### Does midscene use AI?

Yes. midscene uses AI through OpenAI.

The proof: [packages/core/src/ai-model/service-caller/openai/openai-client.ts, line 9](https://github.com/web-infra-dev/midscene/blob/485dba8f7f7bf6c4beb95e74f05c4b81b528850f/packages/core/src/ai-model/service-caller/openai/openai-client.ts#L9)

### Does midscene have tests?

Yes. midscene has 971 test files and is tested with @rstest/core, Vitest, appium-adb, Puppeteer, playwright, and puppeteer-core.

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

The ones that share most of its stack: ruvnet/ruflo, cheaper-inference/OmniRoute, and usebruno/bruno.

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