Source: https://seerepo.com/r/microsoft/data-formulator/built
Markdown source: https://seerepo.com/r/microsoft/data-formulator/built.md
Description: data-formulator is a TypeScript repo built with Vite, React, react-router-dom, Flask, AIOHTTP, and 1 more.

# What is data-formulator built with?

data-formulator is a TypeScript repo built with Vite, React, react-router-dom, Flask, AIOHTTP, and 1 more. It stores its data in pyarrow, DuckDB, azure-storage-blob, MongoDB, and Postgres, signs people in with azure-keyvault-secrets, azure-identity, oidc-client-ts, flask-session, google-auth, and 1 more, uses AI through openai, litellm, and scikit-learn, connects to Google, makes its content with lxml, openpyxl, xlrd, prismjs, react-markdown, and 6 more, is tested with Vitest and Testing Library, deploys with boto3, and uses db-dtypes, psycopg2-binary, pymongo, azure-cosmos, azure-kusto-data, and 3 more. It has 135,656 written lines, with 188 test files.

Read on November 6, 2026, at commit 5477f0e.

Repository: https://github.com/microsoft/data-formulator

## Frontend

### The base

- **[Vite](https://seerepo.com/uses/vite)**: [in package.json](https://github.com/microsoft/data-formulator/blob/5477f0e236426dc8f74a498ec400414fba7fbc0f/package.json)
- **[React](https://seerepo.com/uses/react)**: 70 files · [in package.json](https://github.com/microsoft/data-formulator/blob/5477f0e236426dc8f74a498ec400414fba7fbc0f/package.json)
- **[react-router-dom](https://seerepo.com/uses/react-router-dom)**: 1 file

### Interface

- **[MUI](https://seerepo.com/uses/mui)**: 61 files
- **[react-dnd](https://seerepo.com/uses/react-dnd)**: 4 files
- **vega-embed**: 3 files
- **[@uiw/react-codemirror](https://seerepo.com/uses/uiw-react-codemirror)**: 2 files
- **[codemirror](https://seerepo.com/uses/codemirror)**: 2 files
- **[D3](https://seerepo.com/uses/d3)**: 2 files
- **[react-virtuoso](https://seerepo.com/uses/react-virtuoso)**: 2 files
- **Vega**: 2 files
- **allotment**: 1 file
- **[react-dnd-html5-backend](https://seerepo.com/uses/react-dnd-html5-backend)**: 1 file
- **[tiptap](https://seerepo.com/uses/tiptap)**: 1 file
- **tiptap-markdown**: 1 file
- **vega-lite**: 1 file

### Icons

- **@mui/icons-material**: 48 files

## Backend

### The base

- **[Flask](https://seerepo.com/uses/flask)**: 31 files

### Data

- **db-dtypes**
- **[psycopg2-binary](https://seerepo.com/uses/psycopg2-binary)**
- **pymongo**
- **[pyarrow](https://seerepo.com/uses/pyarrow)**: 22 files
- **[DuckDB](https://seerepo.com/uses/duckdb)**: 6 files
- **[azure-storage-blob](https://seerepo.com/uses/azure-storage-blob)**: 4 files
- **[MongoDB](https://seerepo.com/uses/mongodb)**: 3 files · [py-src/data_formulator/data_loader/mongodb_data_loader.py, line 7](https://github.com/microsoft/data-formulator/blob/5477f0e236426dc8f74a498ec400414fba7fbc0f/py-src/data_formulator/data_loader/mongodb_data_loader.py#L7)
- **[Postgres](https://seerepo.com/uses/postgres)**: 3 files · [py-src/data_formulator/data_loader/postgresql_data_loader.py, line 1](https://github.com/microsoft/data-formulator/blob/5477f0e236426dc8f74a498ec400414fba7fbc0f/py-src/data_formulator/data_loader/postgresql_data_loader.py#L1)
- **azure-cosmos**: 1 file
- **azure-kusto-data**: 1 file
- **clickhouse-connect**: 1 file
- **[localforage](https://seerepo.com/uses/localforage)**: 1 file
- **[pymysql](https://seerepo.com/uses/pymysql)**: 1 file

### Sign-in

- **azure-keyvault-secrets**
- **[azure-identity](https://seerepo.com/uses/azure-identity)**: 4 files
- **oidc-client-ts**: 2 files
- **flask-session**: 1 file
- **google-auth**: 1 file
- **[pyjwt](https://seerepo.com/uses/pyjwt)**: 1 file

### AI

- **[openai](https://seerepo.com/uses/openai)**
- **[litellm](https://seerepo.com/uses/litellm)**: 1 file
- **[scikit-learn](https://seerepo.com/uses/scikit-learn)**: 1 file

### Services

- **[Google](https://seerepo.com/uses/google)**: 1 file · [py-src/data_formulator/data_loader/bigquery_data_loader.py, line 1](https://github.com/microsoft/data-formulator/blob/5477f0e236426dc8f74a498ec400414fba7fbc0f/py-src/data_formulator/data_loader/bigquery_data_loader.py#L1)

## Support

### The base

- **[AIOHTTP](https://seerepo.com/uses/aiohttp)**
- **[flask-cors](https://seerepo.com/uses/flask-cors)**

### Content

- **[lxml](https://seerepo.com/uses/lxml)**
- **[openpyxl](https://seerepo.com/uses/openpyxl)**
- **[xlrd](https://seerepo.com/uses/xlrd)**
- **[prismjs](https://seerepo.com/uses/prismjs)**: 2 files
- **[react-markdown](https://seerepo.com/uses/react-markdown)**: 2 files
- **[beautifulsoup4](https://seerepo.com/uses/beautifulsoup4)**: 1 file
- **[exceljs](https://seerepo.com/uses/exceljs)**: 1 file
- **html2canvas**: 1 file
- **[katex](https://seerepo.com/uses/katex)**: 1 file
- **markdown-to-jsx**: 1 file
- **[remark-gfm](https://seerepo.com/uses/remark-gfm)**: 1 file

### Testing

- **Vitest**: 45 files
- **Testing Library**: 16 files

### Deploy

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

### Tools

- **TypeScript**: 2 files

### Other

- **react-i18next**: 45 files
- **react-redux**: 33 files
- **pandas**: 24 files
- **Lodash**: 11 files
- **requests**: 11 files
- **pyyaml**: 8 files
- **NumPy**: 4 files
- **@reduxjs/toolkit**: 3 files
- **i18next**: 3 files
- **redux-persist**: 3 files
- **flask-limiter**: 1 file
- **i18next-browser-languagedetector**: 1 file
- **python-dotenv**: 1 file
- **vm-browserify**: 1 file
- **yfinance**: 1 file

## Other repos with a similar stack

- [bojieli/ai-agent-book](https://seerepo.com/r/bojieli/ai-agent-book/built): Vite, React, Flask, psycopg2-binary, pyarrow, azure-storage-blob, Postgres, Google, AIOHTTP, D3, google-auth, OpenAI, litellm, scikit-learn, lxml, openpyxl, xlrd, react-markdown, beautifulsoup4, katex, remark-gfm · [Compare](https://seerepo.com/compare/bojieli/ai-agent-book/vs/microsoft/data-formulator)
- [apache/superset](https://seerepo.com/r/apache/superset/built): React, Flask, psycopg2-binary, pyarrow, MongoDB, Postgres, clickhouse-connect, pymysql, Google, AIOHTTP, flask-cors, D3, pyjwt, openpyxl, xlrd, react-markdown, beautifulsoup4, markdown-to-jsx, remark-gfm, boto3 · [Compare](https://seerepo.com/compare/apache/superset/vs/microsoft/data-formulator)
- [apache/airflow](https://seerepo.com/r/apache/airflow/built): Vite, React, react-router-dom, Flask, psycopg2-binary, pymongo, pyarrow, DuckDB, azure-storage-blob, clickhouse-connect, pymysql, Google, AIOHTTP, azure-identity, flask-session, google-auth, pyjwt, beautifulsoup4, boto3 · [Compare](https://seerepo.com/compare/apache/airflow/vs/microsoft/data-formulator)
- [datawhalechina/hello-agents](https://seerepo.com/r/datawhalechina/hello-agents/built): Vite, React, react-router-dom, Flask, psycopg2-binary, Postgres, AIOHTTP, D3, OpenAI, scikit-learn, lxml, openpyxl, xlrd, react-markdown, beautifulsoup4, html2canvas, katex · [Compare](https://seerepo.com/compare/datawhalechina/hello-agents/vs/microsoft/data-formulator)
- [run-llama/llama_index](https://seerepo.com/r/run-llama/llama_index/built): psycopg2-binary, pyarrow, DuckDB, azure-storage-blob, clickhouse-connect, pymysql, Google, AIOHTTP, azure-identity, pyjwt, OpenAI, litellm, scikit-learn, lxml, xlrd, beautifulsoup4, boto3 · [Compare](https://seerepo.com/compare/microsoft/data-formulator/vs/run-llama/llama_index)
- [Significant-Gravitas/AutoGPT](https://seerepo.com/r/Significant-Gravitas/AutoGPT/built): React, psycopg2-binary, pyarrow, Postgres, pymysql, Google, AIOHTTP, pyjwt, OpenAI, openpyxl, react-markdown, beautifulsoup4, katex, remark-gfm, boto3 · [Compare](https://seerepo.com/compare/microsoft/data-formulator/vs/Significant-Gravitas/AutoGPT)

## Frequently asked questions

### What language is data-formulator written in?

data-formulator is written in TypeScript, with 135,656 written lines.

### What framework does data-formulator use?

data-formulator is built with Vite, React, react-router-dom, Flask, AIOHTTP, and flask-cors.

The proof: [in package.json](https://github.com/microsoft/data-formulator/blob/5477f0e236426dc8f74a498ec400414fba7fbc0f/package.json)

### What database does data-formulator use?

data-formulator stores its data in pyarrow, DuckDB, azure-storage-blob, MongoDB, and Postgres.

### What does data-formulator sign people in with?

data-formulator signs people in with azure-keyvault-secrets, azure-identity, oidc-client-ts, flask-session, google-auth, and pyjwt.

### Does data-formulator use AI?

Yes. data-formulator uses AI through openai, litellm, and scikit-learn.

### What services does data-formulator use?

data-formulator connects to Google and uses db-dtypes, psycopg2-binary, pymongo, azure-cosmos, azure-kusto-data, clickhouse-connect, localforage, and pymysql.

The proof: [py-src/data_formulator/data_loader/bigquery_data_loader.py, line 1](https://github.com/microsoft/data-formulator/blob/5477f0e236426dc8f74a498ec400414fba7fbc0f/py-src/data_formulator/data_loader/bigquery_data_loader.py#L1)

### Does data-formulator have tests?

Yes. data-formulator has 188 test files and is tested with Vitest and Testing Library.

### Which repos have a stack like data-formulator's?

The ones that share most of its stack: bojieli/ai-agent-book, apache/superset, and apache/airflow.

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