Metabase is an open-source business intelligence platform that enables users to query, visualize, and share data through an intuitive interface. The system is built as a full-stack application with a Clojure backend and React/TypeScript frontend, supporting both self-hosted and cloud deployments. The architecture follows a modular monolith pattern with clear separation between the core application, enterprise features, and embedding SDK components. The codebase demonstrates sophisticated engineering practices including a comprehensive plugin system that allows enterprise features to extend core functionality, a custom query builder with both GUI and SQL interfaces, and a robust embedding SDK for integrating Metabase components into external applications. The frontend utilizes modern React patterns with Redux for state management, while the backend employs Clojure's functional programming strengths for data processing and API handling. Key architectural highlights include the metabase-lib library for query construction and metadata management, a sophisticated visualization system with ECharts integration, and a multi-tenant embedding solution with JWT/SAML authentication. The codebase shows strong attention to internationalization, accessibility, and performance optimization through features like query caching, lazy loading, and bundle splitting.
TablePro is a native macOS and iOS database client built with SwiftUI and AppKit, designed as an open-source alternative to commercial tools like TablePlus. It supports a vast array of database engines (PostgreSQL, MySQL, MSSQL, Oracle, MongoDB, Redis, Snowflake, ClickHouse, DuckDB, Teradata, Trino, etc.) through a plugin-based driver architecture defined in TableProPluginKit. The application features a custom code editor (CodeEditSourceEditor) with tree-sitter syntax highlighting, line folding, minimap, and Vim mode; a powerful data grid for inline editing; SSH tunneling with multi-factor authentication; CloudKit-based sync for connections and settings; and an integrated AI assistant with MCP (Model Context Protocol) server support for agentic database interactions. The codebase is actively maintained, demonstrates high engineering craftsmanship with clean protocols, extensive unit and UI tests, and many reusable components that could be extracted into independent libraries.
Apache Superset is a production-grade business intelligence web application for data exploration and visualization. It provides a full-stack platform (Python Flask backend, React/TypeScript frontend) that connects to over 50 SQL databases, allowing users to create interactive dashboards, design charts via a plugin architecture, execute ad-hoc SQL queries in SQL Lab, and schedule email/slack reports with screenshots. The system manages metadata in a relational database (PostgreSQL/MySQL), uses Celery for background tasks (dashboard thumbnails, report execution), Redis for caching and async events, and exposes a REST API for programmatic access. Key architectural patterns include a command pattern for CRUD operations, DAO layer for data access, a rich chart plugin system with lazy-loaded rendering, and an embedded SDK for external dashboards. The codebase is actively maintained with frequent schema migrations, extensive tests, and an experimental MCP service for AI integration. While primarily an application, it includes data-research-adjacent features like semantic layers and pandas-based post-processing for chart data.
DB Browser for SQLite is a desktop GUI application written in C++/Qt for creating, browsing, editing, and querying SQLite databases. The core is a QMainWindow (src/MainWindow.cpp) with dockable table browsing, a schema tree, an SQL editor, plot dock, and many modal dialogs for table/index design, CSV/SQL/JSON import/export, encryption, preferences, and conditional formatting. SQLite is accessed through a custom DBBrowserDB wrapper (src/sqlitedb.cpp), with threaded execution via RunSql and RowLoader, and a custom flex/bison SQL parser feeds the sqlb object model (src/sql/sqlitetypes.cpp) for schema introspection and SQL generation. Data flows center on files: a user opens an SQLite database or project, schema is introspected into sqlb::Table/View/Index objects, rows are fetched asynchronously into a SqliteTableModel backed by RowCache, edits are applied with SQL savepoints, and exports stream via the SQLite C API to CSV/JSON/SQL. The SQL editor is QScintilla with a project-specific SqlUiLexer for SQLite keyword completion. The repository vendors large third-party libraries (QScintilla/Scintilla 2.14.1, QCustomPlot, QHexEdit, nlohmann/json), bundled for portability but adding maintenance overhead. Engineering quality is solid: a modular CMake build, unit tests under src/tests, GitHub Actions CI for Windows/macOS/Linux, and a clean separation between the database layer, SQL object model, Qt models, and dialogs. Several components are self-contained enough for reuse, including ObjectIdentifier, RowCache, CSVParser, and the Data helper utilities. Technical drift is medium: the bundled QScintilla is old, some Qt5-era APIs remain, and the custom parser plus checked-in generated lexer files are fragile, but the project remains actively maintained.
WhoDB is a self-hosted, multi-database management platform with a GraphQL Go backend, React/TypeScript frontend, CLI (Cobra/Bubble Tea), desktop app (Wails), and multi-language SDKs (TypeScript, Python, Go, Rust, Java). It provides schema exploration, CRUD operations, raw query execution, import/export (CSV, Excel, NDJSON), mock data generation, schema diff, and AI-assisted SQL generation via BAML and LLM providers (OpenAI, Anthropic, Gemini, Ollama, LM Studio). The system supports PostgreSQL, MySQL, ClickHouse, SQLite, DuckDB, MongoDB, Redis, Elasticsearch, Memcached, and cloud-managed databases from AWS, Azure, and GCP. It also includes an MCP server for AI assistant integration, a hosted platform SDK, and enterprise/community edition separation via extensible registries.
DBeaver is a universal database management tool and SQL client, built as a desktop application on the Eclipse RCP (OSGi plugin) framework. It provides a rich graphical interface for connecting to over 100 database systems via JDBC/ODBC drivers, including relational databases (MySQL, PostgreSQL, Oracle, SQL Server, SQLite, etc.), cloud databases (BigQuery, Athena, Snowflake), and NoSQL systems (MongoDB, Cassandra) in commercial editions. The application offers a full suite of database development features: a multi-tab SQL editor with syntax highlighting, code completion, and execution plan visualization; a data editor with grid, form, and GIS geometry views; ER diagram designer; data export/import wizards supporting CSV, JSON, XML, SQL, Markdown, and Excel; dashboard widgets for query-based monitoring; and an integrated AI assistant (OpenAI, Copilot) for natural language query generation and schema analysis. The architecture follows a strict model/UI separation enforced by OSGi plugin boundaries. The core model plugin (`org.jkiss.dbeaver.model`) defines interfaces for database objects, data values, execution contexts, and security, which are implemented by database-specific extension plugins (`org.jkiss.dbeaver.ext.*`). UI plugins (`org.jkiss.dbeaver.ui.*`) provide editors, navigators, and dialogs, while data transfer, debugging, and AI features are isolated in their own plugins. This design allows the model layer to be reused in the web-based CloudBeaver product. Key entry points include the `DBeaverApplication` class for startup, the `SQLEditor` for query editing, and the `DataTransferWizard` for import/export. External dependencies include the Eclipse RCP framework, JDBC drivers, ANTLR4 for SQL grammar parsing, JSQLParser for SQL analysis, and various third-party libraries for SSH tunneling, AWS SDK, and AI API communication. Data flows center around database connections: users configure data sources via connection wizards, execute SQL queries through the editor, and view results in data grids or export pipelines. The data transfer subsystem implements a producer/consumer pattern with pluggable transformers and serializers, supporting streaming for large datasets. The AI integration uses a provider abstraction to interface with different LLM APIs, generating SQL from natural language and providing schema-aware context. The repository also includes a CLI tool (`dbvr`) for CI/CD automation and a headless test platform. While the community edition is fully open-source, commercial versions add NoSQL support, additional AI providers, and premium features, with some code paths guarded by feature flags.
Chat2DB is an AI-powered database client and SQL workspace supporting over 40 databases via a plugin architecture. It provides a full-featured SQL editor with syntax highlighting, autocompletion, and execution, along with database metadata browsing, data import/export, BI dashboards, and an AI assistant that can generate SQL, explain queries, and create charts. The system is designed as a hybrid desktop/web application, with a React/TypeScript frontend (using Ant Design, Monaco Editor, Zustand for state management) and a Java Spring Boot backend with a layered domain model. The desktop version uses JCEF (Chromium Embedded Framework) for native integration, while the web version runs as a standalone server. Database support is modular via SPI plugins, each providing metadata, SQL builders, value processors, and completion logic. The architecture is centered around a plugin system where each database type implements interfaces like IPlugin, IDbMetaData, and IDbManager, enabling extensible multi-database support. The frontend uses Zustand stores with slice-based state management, and the backend provides REST APIs for SQL execution, AI chat, and data management. Key entry points include the frontend main page (CommunityMainPage), backend controllers (e.g., DbSqlController, AiChatController), and plugin registration via META-INF/services. Data flows involve SQL execution requests from the editor to the backend, which delegates to the appropriate database plugin and returns results asynchronously with streaming support for AI and large result sets. External dependencies include Java/Spring Boot, React, Monaco Editor, ANTLR for SQL parsing, ECharts for charts, and various JDBC drivers for database connectivity. The system also integrates with AI model APIs (e.g., OpenAI, Claude) via configurable endpoints. The codebase demonstrates a strong separation of concerns through its SPI plugin pattern and state management slices, though it exhibits some duplication across database plugins and has limited test coverage.
pgweb is a web-based PostgreSQL database explorer written in Go. It provides a single-page application frontend (jQuery, Bootstrap 3, Ace editor) and a REST API backend (Gin framework) for browsing schemas, executing SQL queries, viewing table data, and exporting results. The application supports multi-session management, SSH tunnels, TOML-based bookmarks, Prometheus metrics, and third-party authentication backends. It is distributed as a single cross-platform binary with zero external runtime dependencies beyond a PostgreSQL server. The architecture is a monolith: the Go server serves static files and exposes API endpoints for database operations. Key entry points are the CLI (main.go -> pkg/cli/cli.go) and the API routes (pkg/api/routes.go). The codebase demonstrates solid engineering with clean abstractions for database client, connection string building, session management, and metrics, but the frontend relies on outdated libraries (jQuery 2.1.1, Bootstrap 3, Ace editor) and the project shows some technical drift in dependency versions and deprecated environment variables.
Frappe Insights is a full-stack business intelligence application enabling users to connect to data sources, build queries visually or via SQL, create visualizations, and assemble dashboards and workbooks. The decoupled architecture features a Vue.js 3 frontend communicating with a Python/Frappe backend through REST APIs. Key capabilities include a multi-database query builder using Ibis and SQLGlot, ECharts-powered visualizations, role-based access control, and DuckDB-based data warehousing for caching imported tables. The frontend leverages Vue composition API for reusable logic, while the backend uses Frappe's DocType system for extensibility. The project demonstrates solid engineering practices with modular API design, reusable components, and abstraction layers, though complexity arises from supporting numerous database types and deep Frappe integration.
MySQL Workbench is a production-grade, cross-platform desktop application for MySQL database management. Its codebase is organized into a modular architecture: a core C++ backend using the GRT (Generic Runtime) object model for metadata-driven object management and plugin loading; a cross-platform UI abstraction layer (mforms) with platform-specific implementations for Linux (GTK), macOS (Cocoa), and Windows (.NET); dedicated packages for data modeling (EER diagrams, forward/reverse engineering), SQL editing (syntax highlighting, autocompletion, query execution), server administration (user management, performance monitoring), and data migration. The repository also bundles a custom ANTLR-based SQL parser, a canvas library for interactive diagramming, SSH connectivity support, and extensive SQL scripts for Performance Schema monitoring. While it contains analytical SQL scripts for database diagnostics, its core nature is a graphical application, not a data research project.
TOra is a database administration and development toolkit primarily for Oracle but also supporting MySQL, PostgreSQL, DB2, and Teradata. It provides a modular Qt-based GUI application with database connection management, SQL worksheet with syntax highlighting and execution, schema browser, result viewing/exporting, PL/SQL editor/debugger, tuning tools, backup utilities, and security/session management. The architecture follows a plugin/extension pattern where tools inherit from base classes, uses MVC for result display, and implements abstraction layers for database connectivity. Key entry points are in src/main/ for application startup, connection dialogs, and preferences.