Source: https://seerepo.com/r/medusajs/medusa/built
Markdown source: https://seerepo.com/r/medusajs/medusa/built.md
Description: medusa is a TypeScript repo built with Vite, Express, React, and react-router-dom. It stores its data in bullmq.

# What is medusa built with?

medusa is a TypeScript repo built with Vite, Express, React, and react-router-dom. It stores its data in bullmq, signs people in with express-session, jsonwebtoken, jwks-rsa, oauth4webapi, and openid-client, takes payments with Stripe, makes its content with qrcode, yaml, js-yaml, json-2-csv, csv-parse, and 2 more, validates its data with Zod, @hookform/resolvers, Ajv, openapi3-ts, and zod-validation-error, is tested with Vitest, Testing Library, supertest, msw, and Faker, deploys with winston, morgan, and OpenTelemetry, and uses connect-redis, Redis, Postgres, and aws-sdk. It has 1,150,054 written lines, with 1,628 test files.

Read on November 6, 2026, at commit 0f90146.

Repository: https://github.com/medusajs/medusa

## Frontend (/)

### Styles

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

## Frontend (packages/admin/admin-bundler)

### The base

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

### Styles

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

## Backend (packages/admin/admin-bundler)

### The base

- **[Express](https://seerepo.com/uses/express)**: 2 files · [in packages/medusa/package.json](https://github.com/medusajs/medusa/blob/0f9014650066193280e0cbc4f3898c02319fffc6/packages/medusa/package.json)

## Support (packages/admin/admin-bundler)

### Tools

- **@vitejs/plugin-react**: 2 files
- **get-port**: 1 file

### Other

- **compression**: 1 file
- **outdent**: 1 file

## Frontend (packages/admin/admin-sdk)

### The base

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

## Support (packages/admin/admin-sdk)

### Validation

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

## Frontend (packages/admin/admin-vite-plugin)

### The base

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

## Support (packages/admin/admin-vite-plugin)

### Testing

- **Vitest**: 5 files

### Tools

- **magic-string**: 2 files
- **Babel**: 1 file

### Other

- **outdent**: 16 files
- **fdir**: 1 file
- **picocolors**: 1 file

## Frontend (packages/admin/dashboard)

### The base

- **[React](https://seerepo.com/uses/react)**: 476 files
- **[react-router-dom](https://seerepo.com/uses/react-router-dom)**: 365 files

### Interface

- **[React Hook Form](https://seerepo.com/uses/react-hook-form)**: 208 files
- **tanstack**: 108 files
- **[Radix UI](https://seerepo.com/uses/radix-ui)**: 20 files
- **[dnd-kit](https://seerepo.com/uses/dnd-kit)**: 16 files
- **[motion](https://seerepo.com/uses/motion)**: 8 files
- **react-currency-input-field**: 8 files
- **react-country-flag**: 4 files
- **[cmdk](https://seerepo.com/uses/cmdk)**: 2 files
- **[react-helmet-async](https://seerepo.com/uses/react-helmet-async)**: 2 files
- **@hookform/error-message**: 1 file
- **@uiw/react-json-view**: 1 file
- **Ariakit**: 1 file

## Support (packages/admin/dashboard)

### Content

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

### Validation

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

### Testing

- **Vitest**: 33 files
- **Testing Library**: 8 files

### Other

- **react-i18next**: 639 files
- **[TanStack](https://seerepo.com/uses/tanstack)**: 128 files
- **i18next**: 49 files
- **date-fns**: 10 files
- **Lodash**: 6 files
- **copy-to-clipboard**: 5 files
- **match-sorter**: 2 files
- **bignumber.js**: 1 file
- **dequal**: 1 file
- **i18next-browser-languagedetector**: 1 file

## Frontend (packages/cli/create-medusa-app)

### Interface

- **[ora](https://seerepo.com/uses/ora)**: 5 files
- **[boxen](https://seerepo.com/uses/boxen)**: 3 files

## Support (packages/cli/create-medusa-app)

### Content

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

### Deploy

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

### Tools

- **Inquirer**: 4 files
- **commander**: 2 files
- **wait-on**: 1 file

### Other

- **terminal-link**: 5 files
- **chalk**: 4 files
- **node-emoji**: 3 files
- **slugify**: 2 files
- **open**: 1 file

## Support (packages/cli/http-types-generator)

### Tools

- **TypeScript**: 6 files
- **commander**: 3 files
- **glob**: 2 files
- **Prettier**: 1 file

### Other

- **pluralize**: 1 file

## Frontend (packages/cli/medusa-cli)

### Interface

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

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

### The base

- **[Express](https://seerepo.com/uses/express)**: [in packages/medusa/package.json](https://github.com/medusajs/medusa/blob/0f9014650066193280e0cbc4f3898c02319fffc6/packages/medusa/package.json)

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

### Deploy

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

### Tools

- **glob**: 2 files
- **Inquirer**: 1 file
- **resolve-cwd**: 1 file
- **ts-node**: 1 file
- **tsconfig-paths**: 1 file

### Other

- **fs-exists-cached**: 2 files
- **.ENV**: 1 file
- **configstore**: 1 file
- **execa**: 1 file
- **fs-extra**: 1 file
- **is-valid-path**: 1 file
- **stack-trace**: 1 file
- **ulid**: 1 file

## Support (packages/cli/oas/medusa-oas-cli)

### Content

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

### Validation

- **openapi3-ts**: 5 files

### Tools

- **commander**: 3 files

### Other

- **execa**: 1 file

## Support (packages/core/core-flows)

### Content

- **json-2-csv**: 6 files
- **csv-parse**: 1 file

### Tools

- **expect-type**: 1 file
- **TypeScript**: 1 file

## Backend (packages/core/framework)

### The base

- **[Express](https://seerepo.com/uses/express)**: 9 files · [in packages/medusa/package.json](https://github.com/medusajs/medusa/blob/0f9014650066193280e0cbc4f3898c02319fffc6/packages/medusa/package.json)

### Data

- **connect-redis**: 1 file
- **[Redis](https://seerepo.com/uses/redis)**: 1 file · [packages/core/framework/src/http/express-loader.ts, line 9](https://github.com/medusajs/medusa/blob/0f9014650066193280e0cbc4f3898c02319fffc6/packages/core/framework/src/http/express-loader.ts#L9)

### Sign-in

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

## Support (packages/core/framework)

### Validation

- **zod-validation-error**: 1 file

### Testing

- **supertest**: 3 files

### Deploy

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

### Tools

- **chokidar**: 1 file
- **glob**: 1 file
- **tsconfig-paths**: 1 file
- **TypeScript**: 1 file

### Other

- **compression**: 2 files
- **cookie-parser**: 1 file
- **cors**: 1 file
- **http-errors**: 1 file
- **lodash.memoize**: 1 file
- **path-to-regexp**: 1 file
- **ulid**: 1 file

## Support (packages/core/js-sdk)

### Testing

- **msw**: 3 files

### Other

- **fetch-event-stream**: 1 file
- **qs**: 1 file

## Support (packages/core/orchestration)

### Other

- **ulid**: 1 file

## Support (packages/core/query)

### Other

- **GraphQL**: 1 file

## Frontend (packages/core/types)

### The base

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

## Backend (packages/core/types)

### The base

- **[Express](https://seerepo.com/uses/express)**: 1 file · [in packages/medusa/package.json](https://github.com/medusajs/medusa/blob/0f9014650066193280e0cbc4f3898c02319fffc6/packages/medusa/package.json)

### Sign-in

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

## Support (packages/core/types)

### Other

- **bignumber.js**: 1 file

## Backend (packages/core/utils)

### The base

- **[Express](https://seerepo.com/uses/express)**: 1 file · [in packages/medusa/package.json](https://github.com/medusajs/medusa/blob/0f9014650066193280e0cbc4f3898c02319fffc6/packages/medusa/package.json)

### Data

- **[Postgres](https://seerepo.com/uses/postgres)**: 1 file · [packages/core/utils/src/pg/index.ts, line 17](https://github.com/medusajs/medusa/blob/0f9014650066193280e0cbc4f3898c02319fffc6/packages/core/utils/src/pg/index.ts#L17)

### Sign-in

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

## Support (packages/core/utils)

### Tools

- **expect-type**: 19 files
- **AutoCannon**: 1 file
- **dotenv-expand**: 1 file
- **graphql-codegen**: 1 file
- **graphql-tools**: 1 file

### Other

- **GraphQL**: 7 files
- **bignumber.js**: 3 files
- **ulid**: 2 files
- **.ENV**: 1 file
- **pluralize**: 1 file

## Support (packages/core/workflows-sdk)

### Tools

- **expect-type**: 1 file

### Other

- **ulid**: 4 files

## Backend (packages/deps)

### Data

- **[Postgres](https://seerepo.com/uses/postgres)**: 1 file · [packages/core/utils/src/pg/index.ts, line 17](https://github.com/medusajs/medusa/blob/0f9014650066193280e0cbc4f3898c02319fffc6/packages/core/utils/src/pg/index.ts#L17)

## Support (packages/deps)

### Validation

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

### Deploy

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

### Other

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

## Frontend (packages/design-system/icons)

### The base

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

## Support (packages/design-system/icons)

### Testing

- **Testing Library**: 465 files

### Other

- **resize-observer-polyfill**: 1 file

## Frontend (packages/design-system/toolbox)

### The base

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

## Support (packages/design-system/toolbox)

### Tools

- **ts-dedent**: 2 files
- **commander**: 1 file
- **svgr**: 1 file

### Other

- **fs-extra**: 3 files
- **Axios**: 2 files
- **.ENV**: 1 file
- **axios-retry**: 1 file
- **picocolors**: 1 file

## Frontend (packages/design-system/ui-preset)

### Styles

- **[Tailwind CSS](https://seerepo.com/uses/tailwind-css)**: 2 files
- **tailwindcss-animate**: 1 file

## Frontend (packages/design-system/ui)

### The base

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

### Styles

- **[Tailwind CSS](https://seerepo.com/uses/tailwind-css)**
- **@tailwindcss/node**: 1 file
- **[PostCSS](https://seerepo.com/uses/postcss)**: 1 file
- **[tailwind-merge](https://seerepo.com/uses/tailwind-merge)**: 1 file

### Interface

- **[Radix UI](https://seerepo.com/uses/radix-ui)**: 23 files
- **react-aria**: 11 files
- **react-stately**: 8 files
- **[TanStack](https://seerepo.com/uses/tanstack)**: 8 files
- **[dnd-kit](https://seerepo.com/uses/dnd-kit)**: 3 files
- **[sonner](https://seerepo.com/uses/sonner)**: 3 files
- **prism-react-renderer**: 1 file
- **react-currency-input-field**: 1 file

## Support (packages/design-system/ui)

### Content

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

### Testing

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

### Other

- **@internationalized/date**: 7 files
- **clsx**: 1 file
- **copy-to-clipboard**: 1 file
- **dequal**: 1 file
- **resize-observer-polyfill**: 1 file

## Support (packages/eslint-plugin)

### Tools

- **typescript-eslint**: 72 files
- **ESLint**: 6 files
- **TypeScript**: 3 files

### Other

- **cron-parser**: 1 file

## Frontend (packages/medusa-telemetry)

### Interface

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

## Support (packages/medusa-telemetry)

### Tools

- **ci-info**: 1 file

### Other

- **Axios**: 1 file
- **axios-retry**: 1 file
- **configstore**: 1 file
- **is-docker**: 1 file

## Frontend (packages/medusa)

### Interface

- **[boxen](https://seerepo.com/uses/boxen)**: 3 files
- **@inquirer/confirm**: 2 files

## Backend (packages/medusa)

### The base

- **[Express](https://seerepo.com/uses/express)**: 13 files · [in packages/medusa/package.json](https://github.com/medusajs/medusa/blob/0f9014650066193280e0cbc4f3898c02319fffc6/packages/medusa/package.json)

### Sign-in

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

## Support (packages/medusa)

### Validation

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

### Testing

- **supertest**: 1 file

### Tools

- **yalc**: 2 files
- **chokidar**: 1 file
- **glob**: 1 file
- **SWC**: 1 file

### Other

- **multer**: 2 files
- **node-schedule**: 1 file
- **qs**: 1 file
- **request-ip**: 1 file
- **slugify**: 1 file
- **ulid**: 1 file

## Backend (packages/modules/auth)

### Sign-in

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

## Support (packages/modules/auth)

### Testing

- **msw**: 1 file

## Backend (packages/modules/cache-redis)

### Data

- **[Redis](https://seerepo.com/uses/redis)**: 3 files · [packages/core/framework/src/http/express-loader.ts, line 9](https://github.com/medusajs/medusa/blob/0f9014650066193280e0cbc4f3898c02319fffc6/packages/core/framework/src/http/express-loader.ts#L9)

## Support (packages/modules/caching)

### Other

- **awilix**: 2 files
- **fast-json-stable-stringify**: 1 file
- **GraphQL**: 1 file
- **xxhash-wasm**: 1 file

## Backend (packages/modules/event-bus-redis)

### Data

- **[Redis](https://seerepo.com/uses/redis)**: 3 files · [packages/core/framework/src/http/express-loader.ts, line 9](https://github.com/medusajs/medusa/blob/0f9014650066193280e0cbc4f3898c02319fffc6/packages/core/framework/src/http/express-loader.ts#L9)
- **[bullmq](https://seerepo.com/uses/bullmq)**: 2 files

## Support (packages/modules/fulfillment)

### Other

- **ulid**: 1 file

## Backend (packages/modules/payment)

### Services

- **[Stripe](https://seerepo.com/uses/stripe)**: 2 files · [packages/modules/payment/src/providers/payment-medusa/services/medusa-payments.ts, line 2](https://github.com/medusajs/medusa/blob/0f9014650066193280e0cbc4f3898c02319fffc6/packages/modules/payment/src/providers/payment-medusa/services/medusa-payments.ts#L2)

## Support (packages/modules/payment)

### Other

- **ulid**: 1 file

## Support (packages/modules/product)

### Testing

- **Faker**: 2 files

## Support (packages/modules/providers/auth-github)

### Testing

- **msw**: 1 file

## Backend (packages/modules/providers/auth-google)

### Sign-in

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

## Support (packages/modules/providers/auth-google)

### Testing

- **msw**: 1 file

## Backend (packages/modules/providers/auth-oidc)

### Sign-in

- **oauth4webapi**: 1 file
- **openid-client**: 1 file

## Backend (packages/modules/providers/caching-redis)

### Data

- **[Redis](https://seerepo.com/uses/redis)**: 3 files · [packages/core/framework/src/http/express-loader.ts, line 9](https://github.com/medusajs/medusa/blob/0f9014650066193280e0cbc4f3898c02319fffc6/packages/core/framework/src/http/express-loader.ts#L9)

## Support (packages/modules/providers/caching-redis)

### Other

- **awilix**: 1 file
- **xxhash-wasm**: 1 file

## Backend (packages/modules/providers/file-s3)

### Data

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

## Support (packages/modules/providers/file-s3)

### Other

- **Axios**: 1 file
- **ulid**: 1 file

## Backend (packages/modules/providers/locking-redis)

### Data

- **[Redis](https://seerepo.com/uses/redis)**: 3 files · [packages/core/framework/src/http/express-loader.ts, line 9](https://github.com/medusajs/medusa/blob/0f9014650066193280e0cbc4f3898c02319fffc6/packages/core/framework/src/http/express-loader.ts#L9)

## Support (packages/modules/providers/notification-sendgrid)

### Content

- **@sendgrid/mail**: 1 file

## Backend (packages/modules/providers/payment-stripe)

### Services

- **[Stripe](https://seerepo.com/uses/stripe)**: 2 files · [packages/modules/payment/src/providers/payment-medusa/services/medusa-payments.ts, line 2](https://github.com/medusajs/medusa/blob/0f9014650066193280e0cbc4f3898c02319fffc6/packages/modules/payment/src/providers/payment-medusa/services/medusa-payments.ts#L2)

## Backend (packages/modules/user)

### Sign-in

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

## Support (packages/modules/workflow-engine-inmemory)

### Other

- **ulid**: 2 files
- **cron-parser**: 1 file

## Backend (packages/modules/workflow-engine-redis)

### Data

- **[Redis](https://seerepo.com/uses/redis)**: 4 files · [packages/core/framework/src/http/express-loader.ts, line 9](https://github.com/medusajs/medusa/blob/0f9014650066193280e0cbc4f3898c02319fffc6/packages/core/framework/src/http/express-loader.ts#L9)
- **[bullmq](https://seerepo.com/uses/bullmq)**: 2 files

## Support (packages/modules/workflow-engine-redis)

### Other

- **ulid**: 2 files

## Frontend (packages/plugins/draft-order)

### The base

- **[React](https://seerepo.com/uses/react)**: 34 files
- **[react-router-dom](https://seerepo.com/uses/react-router-dom)**: 25 files

### Interface

- **[React Hook Form](https://seerepo.com/uses/react-hook-form)**: 13 files
- **[Radix UI](https://seerepo.com/uses/radix-ui)**: 4 files
- **@uiw/react-json-view**: 1 file
- **Ariakit**: 1 file

## Support (packages/plugins/draft-order)

### Validation

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

### Other

- **[TanStack](https://seerepo.com/uses/tanstack)**: 13 files
- **date-fns**: 2 files
- **match-sorter**: 2 files
- **dequal**: 1 file
- **Lodash**: 1 file
- **react-i18next**: 1 file

## Frontend (packages/plugins/loyalty)

### The base

- **[React](https://seerepo.com/uses/react)**: 106 files
- **[react-router-dom](https://seerepo.com/uses/react-router-dom)**: 41 files

### Interface

- **[React Hook Form](https://seerepo.com/uses/react-hook-form)**: 51 files
- **[TanStack](https://seerepo.com/uses/tanstack)**: 16 files
- **[dnd-kit](https://seerepo.com/uses/dnd-kit)**: 3 files
- **[Radix UI](https://seerepo.com/uses/radix-ui)**: 2 files
- **react-currency-input-field**: 2 files
- **@hookform/error-message**: 1 file
- **@uiw/react-json-view**: 1 file
- **Ariakit**: 1 file
- **[motion](https://seerepo.com/uses/motion)**: 1 file

## Support (packages/plugins/loyalty)

### Validation

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

### Other

- **@tanstack/react-query**: 14 files
- **date-fns**: 5 files
- **copy-to-clipboard**: 1 file
- **i18next**: 1 file
- **match-sorter**: 1 file

## Other repos with a similar stack

- [TryGhost/Ghost](https://seerepo.com/r/TryGhost/Ghost/built): Vite, Express, React, bullmq, Stripe, Tailwind CSS, Zod, React Hook Form, Radix UI, dnd-kit, cmdk, @hookform/resolvers, Ajv, js-yaml, express-session, jsonwebtoken, tailwind-merge, sonner · [Compare](https://seerepo.com/compare/medusajs/medusa/vs/TryGhost/Ghost)
- [strapi/strapi](https://seerepo.com/r/strapi/strapi/built): Vite, React, react-router-dom, aws-sdk, Tailwind CSS, Zod, Radix UI, dnd-kit, motion, Ajv, ora, boxen, winston, prompts, jsonwebtoken, sonner, prismjs · [Compare](https://seerepo.com/compare/medusajs/medusa/vs/strapi/strapi)
- [twentyhq/twenty](https://seerepo.com/r/twentyhq/twenty/built): Vite, Express, React, react-router-dom, connect-redis, Redis, Postgres, bullmq, Stripe, aws-sdk, Zod, React Hook Form, @hookform/resolvers, express-session, jsonwebtoken, PostCSS, openid-client · [Compare](https://seerepo.com/compare/medusajs/medusa/vs/twentyhq/twenty)
- [LibreChat-AI/LibreChat](https://seerepo.com/r/LibreChat-AI/LibreChat/built): Vite, Express, React, connect-redis, Redis, Tailwind CSS, Zod, Radix UI, Ariakit, winston, js-yaml, express-session, jsonwebtoken, tailwindcss-animate, tailwind-merge, jwks-rsa · [Compare](https://seerepo.com/compare/LibreChat-AI/LibreChat/vs/medusajs/medusa)
- [supabase/supabase](https://seerepo.com/r/supabase/supabase/built): Vite, React, Stripe, Tailwind CSS, Zod, React Hook Form, tanstack, Radix UI, dnd-kit, motion, cmdk, @hookform/resolvers, js-yaml, sonner, prism-react-renderer · [Compare](https://seerepo.com/compare/medusajs/medusa/vs/supabase/supabase)
- [infiniflow/ragflow](https://seerepo.com/r/infiniflow/ragflow/built): React, Redis, Postgres, Tailwind CSS, Zod, React Hook Form, tanstack, Radix UI, cmdk, qrcode, @hookform/resolvers, Ajv, OpenTelemetry, tailwind-merge, sonner · [Compare](https://seerepo.com/compare/infiniflow/ragflow/vs/medusajs/medusa)

## Frequently asked questions

### What language is medusa written in?

medusa is written in TypeScript, with 1,150,054 written lines.

### What framework does medusa use?

medusa is built with Vite, Express, React, and react-router-dom.

### What database does medusa use?

medusa stores its data in bullmq.

### What does medusa sign people in with?

medusa signs people in with express-session, jsonwebtoken, jwks-rsa, oauth4webapi, and openid-client.

### What does medusa take payments with?

medusa takes payments with Stripe.

The proof: [packages/modules/payment/src/providers/payment-medusa/services/medusa-payments.ts, line 2](https://github.com/medusajs/medusa/blob/0f9014650066193280e0cbc4f3898c02319fffc6/packages/modules/payment/src/providers/payment-medusa/services/medusa-payments.ts#L2)

### What services does medusa use?

medusa uses connect-redis, Redis, Postgres, and aws-sdk.

### Does medusa have tests?

Yes. medusa has 1,628 test files and is tested with Vitest, Testing Library, supertest, msw, and Faker.

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

The ones that share most of its stack: TryGhost/Ghost, strapi/strapi, 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.
