Source: https://seerepo.com/r/redwoodjs/graphql/built
Markdown source: https://seerepo.com/r/redwoodjs/graphql/built.md
Description: graphql is a TypeScript repo built with Fastify, React, Vite, graphql-yoga, graphql-scalars, and 4 more. It stores its data in Postgres.

# What is graphql built with?

graphql is a TypeScript repo built with Fastify, React, Vite, graphql-yoga, graphql-scalars, and 4 more. It stores its data in Postgres, reaches it with Prisma, signs people in with jsonwebtoken, jwks-rsa, @azure/msal-browser, @simplewebauthn/server, @simplewebauthn/browser, and 1 more, sends email with Resend, makes its content with Cheerio, nodemailer, mjml, and @react-email/render, is tested with @playwright/test, Vitest, cypress-wait-until, memfs, Testing Library, and 4 more, deploys with pino, pino-abstract-transport, and opentelemetry, and uses Redis, Auth0, MySQL, SQLite, and lru-cache. It has 206,683 written lines, with 1,003 test files.

Read on November 6, 2026, at commit a7852fb.

Repository: https://github.com/redwoodjs/graphql

## Frontend (/)

### Interface

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

## Support (/)

### Testing

- **@playwright/test**: 25 files
- **Vitest**: 4 files
- **cypress-wait-until**: 2 files

### Tools

- **zx**: 10 files
- **jscodeshift**: 3 files
- **rimraf**: 3 files
- **yargs**: 3 files
- **chokidar**: 2 files
- **fast-glob**: 2 files
- **@npmcli/arborist**: 1 file
- **Babel**: 1 file
- **listr2**: 1 file
- **npm-packlist**: 1 file
- **type-fest**: 1 file

### Other

- **execa**: 5 files
- **fs-extra**: 3 files
- **chalk**: 1 file
- **human-id**: 1 file
- **terminal-link**: 1 file

## Support (packages/adapters/fastify/web)

### The base

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

### Testing

- **Vitest**: 4 files

### Tools

- **fast-glob**: 1 file

## Support (packages/api-server)

### The base

- **[Fastify](https://seerepo.com/uses/fastify)**: 9 files

### Testing

- **Vitest**: 10 files
- **memfs**: 1 file

### Deploy

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

### Tools

- **fast-glob**: 4 files
- **yargs**: 4 files
- **chokidar**: 1 file

### Other

- **chalk**: 7 files
- **Lodash**: 2 files
- **.ENV**: 1 file
- **pretty-bytes**: 1 file
- **pretty-ms**: 1 file
- **qs**: 1 file
- **split2**: 1 file

## Backend (packages/api)

### Data

- **[Redis](https://seerepo.com/uses/redis)**: 1 file · [packages/api/src/cache/clients/RedisClient.ts, line 1](https://github.com/redwoodjs/graphql/blob/a7852fb92d0e4ac2bcce1d9a755717ba6cf53ffd/packages/api/src/cache/clients/RedisClient.ts#L1)

### Data access

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

### Sign-in

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

## Support (packages/api)

### Testing

- **Vitest**: 21 files

### Deploy

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

### Other

- **cookie**: 1 file
- **split2**: 1 file
- **title-case**: 1 file
- **ts-toolbelt**: 1 file

## Backend (packages/auth-providers/auth0/api)

### Sign-in

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

## Support (packages/auth-providers/auth0/api)

### Testing

- **Vitest**: 1 file

## Support (packages/auth-providers/auth0/setup)

### Testing

- **Vitest**: 1 file

### Tools

- **yargs**: 1 file

## Backend (packages/auth-providers/auth0/web)

### Services

- **Auth0**: 1 file · [packages/codemods/src/codemods/v5.x.x/updateAuth0ToV2/__testfixtures__/default.input.js, line 1](https://github.com/redwoodjs/graphql/blob/a7852fb92d0e4ac2bcce1d9a755717ba6cf53ffd/packages/codemods/src/codemods/v5.x.x/updateAuth0ToV2/__testfixtures__/default.input.js#L1)

## Support (packages/auth-providers/auth0/web)

### Testing

- **Testing Library**: 1 file
- **Vitest**: 1 file

## Backend (packages/auth-providers/azureActiveDirectory/api)

### Sign-in

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

## Support (packages/auth-providers/azureActiveDirectory/api)

### Testing

- **Vitest**: 1 file

## Support (packages/auth-providers/azureActiveDirectory/setup)

### Testing

- **Vitest**: 1 file

### Tools

- **yargs**: 1 file

## Backend (packages/auth-providers/azureActiveDirectory/web)

### Sign-in

- **@azure/msal-browser**: 1 file

## Support (packages/auth-providers/azureActiveDirectory/web)

### Testing

- **Testing Library**: 1 file
- **Vitest**: 1 file

## Support (packages/auth-providers/clerk/api)

### Testing

- **Vitest**: 1 file

## Support (packages/auth-providers/clerk/setup)

### Tools

- **yargs**: 1 file

## Support (packages/auth-providers/clerk/web)

### Testing

- **Testing Library**: 1 file
- **Vitest**: 1 file

### Tools

- **Clerk**: 1 file

## Support (packages/auth-providers/custom/setup)

### Testing

- **Vitest**: 1 file

### Tools

- **yargs**: 1 file

## Backend (packages/auth-providers/dbAuth/api)

### Data access

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

### Sign-in

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

## Support (packages/auth-providers/dbAuth/api)

### Testing

- **Vitest**: 4 files

### Other

- **base64url**: 1 file
- **md5**: 1 file
- **uuid**: 1 file

## Support (packages/auth-providers/dbAuth/middleware)

### Testing

- **Vitest**: 2 files

## Frontend (packages/auth-providers/dbAuth/setup)

### Interface

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

## Backend (packages/auth-providers/dbAuth/setup)

### Data access

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

## Support (packages/auth-providers/dbAuth/setup)

### Testing

- **Vitest**: 3 files
- **memfs**: 2 files

### Tools

- **yargs**: 1 file

### Other

- **execa**: 1 file
- **terminal-link**: 1 file

## Backend (packages/auth-providers/dbAuth/web)

### Sign-in

- **@simplewebauthn/browser**: 1 file

## Support (packages/auth-providers/dbAuth/web)

### Testing

- **Vitest**: 4 files
- **Testing Library**: 3 files

## Support (packages/auth-providers/firebase/api)

### Testing

- **Vitest**: 1 file

## Support (packages/auth-providers/firebase/setup)

### Testing

- **Vitest**: 1 file

### Tools

- **yargs**: 1 file

## Support (packages/auth-providers/firebase/web)

### Testing

- **Testing Library**: 1 file
- **Vitest**: 1 file

## Backend (packages/auth-providers/netlify/api)

### Sign-in

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

## Support (packages/auth-providers/netlify/api)

### Testing

- **Vitest**: 1 file

## Support (packages/auth-providers/netlify/setup)

### Testing

- **Vitest**: 1 file

### Tools

- **yargs**: 1 file

## Backend (packages/auth-providers/netlify/web)

### Sign-in

- **Netlify**: 1 file

## Support (packages/auth-providers/netlify/web)

### Testing

- **Testing Library**: 1 file
- **Vitest**: 1 file

## Backend (packages/auth-providers/supabase/api)

### Sign-in

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

## Support (packages/auth-providers/supabase/api)

### Testing

- **Vitest**: 1 file

## Support (packages/auth-providers/supabase/middleware)

### Testing

- **Vitest**: 2 files

## Support (packages/auth-providers/supabase/setup)

### Tools

- **yargs**: 1 file

## Support (packages/auth-providers/supabase/web)

### Testing

- **Testing Library**: 2 files
- **Vitest**: 2 files

## Backend (packages/auth-providers/supertokens/api)

### Sign-in

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

## Support (packages/auth-providers/supertokens/api)

### Testing

- **Vitest**: 1 file

## Support (packages/auth-providers/supertokens/setup)

### Testing

- **Vitest**: 2 files
- **memfs**: 1 file

### Tools

- **yargs**: 1 file

## Support (packages/auth-providers/supertokens/web)

### Testing

- **Testing Library**: 1 file
- **Vitest**: 1 file

## Frontend (packages/auth)

### The base

- **[React](https://seerepo.com/uses/react)**: 14 files · [in packages/vite/package.json](https://github.com/redwoodjs/graphql/blob/a7852fb92d0e4ac2bcce1d9a755717ba6cf53ffd/packages/vite/package.json)

## Support (packages/auth)

### Testing

- **Testing Library**: 2 files
- **Vitest**: 2 files
- **msw**: 1 file

### Tools

- **zx**: 2 files
- **type-fest**: 1 file

### Other

- **whatwg-fetch**: 1 file

## Backend (packages/babel-config)

### Data access

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

## Support (packages/babel-config)

### Testing

- **babel-plugin-tester**: 8 files
- **Vitest**: 4 files
- **memfs**: 3 files

### Tools

- **Babel**: 14 files
- **fast-glob**: 2 files
- **TypeScript**: 1 file

### Other

- **OpenTelemetry**: 9 files
- **graphql-tag**: 2 files
- **@babel/runtime-corejs3**: 1 file
- **GraphQL**: 1 file

## Frontend (packages/cli-helpers)

### Interface

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

## Support (packages/cli-helpers)

### Testing

- **Vitest**: 8 files
- **memfs**: 4 files

### Tools

- **listr2**: 3 files
- **yargs**: 2 files
- **Babel**: 1 file
- **Prettier**: 1 file

### Other

- **.ENV**: 2 files
- **chalk**: 1 file
- **execa**: 1 file
- **OpenTelemetry**: 1 file
- **SemVer**: 1 file
- **smol-toml**: 1 file
- **terminal-link**: 1 file
- **yargs-parser**: 1 file

## Backend (packages/cli-packages/dataMigrate)

### Data access

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

## Support (packages/cli-packages/dataMigrate)

### Testing

- **Vitest**: 5 files
- **memfs**: 3 files

### Tools

- **yargs**: 5 files
- **listr2**: 2 files

### Other

- **terminal-link**: 3 files
- **chalk**: 2 files
- **execa**: 2 files

## Support (packages/cli-packages/storybook-vite)

### Testing

- **Vitest**: 3 files

### Tools

- **fast-glob**: 1 file
- **yargs**: 1 file

### Other

- **chalk**: 1 file
- **execa**: 1 file
- **SemVer**: 1 file
- **terminal-link**: 1 file

## Frontend (packages/cli)

### The base

- **[React](https://seerepo.com/uses/react)**: 6 files · [in packages/vite/package.json](https://github.com/redwoodjs/graphql/blob/a7852fb92d0e4ac2bcce1d9a755717ba6cf53ffd/packages/vite/package.json)
- **[Vite](https://seerepo.com/uses/vite)**: 2 files · [in packages/vite/package.json](https://github.com/redwoodjs/graphql/blob/a7852fb92d0e4ac2bcce1d9a755717ba6cf53ffd/packages/vite/package.json)

### Interface

- **[boxen](https://seerepo.com/uses/boxen)**: 6 files
- **[prompts](https://seerepo.com/uses/prompts)**: 4 files
- **enquirer**: 2 files

## Backend (packages/cli)

### Data

- **[Postgres](https://seerepo.com/uses/postgres)**: 3 files · [packages/cli/src/commands/generate/cell/__tests__/fixtures/schema.prisma, line 2](https://github.com/redwoodjs/graphql/blob/a7852fb92d0e4ac2bcce1d9a755717ba6cf53ffd/packages/cli/src/commands/generate/cell/__tests__/fixtures/schema.prisma#L2)
- **[MySQL](https://seerepo.com/uses/mysql)**: 1 file · [packages/cli/src/commands/generate/sdl/__tests__/fixtures/schema.prisma, line 2](https://github.com/redwoodjs/graphql/blob/a7852fb92d0e4ac2bcce1d9a755717ba6cf53ffd/packages/cli/src/commands/generate/sdl/__tests__/fixtures/schema.prisma#L2)
- **[SQLite](https://seerepo.com/uses/sqlite)**: 1 file · [__fixtures__/empty-project/api/db/schema.prisma, line 2](https://github.com/redwoodjs/graphql/blob/a7852fb92d0e4ac2bcce1d9a755717ba6cf53ffd/__fixtures__/empty-project/api/db/schema.prisma#L2)

### Data access

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

## Support (packages/cli)

### Testing

- **Vitest**: 88 files
- **memfs**: 38 files

### Deploy

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

### Tools

- **listr2**: 56 files
- **yargs**: 10 files
- **jscodeshift**: 8 files
- **Prettier**: 8 files
- **fast-glob**: 5 files
- **Babel**: 3 files
- **concurrently**: 3 files
- **tempy**: 3 files
- **envinfo**: 2 files
- **latest-version**: 2 files
- **@vscode/ripgrep**: 1 file
- **ci-info**: 1 file
- **portfinder**: 1 file

### Other

- **fs-extra**: 64 files
- **terminal-link**: 47 files
- **execa**: 37 files
- **camelcase**: 9 files
- **chalk**: 7 files
- **change-case**: 5 files
- **SemVer**: 5 files
- **Lodash**: 4 files
- **OpenTelemetry**: 3 files
- **pluralize**: 2 files
- **smol-toml**: 2 files
- **title-case**: 2 files
- **uuid**: 2 files
- **archiver**: 1 file
- **configstore**: 1 file
- **decamelize**: 1 file
- **GraphQL**: 1 file
- **systeminformation**: 1 file

## Frontend (packages/codemods)

### The base

- **[React](https://seerepo.com/uses/react)**: 19 files · [in packages/vite/package.json](https://github.com/redwoodjs/graphql/blob/a7852fb92d0e4ac2bcce1d9a755717ba6cf53ffd/packages/vite/package.json)

### Interface

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

## Backend (packages/codemods)

### Services

- **Auth0**: 2 files · [packages/codemods/src/codemods/v5.x.x/updateAuth0ToV2/__testfixtures__/default.input.js, line 1](https://github.com/redwoodjs/graphql/blob/a7852fb92d0e4ac2bcce1d9a755717ba6cf53ffd/packages/codemods/src/codemods/v5.x.x/updateAuth0ToV2/__testfixtures__/default.input.js#L1)

## Support (packages/codemods)

### Content

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

### Testing

- **Vitest**: 21 files

### Tools

- **jscodeshift**: 14 files
- **fast-glob**: 11 files
- **tempy**: 3 files
- **Babel**: 2 files
- **Prettier**: 2 files
- **yargs**: 2 files
- **@svgr/core**: 1 file
- **@vscode/ripgrep**: 1 file
- **TypeScript**: 1 file

### Other

- **execa**: 3 files
- **fs-extra**: 2 files
- **chalk**: 1 file
- **GraphQL**: 1 file
- **Lodash**: 1 file
- **yargs-parser**: 1 file

## Support (packages/cookie-jar)

### Testing

- **Vitest**: 1 file

### Other

- **cookie**: 1 file

## Support (packages/create-redwood-app)

### Testing

- **Vitest**: 2 files

### Deploy

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

### Tools

- **zx**: 2 files
- **check-node-version**: 1 file
- **ci-info**: 1 file
- **envinfo**: 1 file
- **klaw-sync**: 1 file
- **yargs**: 1 file

### Other

- **OpenTelemetry**: 2 files
- **configstore**: 1 file
- **execa**: 1 file
- **fs-extra**: 1 file
- **SemVer**: 1 file
- **systeminformation**: 1 file
- **terminal-link**: 1 file
- **untildify**: 1 file
- **uuid**: 1 file

## Backend (packages/create-redwood-app/templates/js/api)

### Data access

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

## Support (packages/create-redwood-app/templates/js/api)

### Other

- **graphql-tag**: 2 files

## Frontend (packages/create-redwood-app/templates/js/web)

### The base

- **[React](https://seerepo.com/uses/react)**: 1 file · [in packages/vite/package.json](https://github.com/redwoodjs/graphql/blob/a7852fb92d0e4ac2bcce1d9a755717ba6cf53ffd/packages/vite/package.json)

## Backend (packages/create-redwood-app/templates/ts/api)

### Data access

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

## Support (packages/create-redwood-app/templates/ts/api)

### Other

- **graphql-tag**: 2 files

## Frontend (packages/create-redwood-app/templates/ts/web)

### The base

- **[React](https://seerepo.com/uses/react)**: 2 files · [in packages/vite/package.json](https://github.com/redwoodjs/graphql/blob/a7852fb92d0e4ac2bcce1d9a755717ba6cf53ffd/packages/vite/package.json)

## Frontend (packages/create-redwood-rsc-app)

### Interface

- **enquirer**: 1 file

## Support (packages/create-redwood-rsc-app)

### Tools

- **ci-info**: 1 file
- **esbuild**: 1 file
- **fast-glob**: 1 file
- **rimraf**: 1 file
- **zx**: 1 file

### Other

- **node-fetch**: 3 files
- **chalk**: 1 file
- **fs-extra**: 1 file
- **SemVer**: 1 file
- **untildify**: 1 file
- **which**: 1 file

## Support (packages/eslint-plugin)

### Tools

- **typescript-eslint**: 4 files

## Frontend (packages/forms)

### The base

- **[React](https://seerepo.com/uses/react)**: 12 files · [in packages/vite/package.json](https://github.com/redwoodjs/graphql/blob/a7852fb92d0e4ac2bcce1d9a755717ba6cf53ffd/packages/vite/package.json)

### Interface

- **[React Hook Form](https://seerepo.com/uses/react-hook-form)**: 6 files

## Support (packages/forms)

### Testing

- **Testing Library**: 2 files
- **Vitest**: 2 files

### Other

- **GraphQL**: 1 file

## Support (packages/framework-tools)

### Tools

- **esbuild**: 1 file
- **fast-glob**: 1 file
- **type-fest**: 1 file
- **zx**: 1 file

### Other

- **fs-extra**: 1 file

## Backend (packages/graphql-server)

### Sign-in

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

## Support (packages/graphql-server)

### The base

- **graphql-yoga**: 10 files
- **graphql-scalars**: 1 file

### Testing

- **Vitest**: 20 files

### Tools

- **graphql-tools**: 2 files

### Other

- **GraphQL**: 10 files
- **@graphql-tools/utils**: 2 files
- **graphql-tag**: 2 files
- **OpenTelemetry**: 2 files
- **@envelop/core**: 1 file
- **Lodash**: 1 file
- **uuid**: 1 file

## Frontend (packages/internal)

### The base

- **[React](https://seerepo.com/uses/react)**: 5 files · [in packages/vite/package.json](https://github.com/redwoodjs/graphql/blob/a7852fb92d0e4ac2bcce1d9a755717ba6cf53ffd/packages/vite/package.json)

## Backend (packages/internal)

### Data

- **[SQLite](https://seerepo.com/uses/sqlite)**: 2 files · [__fixtures__/empty-project/api/db/schema.prisma, line 2](https://github.com/redwoodjs/graphql/blob/a7852fb92d0e4ac2bcce1d9a755717ba6cf53ffd/__fixtures__/empty-project/api/db/schema.prisma#L2)

### Data access

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

## Support (packages/internal)

### Testing

- **Vitest**: 19 files

### Tools

- **graphql-codegen**: 5 files
- **Babel**: 3 files
- **Prettier**: 3 files
- **fast-glob**: 2 files
- **@graphql-tools/merge**: 1 file
- **chokidar**: 1 file
- **kill-port**: 1 file
- **source-map**: 1 file
- **TypeScript**: 1 file

### Other

- **GraphQL**: 6 files
- **graphql-tag**: 6 files
- **chalk**: 4 files
- **execa**: 1 file
- **terminal-link**: 1 file

## Backend (packages/jobs)

### Data access

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

## Support (packages/jobs)

### Testing

- **Vitest**: 10 files

### Tools

- **yargs**: 2 files
- **type-fest**: 1 file

### Other

- **change-case**: 1 file

## Support (packages/mailer/core)

### Testing

- **Vitest**: 2 files

## Support (packages/mailer/handlers/nodemailer)

### Content

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

## Backend (packages/mailer/handlers/resend)

### Services

- **[Resend](https://seerepo.com/uses/resend)**: 1 file · [packages/mailer/handlers/resend/src/index.ts, line 1](https://github.com/redwoodjs/graphql/blob/a7852fb92d0e4ac2bcce1d9a755717ba6cf53ffd/packages/mailer/handlers/resend/src/index.ts#L1)

## Support (packages/mailer/renderers/mjml-react)

### Content

- **mjml**: 1 file

## Support (packages/mailer/renderers/react-email)

### Content

- **@react-email/render**: 1 file

## Frontend (packages/ogimage-gen)

### The base

- **[React](https://seerepo.com/uses/react)**: 1 file · [in packages/vite/package.json](https://github.com/redwoodjs/graphql/blob/a7852fb92d0e4ac2bcce1d9a755717ba6cf53ffd/packages/vite/package.json)
- **[Vite](https://seerepo.com/uses/vite)**: 1 file · [in packages/vite/package.json](https://github.com/redwoodjs/graphql/blob/a7852fb92d0e4ac2bcce1d9a755717ba6cf53ffd/packages/vite/package.json)

## Support (packages/ogimage-gen)

### Testing

- **Vitest**: 3 files
- **memfs**: 2 files

### Tools

- **fast-glob**: 1 file

### Other

- **Lodash**: 1 file
- **mime-types**: 1 file
- **ts-toolbelt**: 1 file

## Frontend (packages/prerender)

### The base

- **[React](https://seerepo.com/uses/react)**: 2 files · [in packages/vite/package.json](https://github.com/redwoodjs/graphql/blob/a7852fb92d0e4ac2bcce1d9a755717ba6cf53ffd/packages/vite/package.json)
- **[Vite](https://seerepo.com/uses/vite)**: 1 file · [in packages/vite/package.json](https://github.com/redwoodjs/graphql/blob/a7852fb92d0e4ac2bcce1d9a755717ba6cf53ffd/packages/vite/package.json)

## Support (packages/prerender)

### Content

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

### Testing

- **Vitest**: 2 files
- **babel-plugin-tester**: 1 file

### Tools

- **Babel**: 1 file

### Other

- **GraphQL**: 2 files
- **@apollo/client**: 1 file
- **mime-types**: 1 file

## Support (packages/project-config)

### Testing

- **Vitest**: 3 files

### Tools

- **fast-glob**: 1 file

### Other

- **deepmerge**: 1 file
- **smol-toml**: 1 file

## Support (packages/realtime)

### The base

- **graphql-yoga**: 1 file

### Testing

- **Vitest**: 2 files

### Tools

- **@graphql-tools/schema**: 1 file

### Other

- **@envelop/core**: 1 file
- **@graphql-tools/utils**: 1 file
- **GraphQL**: 1 file

## Backend (packages/record)

### Data access

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

## Support (packages/record)

### Testing

- **Vitest**: 5 files

### Tools

- **esbuild**: 1 file

### Other

- **camelcase**: 1 file

## Frontend (packages/router)

### The base

- **[React](https://seerepo.com/uses/react)**: 30 files · [in packages/vite/package.json](https://github.com/redwoodjs/graphql/blob/a7852fb92d0e4ac2bcce1d9a755717ba6cf53ffd/packages/vite/package.json)

## Support (packages/router)

### The base

- **react-server-dom-webpack**: 2 files

### Testing

- **Vitest**: 19 files
- **Testing Library**: 15 files

### Tools

- **tstyche**: 2 files
- **zx**: 1 file

### Other

- **ts-toolbelt**: 1 file

## Backend (packages/storage)

### Data

- **[SQLite](https://seerepo.com/uses/sqlite)**: 1 file · [__fixtures__/empty-project/api/db/schema.prisma, line 2](https://github.com/redwoodjs/graphql/blob/a7852fb92d0e4ac2bcce1d9a755717ba6cf53ffd/__fixtures__/empty-project/api/db/schema.prisma#L2)

### Data access

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

## Support (packages/storage)

### Testing

- **Vitest**: 6 files
- **memfs**: 1 file

### Tools

- **tstyche**: 1 file
- **zx**: 1 file

### Other

- **mime-types**: 3 files
- **ulid**: 2 files

## Frontend (packages/storybook)

### The base

- **[React](https://seerepo.com/uses/react)**: 5 files · [in packages/vite/package.json](https://github.com/redwoodjs/graphql/blob/a7852fb92d0e4ac2bcce1d9a755717ba6cf53ffd/packages/vite/package.json)
- **[Vite](https://seerepo.com/uses/vite)**: 4 files · [in packages/vite/package.json](https://github.com/redwoodjs/graphql/blob/a7852fb92d0e4ac2bcce1d9a755717ba6cf53ffd/packages/vite/package.json)

## Support (packages/storybook)

### Tools

- **react-docgen**: 2 files
- **@joshwooding/vite-plugin-react-docgen-typescript**: 1 file
- **@rollup/pluginutils**: 1 file
- **magic-string**: 1 file
- **Storybook**: 1 file
- **unplugin-auto-import**: 1 file
- **vite-plugin-node-polyfills**: 1 file

## Frontend (packages/structure)

### Interface

- **enquirer**: 1 file

## Backend (packages/structure)

### Data

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

### Data access

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

## Support (packages/structure)

### Testing

- **Vitest**: 7 files
- **proxyquire**: 1 file

### Tools

- **ts-morph**: 13 files
- **vscode-languageserver-types**: 11 files
- **vscode-languageserver**: 8 files
- **vscode-languageserver-textdocument**: 3 files
- **fast-glob**: 2 files

### Other

- **fs-extra**: 5 files
- **Lodash**: 4 files
- **GraphQL**: 3 files
- **camelcase**: 1 file
- **smol-toml**: 1 file
- **yargs-parser**: 1 file

## Support (packages/telemetry)

### Testing

- **Vitest**: 1 file

### Tools

- **ci-info**: 1 file
- **envinfo**: 1 file
- **yargs**: 1 file

### Other

- **systeminformation**: 1 file
- **uuid**: 1 file

## Frontend (packages/testing)

### The base

- **[React](https://seerepo.com/uses/react)**: 5 files · [in packages/vite/package.json](https://github.com/redwoodjs/graphql/blob/a7852fb92d0e4ac2bcce1d9a755717ba6cf53ffd/packages/vite/package.json)

## Backend (packages/testing)

### Data access

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

## Support (packages/testing)

### Testing

- **Testing Library**: 6 files
- **Vitest**: 5 files
- **Jest**: 1 file
- **msw**: 1 file

### Tools

- **fast-glob**: 1 file

### Other

- **ts-toolbelt**: 2 files
- **whatwg-fetch**: 2 files
- **execa**: 1 file

## Frontend (packages/tui)

### Interface

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

## Support (packages/tui)

### Other

- **chalk**: 1 file

## Frontend (packages/vite)

### The base

- **[Vite](https://seerepo.com/uses/vite)**: 29 files · [in packages/vite/package.json](https://github.com/redwoodjs/graphql/blob/a7852fb92d0e4ac2bcce1d9a755717ba6cf53ffd/packages/vite/package.json)
- **[React](https://seerepo.com/uses/react)**: 3 files · [in packages/vite/package.json](https://github.com/redwoodjs/graphql/blob/a7852fb92d0e4ac2bcce1d9a755717ba6cf53ffd/packages/vite/package.json)

## Backend (packages/vite)

### The base

- **[Express](https://seerepo.com/uses/express)**: 5 files · [in packages/vite/package.json](https://github.com/redwoodjs/graphql/blob/a7852fb92d0e4ac2bcce1d9a755717ba6cf53ffd/packages/vite/package.json)

## Support (packages/vite)

### The base

- **find-my-way**: 5 files
- **@whatwg-node/server**: 3 files
- **react-server-dom-webpack**: 2 files

### Testing

- **Vitest**: 11 files
- **memfs**: 4 files

### Tools

- **Babel**: 4 files
- **rollup**: 3 files
- **SWC**: 3 files
- **esbuild**: 2 files
- **@hyrious/esbuild-plugin-commonjs**: 1 file
- **@vitejs/plugin-react**: 1 file
- **acorn-loose**: 1 file
- **vite-plugin-node-polyfills**: 1 file
- **zx**: 1 file

### Other

- **yargs-parser**: 2 files
- **busboy**: 1 file
- **http-proxy-middleware**: 1 file
- **isbot**: 1 file
- **ws**: 1 file

## Support (packages/web-server)

### The base

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

### Tools

- **yargs**: 2 files

### Other

- **fs-extra**: 2 files
- **chalk**: 1 file

## Frontend (packages/web)

### The base

- **[React](https://seerepo.com/uses/react)**: 21 files · [in packages/vite/package.json](https://github.com/redwoodjs/graphql/blob/a7852fb92d0e4ac2bcce1d9a755717ba6cf53ffd/packages/vite/package.json)
- **[Vite](https://seerepo.com/uses/vite)**: 1 file · [in packages/vite/package.json](https://github.com/redwoodjs/graphql/blob/a7852fb92d0e4ac2bcce1d9a755717ba6cf53ffd/packages/vite/package.json)

### Interface

- **[react-helmet-async](https://seerepo.com/uses/react-helmet-async)**: 4 files
- **react-hot-toast**: 1 file

## Support (packages/web)

### Testing

- **Vitest**: 9 files
- **Testing Library**: 7 files

### Tools

- **tstyche**: 2 files
- **esbuild**: 1 file
- **zx**: 1 file

### Other

- **@apollo/client**: 10 files
- **GraphQL**: 10 files
- **apollo-upload-client**: 1 file
- **cookie**: 1 file
- **graphql-sse**: 1 file
- **graphql-tag**: 1 file
- **ts-toolbelt**: 1 file

## Other repos with a similar stack

- [n8n-io/n8n](https://seerepo.com/r/n8n-io/n8n/built): Redis, Vite, Postgres, MySQL, SQLite, lru-cache, Express, jsonwebtoken, opentelemetry, Cheerio, nodemailer · [Compare](https://seerepo.com/compare/n8n-io/n8n/vs/redwoodjs/graphql)
- [immich-app/immich](https://seerepo.com/r/immich-app/immich/built): Redis, React, Vite, Postgres, SQLite, Express, jsonwebtoken, @simplewebauthn/server, @simplewebauthn/browser, opentelemetry, nodemailer · [Compare](https://seerepo.com/compare/immich-app/immich/vs/redwoodjs/graphql)
- [twentyhq/twenty](https://seerepo.com/r/twentyhq/twenty/built): Redis, React, Vite, Postgres, graphql-yoga, graphql-scalars, Express, jsonwebtoken, opentelemetry, React Hook Form, nodemailer · [Compare](https://seerepo.com/compare/redwoodjs/graphql/vs/twentyhq/twenty)
- [nocodb/nocodb](https://seerepo.com/r/nocodb/nocodb/built): Redis, React, Postgres, SQLite, lru-cache, Express, jsonwebtoken, boxen, nodemailer · [Compare](https://seerepo.com/compare/nocodb/nocodb/vs/redwoodjs/graphql)
- [payloadcms/payload](https://seerepo.com/r/payloadcms/payload/built): Redis, React, Vite, Postgres, SQLite, graphql-scalars, prompts, pino, nodemailer · [Compare](https://seerepo.com/compare/payloadcms/payload/vs/redwoodjs/graphql)
- [strapi/strapi](https://seerepo.com/r/strapi/strapi/built): React, Vite, graphql-scalars, ora, prompts, jsonwebtoken, boxen, nodemailer · [Compare](https://seerepo.com/compare/redwoodjs/graphql/vs/strapi/strapi)

## Frequently asked questions

### What language is graphql written in?

graphql is written in TypeScript, with 206,683 written lines.

### What framework does graphql use?

graphql is built with Fastify, React, Vite, graphql-yoga, graphql-scalars, react-server-dom-webpack, Express, find-my-way, and @whatwg-node/server.

### What database does graphql use?

graphql stores its data in Postgres and reaches it with Prisma.

The proof: [packages/cli/src/commands/generate/cell/__tests__/fixtures/schema.prisma, line 2](https://github.com/redwoodjs/graphql/blob/a7852fb92d0e4ac2bcce1d9a755717ba6cf53ffd/packages/cli/src/commands/generate/cell/__tests__/fixtures/schema.prisma#L2)

### What does graphql sign people in with?

graphql signs people in with jsonwebtoken, jwks-rsa, @azure/msal-browser, @simplewebauthn/server, @simplewebauthn/browser, and Netlify.

### What services does graphql use?

graphql sends email with Resend and uses Redis, Auth0, MySQL, SQLite, and lru-cache.

The proof: [packages/mailer/handlers/resend/src/index.ts, line 1](https://github.com/redwoodjs/graphql/blob/a7852fb92d0e4ac2bcce1d9a755717ba6cf53ffd/packages/mailer/handlers/resend/src/index.ts#L1)

### Does graphql have tests?

Yes. graphql has 1,003 test files and is tested with @playwright/test, Vitest, cypress-wait-until, memfs, Testing Library, msw, babel-plugin-tester, proxyquire, and Jest.

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

The ones that share most of its stack: n8n-io/n8n, immich-app/immich, 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.
