WhoDB is a self-hosted, multi-database workspace and management platform by Clidey (Apache-2.0). The production system is a Go backend (chi router, gqlgen GraphQL API, BAML-generated LLM clients) served alongside a React/TypeScript SPA (Vite, Apollo, Redux), plus a Cobra/Bubbletea CLI/TUI, a Wails desktop app, an MCP server exposing database tools to AI agents, and multi-language SDKs (Python, TypeScript, Go, Rust, Java) targeting the hosted platform API. It lets users browse/edit/query rows, inspect schemas and relationships, run arbitrary SQL/NoSQL commands, import/export CSV and Excel, generate mock data, and chat with an AI assistant that produces SQL, explains queries, and executes verified operations. Supported engines include PostgreSQL, MySQL/MariaDB, SQLite, CockroachDB, TiDB, DuckDB, ClickHouse, QuestDB, YugabyteDB, MongoDB, Redis/Valkey/Dragonfly, Elasticsearch/OpenSearch, and Memcached, with automatic discovery of cloud-hosted instances on AWS, Azure, and GCP. Architecturally the backend is a database-plugin registry: every engine implements a PluginFunctions interface, mostly by embedding a shared GORM-based SQL plugin and overriding dialect specifics (constraint parsing, batch operations, SQL builders); non-relational stores use native adapters. Security is treated seriously: a SQL guard classifies commands as read-only vs mutating across SQL/MongoDB/Redis, egress validation blocks SSRF targets including cloud-metadata IPs, sessions use hashed cookie tokens with CSRF double-submit, and audit logging classifies events into telemetry/access/compliance. The frontend uses registry patterns (component-registry, route-registry, sidebar-registry) to keep CE/EE edition differences declarative. The most reusable pieces are security components (sqlguard read-only classification, egress SSRF filter), the mock-data generator's column-pattern matching, and the schema-diff engine — all self-contained enough to extract into other projects. The codebase is actively maintained with extensive CI/CD (Docker, npm, Snap, Windows Store, macOS releases), per-database e2e suites, and accessibility checks. Weaknesses are inherent complexity: five SDKs must stay synchronized with a generated manifest, BAML generation introduces platform-specific build stubs, cloud-provider connectivity logic is duplicated across AWS/GCP/Azure, and the broad plugin interface gives new database adapters a large implementation surface.
Amundsen is an archived data discovery and metadata management platform. The codebase is structured as a multi-service monorepo: a Flask+React frontend, a Flask metadata service backed by graph databases, a Flask Elasticsearch search service, a shared common models library, and the databuilder ETL framework. In production it ingests metadata from databases, warehouses, dashboards, and feature stores through pluggable extractor/transformer/loader/publisher pipelines, publishes it to Neo4j/Neptune/Atlas/MySQL and Elasticsearch, and exposes search, table/dashboard/feature details, lineage, tags, badges, owners, quality checks, and previews through REST APIs and a React/Redux UI. The databuilder component is a genuinely library-quality ETL framework with clean interfaces, serialization abstractions for multiple backends, and a large collection of source-specific connectors. The metadata and search services are conventional Flask REST APIs, while the frontend is a large React application organized around Redux ducks and Redux-Saga async flows. Because of its data-ingestion components, the repository has a hybrid character, but the dominant character is an application platform rather than a data-research project. The project has been archived and shows significant technical drift: it pins Elasticsearch 7.13, Neo4j 4.4, and Node 12 (EOL), contains deprecated preview and search-publisher paths, has duplicated logic across services, and receives no active dependency or security updates. It remains useful as a reference architecture and as a source of extractable engineering patterns, but it is not a safe choice for new production deployments without a fork and substantial modernization.