DataEase is a self-hosted, open-source business intelligence (BI) platform that enables users to connect to diverse data sources, build datasets, create interactive charts and dashboards, and share insights via links or embedded widgets. The codebase is a full-stack monolith with a Java Spring Boot backend (JPA, Calcite SQL parser, Quartz scheduling) and a Vue 3 frontend (AntV G2/G2Plot/L7 for charts, UniverJS for spreadsheets). It supports a wide range of database connectors (MySQL, PostgreSQL, Oracle, ClickHouse, StarRocks, Elasticsearch, MongoDB, etc.), dataset types (SQL, union, custom fields), chart types (bar, line, pie, map, table, indicator, etc.), and enterprise features like row/column-level permissions, scheduled sync, report delivery, and multi-factor authentication. The architecture includes an SDK layer for extensions (datasource providers, sync providers, chart plugins) and a separate Xpack module for commercial features. The platform is deployed via Docker Compose with APISIX gateway. The codebase is actively maintained (24k+ stars, recent commits) but exhibits some technical drift due to deep inheritance hierarchies in chart handlers, code duplication across engine providers, and tight coupling to specific library versions (AntV G2, UniverJS). Overall, it is a solid, production-grade BI tool with good separation of concerns but with room for refactoring in certain areas.
Etl-engine is a Java-based ETL (Extract, Transform, Load) library designed for high-performance data synchronization. It provides a lightweight, extensible framework built around three core components: Node (data sources/destinations/transformations), Pipe (thread-safe buffered queues for data transfer), and Dataflow (orchestrator for pipeline execution). The library supports various data sources including JDBC databases (PostgreSQL, MySQL, Oracle, ClickHouse, DuckDB) and file outputs, with built-in capabilities for batch processing, automatic error handling/retry, and detailed logging. The architecture follows a producer-consumer pattern using Java's concurrency utilities, enabling efficient parallel data processing. Sample implementations demonstrate common ETL scenarios like database-to-database transfers, conditional data routing, and value transformation.