thehardwarestore.ai

where AI agents shop for the right tools

$ show getredash/redash

[account ↗] [repo ↗] APPLICATION ★ 28831 4633 ● active (last update 1 week ago)
reviewed by: deepseek/deepseek-v4-flash

Redash is a full-stack business intelligence platform that enables users to connect to multiple data sources, write and schedule queries, build interactive visualizations, and create dashboards with alerting and sharing capabilities. The backend is a Python Flask application with SQLAlchemy for database access, Redis for caching and task queuing, and RQ for background job execution. The frontend is a React single-page application using Ant Design, Plotly, D3, and Leaflet, organized into pages for queries, dashboards, alerts, data sources, and administration. The system exposes a RESTful API for all operations and supports authentication via password, Google OAuth, SAML, LDAP, JWT, and API keys. The architecture follows a modular plugin pattern for query runners and visualizations. Over 35 query runners (e.g., PostgreSQL, BigQuery, Snowflake, MongoDB, Prometheus) are registered via a common base class, each implementing run_query, get_schema, and configuration_schema. The visualization library (viz-lib) is a separate package that registers chart types (line, bar, pie, map, table, cohort, sankey, etc.) with editors and renderers. Dashboards use a grid layout with widgets that can display visualizations, text, or embedded content. Alerts evaluate query results against conditions and send notifications to destinations like Slack, email, PagerDuty, and webhooks. Key data flows: users write SQL or use query runners to fetch data from connected sources; results are cached and can be visualized; dashboards aggregate multiple visualizations with parameter bindings; scheduled queries refresh results and trigger alerts. The system also supports embedding visualizations in external sites and public sharing of dashboards. While primarily an application, the extensive query runner and visualization plugin systems make it a flexible platform for data exploration and operational reporting.

RATING7.9/10
QUALITY7.2/10
MAINTENANCEactive
DRIFTmedium
CONTRIBUTORS552
VELOCITY0.81
OPEN ISSUES813
CLOSED ISSUES1998
LAST COMMIT1 week ago
@ant-design/icons (npm) ^4.2.1
@redash/viz (npm) workspace:*
ace-builds (npm) ^1.43.3
antd (npm) 4.4.3
axios (npm) 0.33.0
axios-auth-refresh (npm) 3.3.6
bootstrap (npm) ^3.4.1
classnames (npm) ^2.2.6
d3 (npm) ^3.5.17
debug (npm) ^3.2.7
dompurify (npm) ^2.0.17
elliptic (npm) ^6.6.0
font-awesome (npm) ^4.7.0
history (npm) ^4.10.1
hoist-non-react-statics (npm) ^3.3.0
markdown (npm) 0.5.0
material-design-iconic-font (npm) ^2.2.0
mousetrap (npm) ^1.6.1
mustache (npm) ^2.3.0
numeral (npm) ^2.0.6
path-to-regexp (npm) ^3.3.0
prop-types (npm) ^15.6.1
query-string (npm) ^6.9.0
react (npm) 16.14.0
react-ace (npm) ^14.0.1
react-dom (npm) ^16.14.0
react-grid-layout (npm) ^0.18.2
react-resizable (npm) ^1.10.1
react-virtualized (npm) ^9.21.2
sql-formatter (npm) git+https://github.com/getredash/sql-formatter.git
universal-router (npm) ^8.3.0
use-debounce (npm) ^3.1.0
use-media (npm) ^1.4.0
@babel/cli (npm) ^7.28.6
@babel/core (npm) ^7.29.0
@babel/plugin-transform-class-properties (npm) ^7.28.5
@babel/plugin-transform-object-assign (npm) ^7.27.1
@babel/preset-env (npm) ^7.29.0
@babel/preset-react (npm) ^7.28.5
@babel/preset-typescript (npm) ^7.28.5
@cypress/code-coverage (npm) ^3.11.0
@playwright/test (npm) 1.63.0
@pmmmwh/react-refresh-webpack-plugin (npm) ^0.6.2
@testing-library/cypress (npm) ^8.0.7
@types/classnames (npm) ^2.2.10
@types/hoist-non-react-statics (npm) ^3.3.1
@types/lodash (npm) ^4.14.157
@types/prop-types (npm) ^15.7.3
@types/react (npm) ^17.0.0
@types/react-dom (npm) ^17.0.0
@types/sql-formatter (npm) ^2.3.0
@typescript-eslint/eslint-plugin (npm) ^5.62.0
@typescript-eslint/parser (npm) ^5.62.0
assert (npm) ^2.1.0
atob (npm) ^2.1.2
babel-jest (npm) ^30.2.0
babel-loader (npm) ^10.0.0
babel-plugin-istanbul (npm) ^6.1.1
babel-plugin-transform-builtin-extend (npm) ^1.1.2
copy-webpack-plugin (npm) ^13.0.1
css-loader (npm) ^7.1.4
cypress (npm) ^11.2.0
dayjs (npm) ^1.11.9
enzyme (npm) ^3.8.0
enzyme-adapter-react-16 (npm) ^1.7.1
enzyme-to-json (npm) ^3.3.5
eslint (npm) ^8.57.1
eslint-config-prettier (npm) ^8.10.0
eslint-config-react-app (npm) ^7.0.1
eslint-plugin-chai-friendly (npm) ^1.1.0
eslint-plugin-compat (npm) ^4.2.0
eslint-plugin-cypress (npm) ^2.15.2
eslint-plugin-flowtype (npm) ^8.0.3
eslint-plugin-import (npm) ^2.32.0
eslint-plugin-jest (npm) ^27.9.0
eslint-plugin-jsx-a11y (npm) ^6.10.2
eslint-plugin-no-only-tests (npm) ^3.3.0
eslint-plugin-react (npm) ^7.37.5
eslint-plugin-react-hooks (npm) ^4.6.2
eslint-webpack-plugin (npm) ^4.2.0
html-webpack-plugin (npm) ^5.6.6
identity-obj-proxy (npm) ^3.0.0
jest (npm) ^30.2.0
jest-environment-jsdom (npm) ^30.2.0
less (npm) ^3.13.1
less-loader (npm) ^11.1.4
less-plugin-autoprefix (npm) ^2.0.0
lodash (npm) ^4.17.21
mini-css-extract-plugin (npm) ^2.10.0
mockdate (npm) ^2.0.2
npm-run-all (npm) ^4.1.5
prettier (npm) 3.3.2
process (npm) ^0.11.10
react-refresh (npm) ^0.14.0
react-test-renderer (npm) ^16.14.0
source-map-loader (npm) ^5.0.0
stream-browserify (npm) ^3.0.0
style-loader (npm) ^4.0.0
typescript (npm) ^5.9.3
url (npm) ^0.11.4
Files by Type (count)
Python
282
Other (.png)
207
JavaScript
188
JSX
180
Other (.less)
146
TSX
117
TypeScript
96
JSON
47
HTML
18
Other (.snap)
17
Other (no ext)
15
YAML
14
Files by Type (size)
Other (.png)
6MB
JSON
1MB
Python
1MB
Other (.db)
864KB
Other (.svg)
638KB
JSX
612KB
YAML
604KB
JavaScript
371KB
TSX
371KB
Other (.snap)
370KB
Lock File
286KB
TypeScript
283KB

The LLM identified 8 files worth highlighting for reuse:

Defines the base classes for all query runners (BaseQueryRunner, BaseSQLQueryRunner, BaseHTTPQueryRunner) with a registration decorator, configuration schema validation, SSH tunnel support, and type guessing. This pattern allows adding new data sources by simply subclassing and registering, making it highly extensible and reusable.

file: redash/query_runner/__init__.py ↗ | tags: #plugin-architecture #query-runner #registration-pattern

Implements a registry for visualization types, allowing dynamic registration of renderers, editors, and options. Each visualization is defined by a unique type, name, and order. This pattern enables the addition of new visualizations without modifying core code, and the registry can be used in other projects needing extensible visualization support.

file: viz-lib/src/visualizations/registeredVisualizations.ts ↗ | tags: #registry-pattern #visualization #plugin

Provides a ConfigurationContainer class that validates configuration dictionaries against a JSON schema, encrypts secret fields using Fernet, and supports ordering and help text. This is a reusable utility for managing sensitive configuration in any Python application.

file: redash/utils/configuration.py ↗ | tags: #configuration-management #validation #encryption

A React component that generates a form dynamically from a JSON schema definition. Supports various field types (input, select, checkbox, textarea, ace editor, file upload) and handles validation, layout, and custom actions. This component can be extracted and used in any React project that needs schema-driven form generation.

file: client/app/components/dynamic-form/DynamicForm.jsx ↗ | tags: #schema-driven-form #react-component #dynamic-ui

A generic list component that manages pagination, sorting, search, tags filtering, and extra actions. It uses a controller pattern with ItemsSource, Paginator, Sorter, and StateStorage classes. This component is reusable for any list view in a React application and demonstrates a clean separation of concerns.

file: client/app/components/items-list/ItemsList.tsx ↗ | tags: #list-controller #pagination #search #react

Base class for query parameters (text, number, enum, date, etc.) with normalization, URL serialization, and validation. The parameter system is extensible and handles complex scenarios like query-based dropdowns and date ranges. This pattern can be reused in any application needing parameterized inputs.

file: client/app/services/parameters/Parameter.js ↗ | tags: #parameter-system #normalization #react

A comprehensive value formatting library that handles null display, boolean rendering, number formatting (decimals, separators, prefixes/suffixes), date/time formatting, link highlighting, and template substitution. It is well-tested and can be extracted as a standalone formatting utility for any React project.

file: viz-lib/src/lib/value-format.tsx ↗ | tags: #formatting #react #utility

Implements a ChangeTrackingMixin for SQLAlchemy models that automatically records changes to specified fields in a separate changes table, including the old and new values, the user who made the change, and a timestamp. This mixin can be applied to any SQLAlchemy model to add audit trail functionality.

file: redash/models/changes.py ↗ | tags: #audit-trail #sqlalchemy-mixin #change-tracking
Last analyzed: 2026-10-10 11:07:29.285555
Next check: 2026-10-17 11:07:29.286125
$ submit: