Source: https://seerepo.com/r/getredash/redash/built
Markdown source: https://seerepo.com/r/getredash/redash/built.md
Description: redash is a Python repo built with React, universal-router, Flask, flask-restful, werkzeug, and 1 more. It stores its data in rq and Postgres.

# What is redash built with?

redash is a Python repo built with React, universal-router, Flask, flask-restful, werkzeug, and 1 more. It stores its data in rq and Postgres, reaches it with SQLAlchemy, sqlalchemy-utils, flask-migrate, and flask-sqlalchemy, signs people in with flask-login, authlib, cryptography, itsdangerous, pyjwt, and 1 more, watches its errors with Sentry, makes its content with jinja2, markupsafe, mustache, xlsxwriter, disposable-email-domains, and 2 more, validates its data with email-validator, wtforms, prop-types, flask-wtf, and jsonschema, is tested with @playwright/test, Testing Library, and mockdate, deploys with Gunicorn and supervisor, and uses psycopg2-binary, Redis, ibm-db, oracledb, pyodbc, and 1 more. It has 120,621 written lines, with 266 test files.

Read on November 8, 2026, at commit 09740ea.

Repository: https://github.com/getredash/redash

## Frontend (/)

### The base

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

### Styles

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

### Interface

- **[antd](https://seerepo.com/uses/antd)**: 128 files
- **react-ace**: 2 files
- **ace-builds**: 1 file
- **[D3](https://seerepo.com/uses/d3)**: 1 file
- **[react-grid-layout](https://seerepo.com/uses/react-grid-layout)**: 1 file
- **react-resizable**: 1 file
- **[react-virtualized](https://seerepo.com/uses/react-virtualized)**: 1 file

### Icons

- **[Ant Design](https://seerepo.com/uses/ant-design)**: 26 files

## Backend (/)

### The base

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

### Data

- **[psycopg2-binary](https://seerepo.com/uses/psycopg2-binary)**
- **rq**: 9 files
- **[Redis](https://seerepo.com/uses/redis)**: 4 files · [redash/utils/redis_version.py, line 3](https://github.com/getredash/redash/blob/09740eaf6359af4ac4f932b620f28add2299142e/redash/utils/redis_version.py#L3)
- **[Postgres](https://seerepo.com/uses/postgres)**: 2 files · [redash/query_runner/pg.py, line 1](https://github.com/getredash/redash/blob/09740eaf6359af4ac4f932b620f28add2299142e/redash/query_runner/pg.py#L1)
- **ibm-db**: 1 file
- **[oracledb](https://seerepo.com/uses/oracledb)**: 1 file
- **pyodbc**: 1 file
- **rq-scheduler**: 1 file

### Data access

- **[SQLAlchemy](https://seerepo.com/uses/sqlalchemy)**: 30 files
- **sqlalchemy-utils**: 6 files
- **flask-migrate**: 2 files
- **flask-sqlalchemy**: 1 file

### Sign-in

- **flask-login**: 16 files
- **[authlib](https://seerepo.com/uses/authlib)**: 2 files
- **[cryptography](https://seerepo.com/uses/cryptography)**: 2 files
- **[itsdangerous](https://seerepo.com/uses/itsdangerous)**: 2 files
- **[pyjwt](https://seerepo.com/uses/pyjwt)**: 2 files
- **passlib**: 1 file

### Services

- **[Sentry](https://seerepo.com/uses/sentry)**: 1 file · [redash/utils/sentry.py, line 3](https://github.com/getredash/redash/blob/09740eaf6359af4ac4f932b620f28add2299142e/redash/utils/sentry.py#L3)

## Support (/)

### The base

- **flask-restful**: 12 files
- **[werkzeug](https://seerepo.com/uses/werkzeug)**: 5 files
- **[history](https://seerepo.com/uses/history)**: 1 file

### Content

- **[jinja2](https://seerepo.com/uses/jinja2)**
- **[markupsafe](https://seerepo.com/uses/markupsafe)**
- **[mustache](https://seerepo.com/uses/mustache)**: 2 files
- **[xlsxwriter](https://seerepo.com/uses/xlsxwriter)**: 2 files
- **disposable-email-domains**: 1 file
- **[dompurify](https://seerepo.com/uses/dompurify)**: 1 file
- **[marked](https://seerepo.com/uses/marked)**: 1 file

### Validation

- **[email-validator](https://seerepo.com/uses/email-validator)**
- **wtforms**
- **[prop-types](https://seerepo.com/uses/prop-types)**: 134 files
- **flask-wtf**: 1 file
- **[jsonschema](https://seerepo.com/uses/jsonschema)**: 1 file

### Testing

- **@playwright/test**: 75 files
- **Testing Library**: 5 files
- **mockdate**: 1 file

### Deploy

- **[Gunicorn](https://seerepo.com/uses/gunicorn)**
- **supervisor**

### Tools

- **click**: 8 files
- **debugpy**: 1 file
- **sql-formatter**: 1 file

### Other

- **aniso8601**
- **blinker**
- **gevent**
- **greenlet**
- **paramiko**
- **pyopenssl**
- **python-dotenv**
- **tzlocal**
- **ua-parser**
- **Lodash**: 167 files
- **requests**: 31 files
- **funcy**: 15 files
- **python-dateutil**: 7 files
- **pyyaml**: 7 files
- **use-debounce**: 5 files
- **debug**: 4 files
- **query-string**: 4 files
- **sqlparse**: 4 files
- **Axios**: 2 files
- **flask-talisman**: 2 files
- **pytz**: 2 files
- **url**: 2 files
- **backoff**: 1 file
- **flask-limiter**: 1 file
- **hoist-non-react-statics**: 1 file
- **ifaddr**: 1 file
- **mousetrap**: 1 file
- **parsedatetime**: 1 file
- **pypd**: 1 file
- **regex**: 1 file
- **restrictedpython**: 1 file
- **semver**: 1 file
- **sshtunnel**: 1 file
- **urllib3**: 1 file
- **user-agents**: 1 file

## Frontend (viz-lib)

### The base

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

### Styles

- **[classnames](https://seerepo.com/uses/classnames)**: 12 files

### Interface

- **[antd](https://seerepo.com/uses/antd)**: 28 files
- **[D3](https://seerepo.com/uses/d3)**: 10 files
- **[Plotly](https://seerepo.com/uses/plotly)**: 4 files
- **[Leaflet](https://seerepo.com/uses/leaflet)**: 3 files
- **d3-cloud**: 1 file
- **[dnd-kit](https://seerepo.com/uses/dnd-kit)**: 1 file
- **leaflet.markercluster**: 1 file
- **react-plotly.js**: 1 file

### Icons

- **[Ant Design](https://seerepo.com/uses/ant-design)**: 5 files

## Support (viz-lib)

### Content

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

### Validation

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

### Testing

- **Testing Library**: 20 files

### Other

- **Lodash**: 93 files
- **use-debounce**: 18 files
- **chroma-js**: 4 files
- **numeral**: 3 files
- **tinycolor2**: 2 files
- **Axios**: 1 file
- **debug**: 1 file
- **hoist-non-react-statics**: 1 file

## Other repos with a similar stack

- [apache/superset](https://seerepo.com/r/apache/superset/built): React, Flask, psycopg2-binary, Redis, Postgres, oracledb, werkzeug, classnames, antd, react-ace, ace-builds, D3, Ant Design, SQLAlchemy, flask-migrate, flask-login, authlib, cryptography, itsdangerous, pyjwt, jinja2, markupsafe, xlsxwriter, dompurify, email-validator, prop-types, jsonschema, Gunicorn · [Compare](https://seerepo.com/compare/apache/superset/vs/getredash/redash)
- [apache/airflow](https://seerepo.com/r/apache/airflow/built): React, Flask, psycopg2-binary, Redis, ibm-db, oracledb, werkzeug, SQLAlchemy, flask-sqlalchemy, flask-login, cryptography, pyjwt, jinja2, wtforms, flask-wtf, jsonschema · [Compare](https://seerepo.com/compare/apache/airflow/vs/getredash/redash)
- [datawhalechina/hello-agents](https://seerepo.com/r/datawhalechina/hello-agents/built): React, Flask, psycopg2-binary, Redis, Postgres, oracledb, D3, SQLAlchemy, jinja2, dompurify, marked, email-validator, jsonschema, Plotly, Leaflet · [Compare](https://seerepo.com/compare/datawhalechina/hello-agents/vs/getredash/redash)
- [ray-project/ray](https://seerepo.com/r/ray-project/ray/built): React, Flask, Redis, werkzeug, SQLAlchemy, cryptography, itsdangerous, pyjwt, jinja2, markupsafe, jsonschema, Gunicorn, Plotly · [Compare](https://seerepo.com/compare/getredash/redash/vs/ray-project/ray)
- [Significant-Gravitas/AutoGPT](https://seerepo.com/r/Significant-Gravitas/AutoGPT/built): React, psycopg2-binary, Redis, Postgres, Sentry, SQLAlchemy, cryptography, pyjwt, jinja2, jsonschema · [Compare](https://seerepo.com/compare/getredash/redash/vs/Significant-Gravitas/AutoGPT)
- [run-llama/llama_index](https://seerepo.com/r/run-llama/llama_index/built): psycopg2-binary, Redis, ibm-db, oracledb, SQLAlchemy, cryptography, pyjwt, jinja2, markupsafe, jsonschema · [Compare](https://seerepo.com/compare/getredash/redash/vs/run-llama/llama_index)

## Frequently asked questions

### What language is redash written in?

redash is written in Python, with 120,621 written lines.

### What framework does redash use?

redash is built with React, universal-router, Flask, flask-restful, werkzeug, and history.

### What database does redash use?

redash stores its data in rq and Postgres and reaches it with SQLAlchemy, sqlalchemy-utils, flask-migrate, and flask-sqlalchemy.

### What does redash sign people in with?

redash signs people in with flask-login, authlib, cryptography, itsdangerous, pyjwt, and passlib.

### What services does redash use?

redash watches its errors with Sentry and uses psycopg2-binary, Redis, ibm-db, oracledb, pyodbc, and rq-scheduler.

The proof: [redash/utils/sentry.py, line 3](https://github.com/getredash/redash/blob/09740eaf6359af4ac4f932b620f28add2299142e/redash/utils/sentry.py#L3)

### Does redash have tests?

Yes. redash has 266 test files and is tested with @playwright/test, Testing Library, and mockdate.

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

The ones that share most of its stack: apache/superset, apache/airflow, and datawhalechina/hello-agents.

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