$ show amundsen-io/amundsen
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.
The LLM identified 4 files worth highlighting for reuse:
Declarative REST query model that handles seeded parameters, pagination, response field extraction, and chaining where one response supplies the next request's parameters. It is used by Mode and Tableau extractors but contains no Amundsen-specific business logic; the abstraction can be extracted to build robust paginated API clients for any external service.
Recursive parser that converts Hive/Trino complex column type strings such as struct<...>, array<...>, and map<...> into typed metadata trees. It is self-contained, deterministic, and unit-tested, making it reusable in schema analysis, data cataloging, or SQL tooling projects that need to understand nested column types.
D3-based force-directed graph rendering for table and column lineage, driven by typed input data and exposing zoom/pan interactions. It is isolated from the Redux application state and can be reused in any React application that needs an interactive directed graph visualization.
Retry utility with exponential backoff and jitter designed for flaky external calls such as Neo4j or JanusGraph operations. It is small, dependency-light, and can be dropped into any Python service to harden network or database operations against transient failures.