Source: https://seerepo.com/r/NangoHQ/nango/built
Markdown source: https://seerepo.com/r/NangoHQ/nango/built.md
Description: nango is a TypeScript repo built with Vite, React, TanStack, Express, @trpc/server, and 2 more.

# What is nango built with?

nango is a TypeScript repo built with Vite, React, TanStack, Express, @trpc/server, and 2 more. It stores its data in ClickHouse, @aws-sdk/client-sqs, OpenSearch, and Elastic, reaches it with knex, signs people in with jose, @azure/identity, oidc-provider, jsonwebtoken, otpauth, and 8 more, takes payments with Stripe, stores files in AWS S3, uses AI through @aws-sdk/client-bedrock-agentcore, ai, PostHog, OpenAI, and @ai-sdk/react, watches its errors with Sentry, makes its content with EJS, js-yaml, nodemailer, fast-xml-parser, he, and 4 more, validates its data with Zod, Ajv, json-schema, ajv-errors, @hookform/resolvers, and 2 more, is tested with Vitest, vitest-browser-react, axe-core, and testcontainers, deploys with dd-trace, @aws-sdk/client-ecr, opentelemetry, aws-sdk, @kubernetes/client-node, and 1 more, and uses Google Cloud, Mailgun, Redis, connect-session-knex, MCP, and 1 more. It has 406,593 written lines, with 784 test files.

Read on November 10, 2026, at commit 86f6921.

Repository: https://github.com/NangoHQ/nango

## Backend (packages/audit)

### Data

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

### Data access

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

## Support (packages/audit)

### Testing

- **Vitest**: 12 files

### Deploy

- **dd-trace**: 1 file

## Support (packages/authz)

### Testing

- **Vitest**: 3 files

## Backend (packages/billing)

### Services

- **[Stripe](https://seerepo.com/uses/stripe)**: 1 file · [packages/webapp/src/utils/stripe.ts, line 1](https://github.com/NangoHQ/nango/blob/86f6921d0575223b6f856666b8ba4aad4772720e/packages/webapp/src/utils/stripe.ts#L1)

## Support (packages/billing)

### Validation

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

### Testing

- **Vitest**: 3 files

## Frontend (packages/cli)

### Interface

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

## Support (packages/cli)

### Content

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

### Validation

- **[Zod](https://seerepo.com/uses/zod)**: 8 files
- **[Ajv](https://seerepo.com/uses/ajv)**: 2 files
- **[json-schema](https://seerepo.com/uses/json-schema)**: 2 files
- **ajv-errors**: 1 file

### Testing

- **Vitest**: 25 files

### Tools

- **type-fest**: 4 files
- **TypeScript**: 4 files
- **Babel**: 2 files
- **glob**: 2 files
- **[Inquirer](https://seerepo.com/uses/inquirer)**: 2 files
- **chokidar**: 1 file
- **commander**: 1 file
- **esbuild**: 1 file
- **import-meta-resolve**: 1 file
- **jscodeshift**: 1 file
- **npm-package-arg**: 1 file
- **ts-node**: 1 file
- **tsup**: 1 file

### Other

- **chalk**: 26 files
- **Axios**: 6 files
- **.ENV**: 4 files
- **serialize-error**: 3 files
- **columnify**: 1 file
- **conf**: 1 file
- **figlet**: 1 file
- **parse-link-header**: 1 file
- **SemVer**: 1 file
- **strip-ansi**: 1 file
- **undici**: 1 file
- **unzipper**: 1 file

## Backend (packages/clickhouse-migrations)

### Data

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

## Frontend (packages/connect-ui)

### The base

- **[Vite](https://seerepo.com/uses/vite)**: [in packages/webapp/package.json](https://github.com/NangoHQ/nango/blob/86f6921d0575223b6f856666b8ba4aad4772720e/packages/webapp/package.json)
- **[React](https://seerepo.com/uses/react)**: 15 files · [in packages/webapp/package.json](https://github.com/NangoHQ/nango/blob/86f6921d0575223b6f856666b8ba4aad4772720e/packages/webapp/package.json)
- **TanStack**: 8 files

### Styles

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

### Interface

- **[Radix UI](https://seerepo.com/uses/radix-ui)**: 4 files
- **[React Hook Form](https://seerepo.com/uses/react-hook-form)**: 2 files
- **focus-trap-react**: 1 file
- **[react-error-boundary](https://seerepo.com/uses/react-error-boundary)**: 1 file

### Icons

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

## Support (packages/connect-ui)

### Validation

- **[Zod](https://seerepo.com/uses/zod)**: 3 files
- **[@hookform/resolvers](https://seerepo.com/uses/hookform-resolvers)**: 1 file

### Testing

- **Vitest**: 9 files
- **vitest-browser-react**: 3 files
- **axe-core**: 1 file

### Tools

- **type-fest**: 1 file

### Other

- **react-use**: 6 files
- **@tanstack/react-query**: 4 files
- **clsx**: 1 file
- **zustand**: 1 file

## Backend (packages/data-ingestion)

### Data

- **[Google Cloud](https://seerepo.com/uses/google-cloud)**: 1 file · [packages/shared/lib/services/file/storage/gcs.ts, line 1](https://github.com/NangoHQ/nango/blob/86f6921d0575223b6f856666b8ba4aad4772720e/packages/shared/lib/services/file/storage/gcs.ts#L1)

## Backend (packages/database)

### Data access

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

## Support (packages/database)

### Content

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

### Testing

- **Vitest**: 8 files

## Frontend (packages/design-system)

### The base

- **[React](https://seerepo.com/uses/react)**: 11 files · [in packages/webapp/package.json](https://github.com/NangoHQ/nango/blob/86f6921d0575223b6f856666b8ba4aad4772720e/packages/webapp/package.json)

### Styles

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

### Interface

- **[Radix UI](https://seerepo.com/uses/radix-ui)**: 7 files

### Icons

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

## Support (packages/design-system)

### Testing

- **Vitest**: 1 file

### Other

- **clsx**: 1 file

## Support (packages/egress)

### Testing

- **Vitest**: 1 file

### Other

- **undici**: 1 file

## Backend (packages/email)

### Services

- **Mailgun**: 1 file · [packages/email/lib/providers/mailgun.provider.ts, line 2](https://github.com/NangoHQ/nango/blob/86f6921d0575223b6f856666b8ba4aad4772720e/packages/email/lib/providers/mailgun.provider.ts#L2)

## Support (packages/email)

### Content

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

### Testing

- **Vitest**: 1 file

### Other

- **form-data**: 1 file

## Support (packages/feature-flags)

### Testing

- **Vitest**: 5 files

### Other

- **@openfeature/server-sdk**: 5 files

## Backend (packages/fleet)

### Data access

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

## Support (packages/fleet)

### Testing

- **Vitest**: 5 files

### Deploy

- **@aws-sdk/client-ecr**: 1 file
- **dd-trace**: 1 file

## Support (packages/frontend)

### Testing

- **Vitest**: 1 file

## Backend (packages/hosted-telemetry)

### Data access

- **[knex](https://seerepo.com/uses/knex)**: 6 files

## Support (packages/hosted-telemetry)

### Testing

- **Vitest**: 5 files

### Deploy

- **opentelemetry**: 2 files
- **dd-trace**: 1 file

### Other

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

## Backend (packages/internal-auth)

### The base

- **[Express](https://seerepo.com/uses/express)**: 2 files · [in packages/jobs/package.json](https://github.com/NangoHQ/nango/blob/86f6921d0575223b6f856666b8ba4aad4772720e/packages/jobs/package.json)

### Sign-in

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

## Support (packages/internal-auth)

### Validation

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

### Testing

- **Vitest**: 10 files

## Backend (packages/jobs)

### The base

- **[Express](https://seerepo.com/uses/express)**: 1 file · [in packages/jobs/package.json](https://github.com/NangoHQ/nango/blob/86f6921d0575223b6f856666b8ba4aad4772720e/packages/jobs/package.json)

### Data

- **@aws-sdk/client-sqs**: 3 files
- **[Redis](https://seerepo.com/uses/redis)**: 1 file · [packages/server/lib/utils/rateLimiterRedisClient.ts, line 1](https://github.com/NangoHQ/nango/blob/86f6921d0575223b6f856666b8ba4aad4772720e/packages/server/lib/utils/rateLimiterRedisClient.ts#L1)

### Services

- **[AWS S3](https://seerepo.com/uses/aws-s3)**: 1 file · [packages/shared/lib/services/file/storage/s3.ts, line 3](https://github.com/NangoHQ/nango/blob/86f6921d0575223b6f856666b8ba4aad4772720e/packages/shared/lib/services/file/storage/s3.ts#L3)

## Support (packages/jobs)

### Validation

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

### Testing

- **Vitest**: 20 files

### Deploy

- **dd-trace**: 9 files
- **[aws-sdk](https://seerepo.com/uses/aws-sdk)**: 2 files
- **@kubernetes/client-node**: 1 file

### Tools

- **type-fest**: 6 files
- **get-port**: 1 file

### Other

- **Axios**: 2 files
- **rate-limiter-flexible**: 1 file

## Backend (packages/keystore)

### Data access

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

## Support (packages/keystore)

### Testing

- **Vitest**: 1 file

## Backend (packages/kms)

### Data

- **[Google Cloud](https://seerepo.com/uses/google-cloud)**: 1 file · [packages/shared/lib/services/file/storage/gcs.ts, line 1](https://github.com/NangoHQ/nango/blob/86f6921d0575223b6f856666b8ba4aad4772720e/packages/shared/lib/services/file/storage/gcs.ts#L1)

### Sign-in

- **[@azure/identity](https://seerepo.com/uses/azure-identity)**: 1 file

## Support (packages/kms)

### Testing

- **Vitest**: 4 files

## Backend (packages/kvstore)

### Data

- **[Redis](https://seerepo.com/uses/redis)**: 1 file · [packages/server/lib/utils/rateLimiterRedisClient.ts, line 1](https://github.com/NangoHQ/nango/blob/86f6921d0575223b6f856666b8ba4aad4772720e/packages/server/lib/utils/rateLimiterRedisClient.ts#L1)

## Support (packages/kvstore)

### Testing

- **Vitest**: 8 files
- **testcontainers**: 1 file

## Backend (packages/lambda-runner)

### Services

- **[AWS S3](https://seerepo.com/uses/aws-s3)**: 1 file · [packages/shared/lib/services/file/storage/s3.ts, line 3](https://github.com/NangoHQ/nango/blob/86f6921d0575223b6f856666b8ba4aad4772720e/packages/shared/lib/services/file/storage/s3.ts#L3)

## Support (packages/lambda-runner)

### Validation

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

### Testing

- **Vitest**: 1 file

## Backend (packages/license)

### Sign-in

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

## Support (packages/license)

### Validation

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

### Testing

- **Vitest**: 1 file

## Backend (packages/logs)

### Data

- **OpenSearch**: 4 files · [packages/logs/lib/storage/openSearchClient.ts, line 1](https://github.com/NangoHQ/nango/blob/86f6921d0575223b6f856666b8ba4aad4772720e/packages/logs/lib/storage/openSearchClient.ts#L1)
- **Elastic**: 3 files · [packages/logs/lib/storage/elasticsearchClient.ts, line 1](https://github.com/NangoHQ/nango/blob/86f6921d0575223b6f856666b8ba4aad4772720e/packages/logs/lib/storage/elasticsearchClient.ts#L1)

## Support (packages/logs)

### Validation

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

### Testing

- **Vitest**: 10 files

### Deploy

- **opentelemetry**: 2 files

### Tools

- **type-fest**: 2 files

### Other

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

## Backend (packages/metering)

### Data

- **@aws-sdk/client-sqs**: 1 file

### Services

- **[AWS S3](https://seerepo.com/uses/aws-s3)**: 2 files · [packages/shared/lib/services/file/storage/s3.ts, line 3](https://github.com/NangoHQ/nango/blob/86f6921d0575223b6f856666b8ba4aad4772720e/packages/shared/lib/services/file/storage/s3.ts#L3)

## Support (packages/metering)

### Validation

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

### Testing

- **Vitest**: 2 files

### Deploy

- **dd-trace**: 5 files

### Other

- **node-cron**: 4 files
- **uuidv7**: 1 file

## Backend (packages/migrations)

### Data access

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

## Support (packages/migrations)

### Testing

- **Vitest**: 2 files

### Deploy

- **dd-trace**: 1 file

### Other

- **dayjs**: 1 file

## Support (packages/nango-yaml)

### Content

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

### Validation

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

### Testing

- **Vitest**: 5 files

### Other

- **ms**: 1 file

## Support (packages/node-client)

### Testing

- **Vitest**: 2 files

### Other

- **Axios**: 1 file

## Backend (packages/oauth-server)

### Data access

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

### Sign-in

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

## Support (packages/oauth-server)

### Validation

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

### Testing

- **Vitest**: 5 files

### Other

- **undici**: 1 file

## Backend (packages/orchestrator)

### The base

- **[Express](https://seerepo.com/uses/express)**: 1 file · [in packages/jobs/package.json](https://github.com/NangoHQ/nango/blob/86f6921d0575223b6f856666b8ba4aad4772720e/packages/jobs/package.json)

### Data access

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

## Support (packages/orchestrator)

### Validation

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

### Testing

- **Vitest**: 14 files

### Deploy

- **dd-trace**: 2 files

### Tools

- **type-fest**: 10 files
- **get-port**: 4 files

### Other

- **p-queue**: 1 file

## Backend (packages/persist)

### The base

- **[Express](https://seerepo.com/uses/express)**: 3 files · [in packages/jobs/package.json](https://github.com/NangoHQ/nango/blob/86f6921d0575223b6f856666b8ba4aad4772720e/packages/jobs/package.json)

## Support (packages/persist)

### Validation

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

### Testing

- **Vitest**: 2 files

### Deploy

- **dd-trace**: 5 files

### Other

- **node-fetch**: 1 file
- **qs**: 1 file

## Support (packages/providers)

### Content

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

### Testing

- **Vitest**: 1 file

## Backend (packages/pubsub)

### Data

- **@aws-sdk/client-sqs**: 1 file

## Support (packages/pubsub)

### Validation

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

### Testing

- **Vitest**: 4 files

### Deploy

- **dd-trace**: 1 file

### Tools

- **type-fest**: 1 file

### Other

- **@aws-sdk/client-sns**: 1 file
- **@stomp/stompjs**: 1 file
- **uuid**: 1 file
- **ws**: 1 file

## Backend (packages/records)

### Data access

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

## Support (packages/records)

### Validation

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

### Testing

- **Vitest**: 6 files

### Deploy

- **dd-trace**: 1 file

### Other

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

## Support (packages/runner-sdk)

### Validation

- **[Zod](https://seerepo.com/uses/zod)**: 7 files
- **[Ajv](https://seerepo.com/uses/ajv)**: 1 file
- **[ajv-formats](https://seerepo.com/uses/ajv-formats)**: 1 file
- **[json-schema](https://seerepo.com/uses/json-schema)**: 1 file

### Testing

- **Vitest**: 7 files

### Other

- **Axios**: 2 files
- **Lodash**: 1 file
- **parse-link-header**: 1 file
- **undici**: 1 file

## Backend (packages/runner)

### The base

- **[Express](https://seerepo.com/uses/express)**: 1 file · [in packages/jobs/package.json](https://github.com/NangoHQ/nango/blob/86f6921d0575223b6f856666b8ba4aad4772720e/packages/jobs/package.json)

## Support (packages/runner)

### The base

- **@trpc/server**: 1 file
- **botbuilder**: 1 file

### Validation

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

### Testing

- **Vitest**: 11 files

### Deploy

- **dd-trace**: 2 files

### Other

- **Axios**: 2 files
- **superjson**: 2 files
- **[tRPC](https://seerepo.com/uses/trpc)**: 1 file
- **undici**: 1 file
- **unzipper**: 1 file

## Backend (packages/sandbox)

### Data access

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

### Sign-in

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

### AI

- **@aws-sdk/client-bedrock-agentcore**: 1 file

## Support (packages/sandbox)

### Testing

- **Vitest**: 13 files

## Backend (packages/scheduler)

### Data access

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

## Support (packages/scheduler)

### Testing

- **Vitest**: 6 files

### Deploy

- **dd-trace**: 2 files

### Tools

- **type-fest**: 4 files

### Other

- **uuidv7**: 3 files

## Backend (packages/self-hosting)

### The base

- **[Express](https://seerepo.com/uses/express)**: 1 file · [in packages/jobs/package.json](https://github.com/NangoHQ/nango/blob/86f6921d0575223b6f856666b8ba4aad4772720e/packages/jobs/package.json)

### Data access

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

### Sign-in

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

## Support (packages/self-hosting)

### Testing

- **Vitest**: 3 files

### Deploy

- **dd-trace**: 1 file

### Other

- **@aws-sdk/client-kms**: 1 file

## Backend (packages/server)

### The base

- **[Express](https://seerepo.com/uses/express)**: 91 files · [in packages/jobs/package.json](https://github.com/NangoHQ/nango/blob/86f6921d0575223b6f856666b8ba4aad4772720e/packages/jobs/package.json)

### Data

- **@aws-sdk/client-sqs**: 2 files
- **[Redis](https://seerepo.com/uses/redis)**: 2 files · [packages/server/lib/utils/rateLimiterRedisClient.ts, line 1](https://github.com/NangoHQ/nango/blob/86f6921d0575223b6f856666b8ba4aad4772720e/packages/server/lib/utils/rateLimiterRedisClient.ts#L1)
- **connect-session-knex**: 1 file

### Data access

- **[knex](https://seerepo.com/uses/knex)**: 5 files

### Sign-in

- **[jsonwebtoken](https://seerepo.com/uses/jsonwebtoken)**: 9 files
- **[otpauth](https://seerepo.com/uses/otpauth)**: 8 files
- **[Passport](https://seerepo.com/uses/passport)**: 4 files
- **[express-session](https://seerepo.com/uses/express-session)**: 1 file
- **[helmet](https://seerepo.com/uses/helmet)**: 1 file
- **oauth**: 1 file
- **oidc-provider**: 1 file
- **passport-http**: 1 file
- **passport-local**: 1 file
- **simple-oauth2**: 1 file

### AI

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

### Services

- **[MCP](https://seerepo.com/uses/mcp)**: 11 files · [packages/server/lib/services/remoteMcp.service.ts, line 10](https://github.com/NangoHQ/nango/blob/86f6921d0575223b6f856666b8ba4aad4772720e/packages/server/lib/services/remoteMcp.service.ts#L10)
- **[OpenAI](https://seerepo.com/uses/openai)**: 1 file · [packages/server/lib/services/agentPlaygroundModel.service.ts, line 1](https://github.com/NangoHQ/nango/blob/86f6921d0575223b6f856666b8ba4aad4772720e/packages/server/lib/services/agentPlaygroundModel.service.ts#L1)

## Support (packages/server)

### Content

- **[fast-xml-parser](https://seerepo.com/uses/fast-xml-parser)**: 1 file
- **he**: 1 file

### Validation

- **[Zod](https://seerepo.com/uses/zod)**: 196 files
- **[json-schema](https://seerepo.com/uses/json-schema)**: 4 files
- **disposable-email-domains-js**: 1 file

### Testing

- **Vitest**: 333 files

### Deploy

- **dd-trace**: 46 files

### Tools

- **get-port**: 1 file
- **type-fest**: 1 file

### Other

- **Axios**: 38 files
- **node-cron**: 8 files
- **uuid**: 6 files
- **Lodash**: 5 files
- **rate-limiter-flexible**: 4 files
- **body-parser**: 3 files
- **@workos-inc/node**: 2 files
- **cookie-parser**: 2 files
- **cors**: 2 files
- **ws**: 2 files
- **.ENV**: 1 file
- **fuse.js**: 1 file
- **json-bigint**: 1 file
- **multer**: 1 file
- **qs**: 1 file
- **SemVer**: 1 file
- **serialize-error**: 1 file
- **ua-parser-js**: 1 file

## Backend (packages/shared)

### The base

- **[Express](https://seerepo.com/uses/express)**: 3 files · [in packages/jobs/package.json](https://github.com/NangoHQ/nango/blob/86f6921d0575223b6f856666b8ba4aad4772720e/packages/jobs/package.json)

### Data

- **[@azure/storage-blob](https://seerepo.com/uses/azure-storage-blob)**: 1 file
- **[Google Cloud](https://seerepo.com/uses/google-cloud)**: 1 file · [packages/shared/lib/services/file/storage/gcs.ts, line 1](https://github.com/NangoHQ/nango/blob/86f6921d0575223b6f856666b8ba4aad4772720e/packages/shared/lib/services/file/storage/gcs.ts#L1)

### Data access

- **[knex](https://seerepo.com/uses/knex)**: 22 files

### Sign-in

- **[jsonwebtoken](https://seerepo.com/uses/jsonwebtoken)**: 2 files
- **[@azure/identity](https://seerepo.com/uses/azure-identity)**: 1 file
- **oauth-1.0a**: 1 file
- **[otpauth](https://seerepo.com/uses/otpauth)**: 1 file
- **simple-oauth2**: 1 file

### Services

- **[AWS S3](https://seerepo.com/uses/aws-s3)**: 2 files · [packages/shared/lib/services/file/storage/s3.ts, line 3](https://github.com/NangoHQ/nango/blob/86f6921d0575223b6f856666b8ba4aad4772720e/packages/shared/lib/services/file/storage/s3.ts#L3)
- **[MCP](https://seerepo.com/uses/mcp)**: 1 file · [packages/server/lib/services/remoteMcp.service.ts, line 10](https://github.com/NangoHQ/nango/blob/86f6921d0575223b6f856666b8ba4aad4772720e/packages/server/lib/services/remoteMcp.service.ts#L10)
- **[PostHog](https://seerepo.com/uses/posthog)**: 1 file · [packages/webapp/src/utils/analytics.tsx, line 1](https://github.com/NangoHQ/nango/blob/86f6921d0575223b6f856666b8ba4aad4772720e/packages/webapp/src/utils/analytics.tsx#L1)

## Support (packages/shared)

### Content

- **[@xmldom/xmldom](https://seerepo.com/uses/xmldom-xmldom)**: 1 file
- **[fast-xml-parser](https://seerepo.com/uses/fast-xml-parser)**: 1 file

### Validation

- **[json-schema](https://seerepo.com/uses/json-schema)**: 4 files
- **[Zod](https://seerepo.com/uses/zod)**: 3 files
- **[Ajv](https://seerepo.com/uses/ajv)**: 1 file
- **[ajv-formats](https://seerepo.com/uses/ajv-formats)**: 1 file

### Testing

- **Vitest**: 84 files

### Deploy

- **dd-trace**: 4 files

### Tools

- **type-fest**: 6 files
- **Babel**: 1 file

### Other

- **uuid**: 12 files
- **Axios**: 5 files
- **Lodash**: 4 files
- **ms**: 4 files
- **undici**: 3 files
- **archiver**: 2 files
- **@hapi/boom**: 1 file
- **dayjs**: 1 file
- **follow-redirects**: 1 file
- **form-data**: 1 file
- **qs**: 1 file
- **SemVer**: 1 file
- **xml-crypto**: 1 file

## Support (packages/tasks)

### Validation

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

### Testing

- **Vitest**: 2 files

### Deploy

- **dd-trace**: 1 file

### Tools

- **type-fest**: 2 files

### Other

- **p-queue**: 1 file

## Support (packages/types)

### Validation

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

### Testing

- **Vitest**: 1 file

### Tools

- **type-fest**: 13 files

### Other

- **Axios**: 2 files

## Backend (packages/usage)

### Data

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

## Support (packages/usage)

### Validation

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

### Testing

- **Vitest**: 7 files

### Deploy

- **dd-trace**: 2 files

### Other

- **uuidv7**: 1 file

## Backend (packages/utils)

### The base

- **[Express](https://seerepo.com/uses/express)**: 2 files · [in packages/jobs/package.json](https://github.com/NangoHQ/nango/blob/86f6921d0575223b6f856666b8ba4aad4772720e/packages/jobs/package.json)

## Support (packages/utils)

### Validation

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

### Testing

- **Vitest**: 23 files

### Deploy

- **dd-trace**: 3 files
- **[winston](https://seerepo.com/uses/winston)**: 1 file

### Other

- **Axios**: 2 files
- **ms**: 2 files
- **serialize-error**: 2 files
- **@colors/colors**: 1 file
- **exponential-backoff**: 1 file
- **fast-safe-stringify**: 1 file
- **http-proxy-agent**: 1 file
- **https-proxy-agent**: 1 file
- **nanoid**: 1 file
- **truncate-json**: 1 file
- **undici**: 1 file

## Frontend (packages/webapp)

### The base

- **[Vite](https://seerepo.com/uses/vite)**: [in packages/webapp/package.json](https://github.com/NangoHQ/nango/blob/86f6921d0575223b6f856666b8ba4aad4772720e/packages/webapp/package.json)
- **[React](https://seerepo.com/uses/react)**: 194 files · [in packages/webapp/package.json](https://github.com/NangoHQ/nango/blob/86f6921d0575223b6f856666b8ba4aad4772720e/packages/webapp/package.json)
- **[react-router-dom](https://seerepo.com/uses/react-router-dom)**: 72 files

### Styles

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

### Interface

- **[React Hook Form](https://seerepo.com/uses/react-hook-form)**: 24 files
- **[Radix UI](https://seerepo.com/uses/radix-ui)**: 15 files
- **[tanstack](https://seerepo.com/uses/tanstack)**: 12 files
- **[sonner](https://seerepo.com/uses/sonner)**: 4 files
- **[recharts](https://seerepo.com/uses/recharts)**: 3 files
- **[Base UI](https://seerepo.com/uses/base-ui)**: 2 files
- **[input-otp](https://seerepo.com/uses/input-otp)**: 1 file
- **[Mantine](https://seerepo.com/uses/mantine)**: 1 file
- **[react-colorful](https://seerepo.com/uses/react-colorful)**: 1 file

### Icons

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

## Backend (packages/webapp)

### AI

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

### Services

- **[PostHog](https://seerepo.com/uses/posthog)**: 4 files · [packages/webapp/src/utils/analytics.tsx, line 1](https://github.com/NangoHQ/nango/blob/86f6921d0575223b6f856666b8ba4aad4772720e/packages/webapp/src/utils/analytics.tsx#L1)
- **[Sentry](https://seerepo.com/uses/sentry)**: 3 files · [packages/webapp/src/utils/sentry.tsx, line 1](https://github.com/NangoHQ/nango/blob/86f6921d0575223b6f856666b8ba4aad4772720e/packages/webapp/src/utils/sentry.tsx#L1)
- **[Stripe](https://seerepo.com/uses/stripe)**: 2 files · [packages/webapp/src/utils/stripe.ts, line 1](https://github.com/NangoHQ/nango/blob/86f6921d0575223b6f856666b8ba4aad4772720e/packages/webapp/src/utils/stripe.ts#L1)

## Support (packages/webapp)

### Content

- **[qrcode.react](https://seerepo.com/uses/qrcodereact)**: 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)**: 19 files
- **[@hookform/resolvers](https://seerepo.com/uses/hookform-resolvers)**: 17 files
- **[json-schema](https://seerepo.com/uses/json-schema)**: 8 files

### Testing

- **Vitest**: 53 files

### Tools

- **httpsnippet-lite**: 1 file

### Other

- **TanStack**: 33 files
- **react-helmet**: 32 files
- **react-use**: 15 files
- **nuqs**: 14 files
- **date-fns**: 7 files
- **zustand**: 5 files
- **fuse.js**: 3 files
- **Lodash**: 3 files
- **clsx**: 1 file

## Support (packages/webhooks)

### Testing

- **Vitest**: 7 files

### Other

- **Axios**: 1 file
- **dayjs**: 1 file
- **rate-limiter-flexible**: 1 file

## Other repos with a similar stack

- [twentyhq/twenty](https://seerepo.com/r/twentyhq/twenty/built): ClickHouse, Stripe, Vite, React, Express, Redis, AWS S3, MCP, OpenAI, react-router-dom, Sentry, Zod, json-schema, React Hook Form, react-error-boundary, @hookform/resolvers, nodemailer, opentelemetry, jose, aws-sdk, jsonwebtoken, Passport, express-session, ai, Base UI, input-otp, react-markdown, remark-gfm · [Compare](https://seerepo.com/compare/NangoHQ/nango/vs/twentyhq/twenty)
- [TryGhost/Ghost](https://seerepo.com/r/TryGhost/Ghost/built): Stripe, Vite, React, Mailgun, Express, Sentry, knex, Zod, js-yaml, Ajv, Tailwind CSS, class-variance-authority, tailwind-merge, Radix UI, React Hook Form, react-error-boundary, Lucide, @hookform/resolvers, nodemailer, jose, ajv-formats, jsonwebtoken, express-session, sonner, recharts, react-colorful · [Compare](https://seerepo.com/compare/NangoHQ/nango/vs/TryGhost/Ghost)
- [supabase/supabase](https://seerepo.com/r/supabase/supabase/built): Stripe, Vite, React, MCP, OpenAI, PostHog, Sentry, Zod, js-yaml, Tailwind CSS, class-variance-authority, Radix UI, React Hook Form, react-error-boundary, Lucide, @hookform/resolvers, ai, sonner, recharts, input-otp, react-markdown, remark-gfm · [Compare](https://seerepo.com/compare/NangoHQ/nango/vs/supabase/supabase)
- [paperclipai/paperclip](https://seerepo.com/r/paperclipai/paperclip/built): Vite, React, Express, AWS S3, MCP, OpenAI, react-router-dom, Sentry, Zod, Ajv, Tailwind CSS, class-variance-authority, tailwind-merge, Radix UI, Lucide, opentelemetry, @kubernetes/client-node, ajv-formats, ai, Base UI, react-markdown, remark-gfm · [Compare](https://seerepo.com/compare/NangoHQ/nango/vs/paperclipai/paperclip)
- [strapi/strapi](https://seerepo.com/r/strapi/strapi/built): Vite, React, MCP, react-router-dom, Sentry, knex, Zod, ora, Ajv, Tailwind CSS, Radix UI, nodemailer, aws-sdk, ajv-formats, jsonwebtoken, passport-local, ai, winston, sonner, react-colorful, @ai-sdk/react, react-markdown · [Compare](https://seerepo.com/compare/NangoHQ/nango/vs/strapi/strapi)
- [CherryHQ/cherry-studio](https://seerepo.com/r/CherryHQ/cherry-studio/built): Vite, React, TanStack, MCP, OpenAI, PostHog, Sentry, Zod, Tailwind CSS, class-variance-authority, tailwind-merge, Radix UI, React Hook Form, react-error-boundary, Lucide, @hookform/resolvers, opentelemetry, ai, fast-xml-parser, winston, qrcode.react, remark-gfm · [Compare](https://seerepo.com/compare/CherryHQ/cherry-studio/vs/NangoHQ/nango)

## Frequently asked questions

### What language is nango written in?

nango is written in TypeScript, with 406,593 written lines.

### What framework does nango use?

nango is built with Vite, React, TanStack, Express, @trpc/server, botbuilder, and react-router-dom.

The proof: [in packages/webapp/package.json](https://github.com/NangoHQ/nango/blob/86f6921d0575223b6f856666b8ba4aad4772720e/packages/webapp/package.json)

### What database does nango use?

nango stores its data in ClickHouse, @aws-sdk/client-sqs, OpenSearch, and Elastic and reaches it with knex.

### What does nango sign people in with?

nango signs people in with jose, @azure/identity, oidc-provider, jsonwebtoken, otpauth, Passport, express-session, helmet, oauth, passport-http, passport-local, simple-oauth2, and oauth-1.0a.

### What does nango take payments with?

nango takes payments with Stripe.

The proof: [packages/webapp/src/utils/stripe.ts, line 1](https://github.com/NangoHQ/nango/blob/86f6921d0575223b6f856666b8ba4aad4772720e/packages/webapp/src/utils/stripe.ts#L1)

### Does nango use AI?

Yes. nango uses AI through @aws-sdk/client-bedrock-agentcore, ai, PostHog, OpenAI, and @ai-sdk/react.

### What services does nango use?

nango stores files in AWS S3, watches its errors with Sentry, and uses Google Cloud, Mailgun, Redis, connect-session-knex, MCP, and @azure/storage-blob.

The proof: [packages/shared/lib/services/file/storage/s3.ts, line 3](https://github.com/NangoHQ/nango/blob/86f6921d0575223b6f856666b8ba4aad4772720e/packages/shared/lib/services/file/storage/s3.ts#L3)

### Does nango have tests?

Yes. nango has 784 test files and is tested with Vitest, vitest-browser-react, axe-core, and testcontainers.

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

The ones that share most of its stack: twentyhq/twenty, TryGhost/Ghost, and supabase/supabase.

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