Source: https://seerepo.com/r/monkeytypegame/monkeytype/built
Markdown source: https://seerepo.com/r/monkeytypegame/monkeytype/built.md
Description: monkeytype is a TypeScript repo built with Express, @ts-rest/core, Solid, Vite, and @solidjs/meta. It stores its data in MongoDB, bullmq, and lru-cache.

# What is monkeytype built with?

monkeytype is a TypeScript repo built with Express, @ts-rest/core, Solid, Vite, and @solidjs/meta. It stores its data in MongoDB, bullmq, and lru-cache, signs people in with bcrypt and helmet, watches its errors with Sentry, makes its content with mustache, nodemailer, and modern-screenshot, validates its data with Zod, is tested with Vitest, supertest, testcontainers, @solidjs/testing-library, and Testing Library, deploys with prom-client and winston, and uses Redis, Firebase, and idb. It has 154,835 written lines, with 235 test files.

Read on November 5, 2026, at commit 2df8cbd.

Repository: https://github.com/monkeytypegame/monkeytype

## Backend (backend)

### The base

- **[Express](https://seerepo.com/uses/express)**: 14 files · [in backend/package.json](https://github.com/monkeytypegame/monkeytype/blob/2df8cbd468386d6b0cc3dcbf35316b608bf6f8b3/backend/package.json)

### Data

- **[MongoDB](https://seerepo.com/uses/mongodb)**: 22 files · [backend/__migration__/testActivity.ts, line 3](https://github.com/monkeytypegame/monkeytype/blob/2df8cbd468386d6b0cc3dcbf35316b608bf6f8b3/backend/__migration__/testActivity.ts#L3)
- **[Redis](https://seerepo.com/uses/redis)**: 4 files · [backend/src/init/redis.ts, line 3](https://github.com/monkeytypegame/monkeytype/blob/2df8cbd468386d6b0cc3dcbf35316b608bf6f8b3/backend/src/init/redis.ts#L3)
- **bullmq**: 3 files
- **[lru-cache](https://seerepo.com/uses/lru-cache)**: 2 files

### Sign-in

- **[bcrypt](https://seerepo.com/uses/bcrypt)**: 2 files
- **helmet**: 1 file

### Services

- **[Firebase](https://seerepo.com/uses/firebase)**: 3 files · [backend/src/init/firebase-admin.ts, line 1](https://github.com/monkeytypegame/monkeytype/blob/2df8cbd468386d6b0cc3dcbf35316b608bf6f8b3/backend/src/init/firebase-admin.ts#L1)

## Support (backend)

### The base

- **@ts-rest/core**: 6 files

### Content

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

### Validation

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

### Testing

- **Vitest**: 44 files
- **supertest**: 6 files
- **testcontainers**: 1 file

### Deploy

- **prom-client**: 1 file
- **[winston](https://seerepo.com/uses/winston)**: 1 file

### Tools

- **readline-sync**: 1 file
- **simple-git**: 1 file

### Other

- **uuid**: 5 files
- **.ENV**: 4 files
- **cron**: 4 files
- **date-fns**: 3 files
- **ua-parser-js**: 2 files
- **chalk**: 1 file
- **cors**: 1 file
- **etag**: 1 file
- **express-rate-limit**: 1 file
- **object-hash**: 1 file
- **rate-limiter-flexible**: 1 file

## Frontend (frontend)

### The base

- **Solid**: 242 files
- **[Vite](https://seerepo.com/uses/vite)**: 8 files
- **@solidjs/meta**: 3 files

### Styles

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

### Interface

- **Anime.js**: 17 files
- **Chart.js**: 3 files
- **[canvas-confetti](https://seerepo.com/uses/canvas-confetti)**: 1 file

## Backend (frontend)

### Data

- **idb**: 1 file

### Services

- **[Firebase](https://seerepo.com/uses/firebase)**: 5 files · [backend/src/init/firebase-admin.ts, line 1](https://github.com/monkeytypegame/monkeytype/blob/2df8cbd468386d6b0cc3dcbf35316b608bf6f8b3/backend/src/init/firebase-admin.ts#L1)
- **[Sentry](https://seerepo.com/uses/sentry)**: 2 files · [frontend/src/ts/sentry.ts, line 3](https://github.com/monkeytypegame/monkeytype/blob/2df8cbd468386d6b0cc3dcbf35316b608bf6f8b3/frontend/src/ts/sentry.ts#L3)

## Support (frontend)

### The base

- **@ts-rest/core**: 1 file

### Content

- **modern-screenshot**: 1 file

### Validation

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

### Testing

- **Vitest**: 96 files
- **@solidjs/testing-library**: 28 files
- **Testing Library**: 4 files

### Tools

- **@actions/core**: 1 file
- **solid-devtools**: 1 file
- **unplugin-inject-preload**: 1 file
- **vite-plugin-solid**: 1 file

### Other

- **date-fns**: 22 files
- **[TanStack](https://seerepo.com/uses/tanstack)**: 18 files
- **throttle-debounce**: 11 files
- **clsx**: 1 file
- **howler**: 1 file
- **object-hash**: 1 file

## Support (packages/contracts)

### The base

- **@ts-rest/core**: 15 files

### Validation

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

### Testing

- **Vitest**: 1 file

## Support (packages/funbox)

### Testing

- **Vitest**: 1 file

## Support (packages/schemas)

### Validation

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

### Testing

- **Vitest**: 2 files

## Support (packages/tsup-config)

### Tools

- **tsup**: 1 file

## Support (packages/util)

### Validation

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

### Testing

- **Vitest**: 7 files

## Other repos with a similar stack

- [n8n-io/n8n](https://seerepo.com/r/n8n-io/n8n/built): Express, MongoDB, Redis, lru-cache, Vite, Sentry, nodemailer, Zod, winston, Chart.js · [Compare](https://seerepo.com/compare/monkeytypegame/monkeytype/vs/n8n-io/n8n)
- [immich-app/immich](https://seerepo.com/r/immich-app/immich/built): Express, Redis, bullmq, Vite, bcrypt, helmet, nodemailer, Zod, Tailwind CSS, tailwind-merge · [Compare](https://seerepo.com/compare/immich-app/immich/vs/monkeytypegame/monkeytype)
- [ruvnet/ruflo](https://seerepo.com/r/ruvnet/ruflo/built): Express, MongoDB, Vite, helmet, Zod, prom-client, Tailwind CSS, tailwind-merge · [Compare](https://seerepo.com/compare/monkeytypegame/monkeytype/vs/ruvnet/ruflo)
- [twentyhq/twenty](https://seerepo.com/r/twentyhq/twenty/built): Express, Redis, bullmq, Vite, Sentry, bcrypt, nodemailer, Zod · [Compare](https://seerepo.com/compare/monkeytypegame/monkeytype/vs/twentyhq/twenty)
- [Significant-Gravitas/AutoGPT](https://seerepo.com/r/Significant-Gravitas/AutoGPT/built): Redis, Sentry, bcrypt, Zod, Tailwind CSS, tailwind-merge, canvas-confetti · [Compare](https://seerepo.com/compare/monkeytypegame/monkeytype/vs/Significant-Gravitas/AutoGPT)
- [firecrawl/firecrawl](https://seerepo.com/r/firecrawl/firecrawl/built): Express, Redis, bullmq, Zod, prom-client, winston · [Compare](https://seerepo.com/compare/firecrawl/firecrawl/vs/monkeytypegame/monkeytype)

## Frequently asked questions

### What language is monkeytype written in?

monkeytype is written in TypeScript, with 154,835 written lines.

### What framework does monkeytype use?

monkeytype is built with Express, @ts-rest/core, Solid, Vite, and @solidjs/meta.

The proof: [in backend/package.json](https://github.com/monkeytypegame/monkeytype/blob/2df8cbd468386d6b0cc3dcbf35316b608bf6f8b3/backend/package.json)

### What database does monkeytype use?

monkeytype stores its data in MongoDB, bullmq, and lru-cache.

The proof: [backend/__migration__/testActivity.ts, line 3](https://github.com/monkeytypegame/monkeytype/blob/2df8cbd468386d6b0cc3dcbf35316b608bf6f8b3/backend/__migration__/testActivity.ts#L3)

### What does monkeytype sign people in with?

monkeytype signs people in with bcrypt and helmet.

### What services does monkeytype use?

monkeytype watches its errors with Sentry and uses Redis, Firebase, and idb.

The proof: [frontend/src/ts/sentry.ts, line 3](https://github.com/monkeytypegame/monkeytype/blob/2df8cbd468386d6b0cc3dcbf35316b608bf6f8b3/frontend/src/ts/sentry.ts#L3)

### Does monkeytype have tests?

Yes. monkeytype has 235 test files and is tested with Vitest, supertest, testcontainers, @solidjs/testing-library, and Testing Library.

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

The ones that share most of its stack: n8n-io/n8n, immich-app/immich, and ruvnet/ruflo.

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