Source: https://seerepo.com/r/Budibase/budibase/built
Markdown source: https://seerepo.com/r/Budibase/budibase/built.md
Description: budibase is a TypeScript repo built with Koa, @koa/router, Svelte, and koa-body. It stores its data in bull, bson, and MongoDB and reaches it with knex.

# What is budibase built with?

budibase is a TypeScript repo built with Koa, @koa/router, Svelte, and koa-body. It stores its data in bull, bson, and MongoDB, reaches it with knex, signs people in with @govtechsg/passport-openidconnect, jsonwebtoken, passport-google-oauth, bcrypt, cookies, and 5 more, stores files in AWS S3, uses AI through ai, @ai-sdk/svelte, OpenAI, chat, and ai-sdk, measures its use with PostHog, makes its content with csvtojson, google-spreadsheet, marked, sanitize-html, handlebars, and 12 more, validates its data with joi, Zod, yup, Ajv, @apidevtools/swagger-parser, and 3 more, is tested with testcontainers, nock, timekeeper, chance, Vitest, and 4 more, deploys with dd-trace, pino, pino-http, pino-pretty, rotating-file-stream, and 1 more, and uses Redis, aws-sdk, lru-cache, @chat-adapter/state-ioredis, Airtable, and 7 more. It has 626,923 written lines, with 902 test files.

Read on November 8, 2026, at commit e29a27a.

Repository: https://github.com/Budibase/budibase

## Support (/)

### Testing

- **testcontainers**: 1 file

### Other

- **proper-lockfile**: 1 file

## Backend (packages/backend-core)

### The base

- **Koa**: 9 files · [in packages/server/package.json](https://github.com/Budibase/budibase/blob/e29a27ac946c043fe7455af64b7f12b9031df72b/packages/server/package.json)

### Data

- **bull**: 3 files
- **[Redis](https://seerepo.com/uses/redis)**: 2 files · [packages/server/src/utilities/redis.ts, line 5](https://github.com/Budibase/budibase/blob/e29a27ac946c043fe7455af64b7f12b9031df72b/packages/server/src/utilities/redis.ts#L5)
- **[aws-sdk](https://seerepo.com/uses/aws-sdk)**: 1 file

### Data access

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

### Sign-in

- **@govtechsg/passport-openidconnect**: 2 files
- **[jsonwebtoken](https://seerepo.com/uses/jsonwebtoken)**: 2 files
- **passport-google-oauth**: 2 files
- **[bcrypt](https://seerepo.com/uses/bcrypt)**: 1 file
- **cookies**: 1 file
- **koa-passport**: 1 file
- **passport-local**: 1 file
- **passport-oauth2-refresh**: 1 file

### Services

- **[AWS S3](https://seerepo.com/uses/aws-s3)**: 1 file · [packages/backend-core/src/objectStore/utils.ts, line 4](https://github.com/Budibase/budibase/blob/e29a27ac946c043fe7455af64b7f12b9031df72b/packages/backend-core/src/objectStore/utils.ts#L4)
- **[PostHog](https://seerepo.com/uses/posthog)**: 1 file · [packages/builder/src/analytics/PosthogClient.ts, line 1](https://github.com/Budibase/budibase/blob/e29a27ac946c043fe7455af64b7f12b9031df72b/packages/builder/src/analytics/PosthogClient.ts#L1)

## Support (packages/backend-core)

### The base

- **@koa/router**: 2 files

### Content

- **csvtojson**: 1 file
- **google-spreadsheet**: 1 file

### Validation

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

### Testing

- **nock**: 7 files
- **timekeeper**: 6 files
- **testcontainers**: 3 files
- **chance**: 1 file

### Deploy

- **dd-trace**: 8 files
- **[pino](https://seerepo.com/uses/pino)**: 1 file
- **pino-http**: 1 file
- **pino-pretty**: 1 file
- **rotating-file-stream**: 1 file

### Other

- **uuid**: 7 files
- **Lodash**: 6 files
- **node-fetch**: 5 files
- **SemVer**: 2 files
- **.ENV**: 1 file
- **ip-address**: 1 file
- **object-sizeof**: 1 file
- **redlock**: 1 file
- **safe-regex**: 1 file
- **smithy**: 1 file
- **tar-fs**: 1 file
- **undici**: 1 file

## Frontend (packages/bbui)

### The base

- **[Svelte](https://seerepo.com/uses/svelte)**: 87 files

### Interface

- **easymde**: 2 files

## Support (packages/bbui)

### Content

- **[marked](https://seerepo.com/uses/marked)**: 1 file
- **[sanitize-html](https://seerepo.com/uses/sanitize-html)**: 1 file

### Testing

- **Vitest**: 5 files

### Other

- **dayjs**: 8 files
- **nanoid**: 1 file

## Frontend (packages/builder)

### The base

- **[Svelte](https://seerepo.com/uses/svelte)**: 440 files

### Styles

- **[@codemirror/theme-one-dark](https://seerepo.com/uses/codemirror-theme-one-dark)**: 1 file
- **@spectrum-css/vars**: 1 file

### Interface

- **[xyflow](https://seerepo.com/uses/xyflow)**: 21 files
- **[CodeMirror](https://seerepo.com/uses/codemirror)**: 9 files
- **[@dagrejs/dagre](https://seerepo.com/uses/dagrejs-dagre)**: 1 file

### Icons

- **remixicon**: 1 file

## Backend (packages/builder)

### AI

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

### Services

- **[PostHog](https://seerepo.com/uses/posthog)**: 1 file · [packages/builder/src/analytics/PosthogClient.ts, line 1](https://github.com/Budibase/budibase/blob/e29a27ac946c043fe7455af64b7f12b9031df72b/packages/builder/src/analytics/PosthogClient.ts#L1)

## Support (packages/builder)

### Content

- **[handlebars](https://seerepo.com/uses/handlebars)**: 1 file
- **[sanitize-html](https://seerepo.com/uses/sanitize-html)**: 1 file

### Validation

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

### Testing

- **Vitest**: 134 files
- **Testing Library**: 63 files

### Other

- **Lodash**: 63 files
- **dayjs**: 18 files
- **downloadjs**: 1 file
- **fast-json-patch**: 1 file
- **resize-observer-polyfill**: 1 file
- **socket.io-client**: 1 file
- **uuid**: 1 file

## Frontend (packages/cli)

### Interface

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

## Backend (packages/cli)

### Services

- **[PostHog](https://seerepo.com/uses/posthog)**: 1 file · [packages/builder/src/analytics/PosthogClient.ts, line 1](https://github.com/Budibase/budibase/blob/e29a27ac946c043fe7455af64b7f12b9031df72b/packages/builder/src/analytics/PosthogClient.ts#L1)

## Support (packages/cli)

### Content

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

### Deploy

- **docker-compose**: 4 files

### Tools

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

### Other

- **node-fetch**: 4 files
- **randomstring**: 2 files
- **tar**: 2 files
- **.ENV**: 1 file
- **chalk**: 1 file
- **download**: 1 file
- **open**: 1 file

## Frontend (packages/frontend-core)

### The base

- **[Svelte](https://seerepo.com/uses/svelte)**: 78 files

## Backend (packages/frontend-core)

### AI

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

## Support (packages/frontend-core)

### Content

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

### Validation

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

### Testing

- **Vitest**: 10 files

### Other

- **Lodash**: 3 files
- **dayjs**: 1 file
- **socket.io-client**: 1 file

## Backend (packages/pro)

### The base

- **Koa**: 5 files · [in packages/server/package.json](https://github.com/Budibase/budibase/blob/e29a27ac946c043fe7455af64b7f12b9031df72b/packages/server/package.json)

### Data

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

### Sign-in

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

### AI

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

### Services

- **[OpenAI](https://seerepo.com/uses/openai)**: 1 file · [packages/pro/src/ai/llm.ts, line 2](https://github.com/Budibase/budibase/blob/e29a27ac946c043fe7455af64b7f12b9031df72b/packages/pro/src/ai/llm.ts#L2)

## Support (packages/pro)

### The base

- **@koa/router**: 2 files

### Validation

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

### Testing

- **timekeeper**: 6 files
- **Jest**: 1 file
- **nock**: 1 file

### Deploy

- **dd-trace**: 8 files

### Other

- **Lodash**: 3 files
- **node-fetch**: 2 files
- **dayjs**: 1 file
- **isolated-vm**: 1 file
- **memorystream**: 1 file
- **scim2-parse-filter**: 1 file

## Frontend (packages/server)

### The base

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

## Backend (packages/server)

### The base

- **Koa**: 32 files · [in packages/server/package.json](https://github.com/Budibase/budibase/blob/e29a27ac946c043fe7455af64b7f12b9031df72b/packages/server/package.json)

### Data

- **bull**: 7 files
- **bson**: 3 files
- **[aws-sdk](https://seerepo.com/uses/aws-sdk)**: 2 files
- **[MongoDB](https://seerepo.com/uses/mongodb)**: 2 files · [packages/server/src/integrations/mongodb.ts, line 23](https://github.com/Budibase/budibase/blob/e29a27ac946c043fe7455af64b7f12b9031df72b/packages/server/src/integrations/mongodb.ts#L23)
- **[Redis](https://seerepo.com/uses/redis)**: 2 files · [packages/server/src/utilities/redis.ts, line 5](https://github.com/Budibase/budibase/blob/e29a27ac946c043fe7455af64b7f12b9031df72b/packages/server/src/utilities/redis.ts#L5)
- **@chat-adapter/state-ioredis**: 1 file
- **Airtable**: 1 file · [packages/server/src/integrations/airtable.ts, line 10](https://github.com/Budibase/budibase/blob/e29a27ac946c043fe7455af64b7f12b9031df72b/packages/server/src/integrations/airtable.ts#L10)
- **Elastic**: 1 file · [packages/server/src/integrations/elasticsearch.ts, line 10](https://github.com/Budibase/budibase/blob/e29a27ac946c043fe7455af64b7f12b9031df72b/packages/server/src/integrations/elasticsearch.ts#L10)
- **[Google Cloud](https://seerepo.com/uses/google-cloud)**: 1 file · [packages/server/src/integrations/firebase.ts, line 9](https://github.com/Budibase/budibase/blob/e29a27ac946c043fe7455af64b7f12b9031df72b/packages/server/src/integrations/firebase.ts#L9)
- **mssql**: 1 file
- **[MySQL](https://seerepo.com/uses/mysql)**: 1 file · [packages/server/src/integrations/mysql.ts, line 33](https://github.com/Budibase/budibase/blob/e29a27ac946c043fe7455af64b7f12b9031df72b/packages/server/src/integrations/mysql.ts#L33)
- **[oracledb](https://seerepo.com/uses/oracledb)**: 1 file
- **[Postgres](https://seerepo.com/uses/postgres)**: 1 file · [packages/server/src/integrations/postgres.ts, line 34](https://github.com/Budibase/budibase/blob/e29a27ac946c043fe7455af64b7f12b9031df72b/packages/server/src/integrations/postgres.ts#L34)
- **Snowflake**: 1 file · [packages/server/src/integrations/snowflake.ts, line 10](https://github.com/Budibase/budibase/blob/e29a27ac946c043fe7455af64b7f12b9031df72b/packages/server/src/integrations/snowflake.ts#L10)

### Data access

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

### Sign-in

- **@azure/msal-node**: 1 file
- **cookies**: 1 file
- **[jsonwebtoken](https://seerepo.com/uses/jsonwebtoken)**: 1 file

### AI

- **[ai](https://seerepo.com/uses/ai)**: 30 files
- **chat**: 6 files
- **[ai-sdk](https://seerepo.com/uses/ai-sdk)**: 3 files

### Services

- **[OpenAI](https://seerepo.com/uses/openai)**: 2 files · [packages/pro/src/ai/llm.ts, line 2](https://github.com/Budibase/budibase/blob/e29a27ac946c043fe7455af64b7f12b9031df72b/packages/pro/src/ai/llm.ts#L2)

## Support (packages/server)

### The base

- **@koa/router**: 8 files
- **koa-body**: 1 file

### Content

- **imapflow**: 4 files
- **[pdf-parse](https://seerepo.com/uses/pdf-parse)**: 2 files
- **[xml2js](https://seerepo.com/uses/xml2js)**: 2 files
- **csvtojson**: 1 file
- **google-spreadsheet**: 1 file
- **[html-to-text](https://seerepo.com/uses/html-to-text)**: 1 file
- **[js-yaml](https://seerepo.com/uses/js-yaml)**: 1 file
- **mailparser**: 1 file
- **[xlsx](https://seerepo.com/uses/xlsx)**: 1 file

### Validation

- **[joi](https://seerepo.com/uses/joi)**: 18 files
- **[Zod](https://seerepo.com/uses/zod)**: 13 files
- **@apidevtools/swagger-parser**: 1 file
- **[jsonschema](https://seerepo.com/uses/jsonschema)**: 1 file

### Testing

- **nock**: 39 files
- **timekeeper**: 18 files
- **testcontainers**: 11 files
- **supertest**: 5 files
- **Jest**: 1 file
- **jest-extended**: 1 file

### Deploy

- **dd-trace**: 19 files

### Tools

- **openapi-types**: 4 files
- **@slack/types**: 1 file
- **chokidar**: 1 file
- **curlconverter**: 1 file
- **esbuild**: 1 file
- **swagger-jsdoc**: 1 file

### Other

- **Lodash**: 49 files
- **uuid**: 17 files
- **node-fetch**: 16 files
- **tar**: 5 files
- **@slack/web-api**: 4 files
- **chat-adapter**: 4 files
- **koa-useragent**: 4 files
- **Socket.io**: 4 files
- **dayjs**: 3 files
- **archiver**: 2 files
- **koa-send**: 2 files
- **SemVer**: 2 files
- **undici**: 2 files
- **.ENV**: 1 file
- **@koa/cors**: 1 file
- **buffer**: 1 file
- **bull-board**: 1 file
- **content-disposition**: 1 file
- **execa**: 1 file
- **extract-zip**: 1 file
- **global-agent**: 1 file
- **http-graceful-shutdown**: 1 file
- **isolated-vm**: 1 file
- **koa-compress**: 1 file
- **koa2-ratelimit**: 1 file
- **memorystream**: 1 file
- **object-sizeof**: 1 file
- **serialize-error**: 1 file
- **tmp**: 1 file
- **worker-farm**: 1 file

## Support (packages/shared-core)

### Validation

- **cron-validate**: 1 file

### Other

- **Lodash**: 3 files
- **dayjs**: 1 file

## Support (packages/string-templates)

### Content

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

### Testing

- **timekeeper**: 3 files

### Other

- **dayjs**: 1 file
- **Lodash**: 1 file

## Backend (packages/types)

### The base

- **Koa**: 1 file · [in packages/server/package.json](https://github.com/Budibase/budibase/blob/e29a27ac946c043fe7455af64b7f12b9031df72b/packages/server/package.json)

### Data

- **bull**: 1 file

### Data access

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

### AI

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

### Services

- **[OpenAI](https://seerepo.com/uses/openai)**: 1 file · [packages/pro/src/ai/llm.ts, line 2](https://github.com/Budibase/budibase/blob/e29a27ac946c043fe7455af64b7f12b9031df72b/packages/pro/src/ai/llm.ts#L2)

## Support (packages/types)

### Content

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

### Validation

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

### Other

- **scim-patch**: 3 files
- **koa-useragent**: 1 file
- **Lodash**: 1 file
- **redlock**: 1 file

## Backend (packages/worker)

### The base

- **Koa**: 4 files · [in packages/server/package.json](https://github.com/Budibase/budibase/blob/e29a27ac946c043fe7455af64b7f12b9031df72b/packages/server/package.json)

### Sign-in

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

## Support (packages/worker)

### The base

- **@koa/router**: 5 files
- **koa-body**: 1 file

### Content

- **[yaml](https://seerepo.com/uses/yaml)**: 2 files
- **[Cheerio](https://seerepo.com/uses/cheerio)**: 1 file
- **ical-generator**: 1 file
- **mailparser**: 1 file
- **[marked](https://seerepo.com/uses/marked)**: 1 file
- **[nodemailer](https://seerepo.com/uses/nodemailer)**: 1 file

### Validation

- **[joi](https://seerepo.com/uses/joi)**: 10 files
- **[email-validator](https://seerepo.com/uses/email-validator)**: 1 file

### Testing

- **nock**: 2 files
- **supertest**: 2 files
- **timekeeper**: 2 files
- **testcontainers**: 1 file

### Deploy

- **dd-trace**: 1 file

### Other

- **Lodash**: 3 files
- **node-fetch**: 3 files
- **scim-patch**: 2 files
- **.ENV**: 1 file
- **global-agent**: 1 file
- **http-graceful-shutdown**: 1 file
- **koa-compress**: 1 file
- **koa-useragent**: 1 file
- **scim2-parse-filter**: 1 file
- **smtp-server**: 1 file
- **superagent**: 1 file
- **uuid**: 1 file

## Other repos with a similar stack

- [novuhq/novu](https://seerepo.com/r/novuhq/novu/built): Redis, aws-sdk, lru-cache, MongoDB, Google Cloud, jsonwebtoken, bcrypt, pino, marked, sanitize-html, xyflow, CodeMirror, ai, handlebars, Zod, Ajv, highlight.js, chat, html-to-text, mailparser, nodemailer · [Compare](https://seerepo.com/compare/Budibase/budibase/vs/novuhq/novu)
- [n8n-io/n8n](https://seerepo.com/r/n8n-io/n8n/built): Redis, PostHog, lru-cache, OpenAI, MongoDB, MySQL, Postgres, jsonwebtoken, sanitize-html, CodeMirror, ai, Zod, Ajv, yaml, highlight.js, pdf-parse, html-to-text, nodemailer, Cheerio · [Compare](https://seerepo.com/compare/Budibase/budibase/vs/n8n-io/n8n)
- [twentyhq/twenty](https://seerepo.com/r/twentyhq/twenty/built): Redis, aws-sdk, AWS S3, OpenAI, Postgres, jsonwebtoken, bcrypt, marked, sanitize-html, xyflow, @dagrejs/dagre, ai, Zod, @azure/msal-node, ai-sdk, html-to-text, nodemailer · [Compare](https://seerepo.com/compare/Budibase/budibase/vs/twentyhq/twenty)
- [langfuse/langfuse](https://seerepo.com/r/langfuse/langfuse/built): Redis, aws-sdk, AWS S3, PostHog, lru-cache, OpenAI, Google Cloud, Postgres, dd-trace, CodeMirror, ai, Zod, Ajv, yaml, highlight.js, ai-sdk, nodemailer · [Compare](https://seerepo.com/compare/Budibase/budibase/vs/langfuse/langfuse)
- [nocodb/nocodb](https://seerepo.com/r/nocodb/nocodb/built): bull, Redis, aws-sdk, lru-cache, Postgres, knex, jsonwebtoken, passport-local, marked, CodeMirror, ai, handlebars, Zod, Ajv, xlsx, nodemailer · [Compare](https://seerepo.com/compare/Budibase/budibase/vs/nocodb/nocodb)
- [directus/directus](https://seerepo.com/r/directus/directus/built): Redis, lru-cache, OpenAI, Google Cloud, knex, jsonwebtoken, joi, pino, pino-http, pino-pretty, marked, sanitize-html, ai, Zod, js-yaml, nodemailer · [Compare](https://seerepo.com/compare/Budibase/budibase/vs/directus/directus)

## Frequently asked questions

### What language is budibase written in?

budibase is written in TypeScript, with 626,923 written lines.

### What framework does budibase use?

budibase is built with Koa, @koa/router, Svelte, and koa-body.

The proof: [in packages/server/package.json](https://github.com/Budibase/budibase/blob/e29a27ac946c043fe7455af64b7f12b9031df72b/packages/server/package.json)

### What database does budibase use?

budibase stores its data in bull, bson, and MongoDB and reaches it with knex.

### What does budibase sign people in with?

budibase signs people in with @govtechsg/passport-openidconnect, jsonwebtoken, passport-google-oauth, bcrypt, cookies, koa-passport, passport-local, passport-oauth2-refresh, @azure/msal-node, and koa-session.

### Does budibase use AI?

Yes. budibase uses AI through ai, @ai-sdk/svelte, OpenAI, chat, and ai-sdk.

### What services does budibase use?

budibase stores files in AWS S3, measures its use with PostHog, and uses Redis, aws-sdk, lru-cache, @chat-adapter/state-ioredis, Airtable, Elastic, Google Cloud, mssql, MySQL, oracledb, Postgres, and Snowflake.

The proof: [packages/backend-core/src/objectStore/utils.ts, line 4](https://github.com/Budibase/budibase/blob/e29a27ac946c043fe7455af64b7f12b9031df72b/packages/backend-core/src/objectStore/utils.ts#L4)

### Does budibase have tests?

Yes. budibase has 902 test files and is tested with testcontainers, nock, timekeeper, chance, Vitest, Testing Library, Jest, supertest, and jest-extended.

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

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