Skip to content
CAI
Software that uses CAICheck a score

wangyuheng/Arc

44.2

Weak · 21 September 2026

8k

lines of production code

Java

primary language

4

measurements over time

CAI band scale
CAI trend line
CAI lens gauges

What this system is

This system is a Java-based framework for building GraphQL services backed by Dgraph, providing tools to generate Java code and Dgraph schemas from GraphQL schemas. It includes a CLI and Maven plugin for code generation, a Spring-integrated GraphQL client for declarative API calls, and core components for type conversion and query building. The codebase also features a message queue module and example applications demonstrating its capabilities.

How it got here

2020 — package migration and code generation

14 changes.

This period focused on migrating the project's Java packages to a new namespace and introducing a code generation module that produces Java classes and Dgraph schemas from GraphQL definitions. The work also included refactoring core components to use explicit builder patterns and adding a Spring-integrated GraphQL client for declarative proxy generation.

2021 — GraphQL integration and CLI tooling

7 changes.

This period focused on expanding the project's GraphQL capabilities by introducing code generation, client invocation handlers, and a comprehensive example application with authorization support. The work also included restructuring example modules, updating package namespaces, and introducing a new command-line interface for code generation.

Features

Add Arc CLI tool for code generation

A new command-line interface for the Arc tooling is introduced, allowing users to generate Java code and Dgraph schemas from GraphQL schema files. The CLI supports a JSON configuration file, accepts a schema file path, and allows users to specify the generation target (Java, Dgraph, or both) via command-line arguments.

cli · high confidence

Add code generation for Java classes and Dgraph schemas

The generator now produces Java code and Dgraph database schemas from GraphQL schemas. It generates Java classes with getters, setters, and builder patterns, as well as interface implementations for data fetching. The Dgraph schema generator creates the necessary schema definitions and predicates. Configuration options allow for controlling the generation process, such as ignoring specific files or handling existing code.

generator/src · high confidence

Added GraphQL example with schema, domain models, and authorization

A new GraphQL example has been added to the codebase, providing a complete demonstration of the library's capabilities. This includes a GraphQL schema defining Project, Milestone, and User types, along with corresponding Java domain models and input classes. The example also implements a custom @Auth directive to enforce role-based access control on mutations, and registers a TraceRootInterceptor for request tracing. Additionally, a separate client-side example is provided to show how to use the GraphQL client annotations to interact with an external GraphQL API.

example/graphql-example · high confidence

Added OSS Go SDK version check script

A new Go script has been added to the home directory that imports the Aliyun OSS Go SDK and prints its version number to the console.

home · high confidence

Introduce Arc Maven plugin for code generation

Adds the Arc Maven plugin, providing a \generate\ goal that produces Java code and Dgraph schemas from a GraphQL schema file. Users can configure generation via \src/main/resources/arc-generator.json\ or default to built-in settings, and can target \java\, \dgraph\, or \all\ outputs. A test suite validates configuration loading, error handling, and target selection.

maven-plugin/src · high confidence

Introduce Spring-based GraphQL client with annotation-driven proxy generation

The graphql-client module now provides a Spring-integrated GraphQL client. Users can annotate Java interfaces with @GraphqlClient and @GraphqlMapping to automatically generate proxy implementations that execute GraphQL requests. The framework scans for these interfaces, registers them as Spring beans via GraphqlClientsRegistrar, and uses GraphqlTemplate to send HTTP requests. This enables declarative client configuration through annotations and Spring's dependency injection.

graphql-client/src · high confidence

Introduce code generation and client invocation for GraphQL and Dgraph integration

The generator module now includes new code generators for DataFetchers, Dictionaries, Inputs, Repositories, and Types, which automatically produce Java classes from GraphQL schema definitions. Additionally, a new GraphqlClientInvocationHandler is introduced to handle dynamic proxy-based GraphQL client calls, allowing methods annotated with @GraphqlMapping to execute GraphQL queries and mutations. The project structure has also been reorganized, with example modules moved to an 'example' directory and package names updated to 'io.github.wangyuheng'.

arc · high confidence

Introduce type conversion and query building components

Added new core components for type conversion and query building. The \Converter\ interface and its implementations (\GraphqlFieldType2DgraphPredicateTypeConverter\, \GraphqlFieldType2JavaTypeConverter\) enable mapping between GraphQL field types, Dgraph predicate types, and Java types. Additionally, new classes (\Filter\, \Pagination\, \QueryBody\, \Sorter\) were introduced to support query building and pagination logic. These changes replace the previous Lombok-based implementations with explicit builder patterns and manual getters/setters.

core · high confidence

Behavioural changes

Dgraph integration refactored and enhanced with schema initialization and query helpers

The Dgraph module has been refactored, primarily by renaming the Java package from \ai.care.arc.dgraph\ to \io.github.wangyuheng.arc.dgraph\. This change includes removing the \lombok\ dependency in favor of explicit \slf4j\ logging and manual getters/setters. New capabilities include automatic Dgraph schema initialization via \DataSourceInitializer\ (triggered by \arc.dgraph.init\), a new \DgraphSqlHelper\ for generating dynamic GraphQL-like queries, and a \RelationshipInformation\ builder for constructing RDF-style relationship data. The \SimpleDgraphRepository\ now supports a configurable \levelLimit\ for nested type queries.

dgraph/src/main/java · high confidence

Dgraph schema initialization and auto-configuration updates

The Dgraph integration now supports automatic schema initialization and data dropping via new configuration properties: arc.dgraph.init (boolean, default false) to trigger schema initialization after dropping all data, and arc.dgraph.drop-all (boolean, default false) to clear existing data and schema. Additionally, the Spring auto-configuration class has been moved from ai.care.arc.dgraph.DgraphAutoConfiguration to io.github.wangyuheng.arc.dgraph.DgraphAutoConfiguration, reflecting a package rename.

dgraph/src/main/resources · high confidence

Message Queue module package renamed

The Java package for the message queue module has been renamed from \ai.care.arc.mq\ to \io.github.wangyuheng.arc.mq\. This change updates all affected classes, including the auto-configuration, consumer, producer, store, and transport components, as well as the corresponding test classes and the Spring Boot auto-configuration registration in \spring.factories\.

mq · high confidence

Moved and restructured the MQ example application

The MQ example application has been relocated from the 'sample' directory to the 'example' directory, with the Java package namespace updated from 'ai.care.arcmqsample' to 'io.github.wangyuheng.arcmqexample'. Additionally, the logging implementation was changed from the Lombok '@Slf4j' annotation to a standard SLF4J Logger field, and the Spring Boot application name was set to 'ArcMqExample' in the default properties file.

example/mq-example · medium confidence

Moved full example to new package structure

The full example application has been relocated from the \ai.care.arcfullsample\ package to \io.github.wangyuheng.arcfullexample\. This change includes updating all Java source files, configuration properties, and resource files to reflect the new package name and application identifiers.

example/full-example · medium confidence

Removal of default MQ sample configuration

The default application configuration file (application-default.properties) for the MQ sample has been removed. This eliminates the pre-configured Spring application name 'ArcMqSample' from the sample, requiring users to provide their own configuration or rely on defaults.

sample/mq-sample · high confidence

Removed sample domain and input classes

The sample applications (full-sample and graphql-sample) have had their domain and input classes removed. Specifically, the Milestone, User, and ProjectInput classes have been deleted from both the domain and input packages. This removes the associated data models and input structures from the sample codebase.

sample/full-sample, sample/graphql-sample · high confidence

Renames package from ai.care.arc to io.github.wangyuheng and updates auto-configuration

The GraphQL module's Java package has been renamed from ai.care.arc to io.github.wangyuheng across all classes, including annotations (e.g., @Graphql, @GraphqlQuery), controllers, and support classes. The Spring auto-configuration entry in spring.factories has been updated to reflect the new package name. Additionally, the @DataFetcherService annotation was renamed to @Graphql, and the corresponding post-processor was renamed to GraphqlPostProcessor. A new @Directive annotation and DirectivePostProcessor were added to support custom GraphQL directives. The GraphqlClient class was removed, and the GraphQLController was updated to include request headers in the GraphQL context. Validation rules were also integrated into the schema wiring.

graphql/src/main · high confidence

Updated GraphQL schema and generator configuration for the generator example

The generator example has been updated with new configuration files and an expanded GraphQL schema. A new \arc-generator.json\ file configures code generation strategies for types and APIs, while \application-default.properties\ sets the application name. The GraphQL schema (\schema.graphqls\) was extended to include a \users\ query on the root, added a \createMilestone\ mutation, and introduced a \ProjectCategory\ enum. The \Project\ type now includes a \category\ field, while the \Milestone\ type had its \description\ and \creator\ fields removed. Correspondingly, \ProjectInput\ was updated to use the new enum, and a \MilestoneInput\ was added.

example/generator-example · high confidence

Updated documentation to reflect GraphQL and generator module integration

The documentation has been updated to reflect the renaming of the DataFetcherService to Graphql and the addition of a new generator module. Specifically, the workflow diagram now references the Graphql class, the dependent components diagram shows the new generator module and graphql-client, and a new generator.puml file illustrates the relationship between the GraphQL schema, the generator, and the business project.

doc · medium confidence

Test coverage

Added comprehensive unit tests for Dgraph integration components; Updated and reorganized GraphQL test suite.

Dependencies

Introduce Arc CLI, GraphQL client, and generator modules with updated dependencies

The project adds three new Maven modules: a command-line interface (arc-cli) built with Picocli, a GraphQL client module (arc-graphql-client) for Spring Boot applications, and a code generator module (arc-generator) using JavaPoet. Existing modules (core, dgraph, graphql, mq) have their group IDs updated to io.github.wangyuheng, and internal dependencies are aligned to version 1.6.0. The root pom.xml introduces the flatten-maven-plugin for version management, adds the coveralls-maven-plugin for coverage reporting, and updates the fastjson dependency version to 1.2.74.

(dependencies) · high confidence

Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.

How this codebase got here

This is the PUBLIC form of this artifact. Findings are listed in full, but the details of SECURITY findings — which rule fired, in which file, on which line, and how to fix it — are deliberately withheld, and any secret-scanner results are excluded entirely. Where detail is absent here it was REMOVED FOR PUBLICATION; it is not missing from the analysis. The complete artifact is available from the repository owner.

Score

  • CAI 50 → 44 (-5.9)
  • Rubric changed (rubric-2026.08.19 → rubric-2026.09.15) — scores are not directly comparable.

Lenses

  • Code Health 96 → 97 (+1.1)
  • Architecture 100 → 94 (-5.8)
  • Maturity 57 → 57 (+0.0)
  • Readiness 68 → 41 (-27.2)
  • Security 28 → 29 (+0.9)
  • Domain Modelling 89 → 82 (-6.2)

Resolved (23)

  • Coverage not included — suite not readable by the collector
  • Dependency hygiene not measured — dependency manifest found but not parsed for hygiene
  • Duplicated block (5 lines × 2) (dgraph/src/main/java/io/github/wangyuheng/arc/dgraph/repository/SimpleDgraphRepository.java)
  • Duplicated block (8 lines × 2) (dgraph/src/main/java/io/github/wangyuheng/arc/dgraph/repository/SimpleDgraphRepository.java)
  • High: security finding (details withheld)
  • High: security finding (details withheld)
  • High: security finding (details withheld)
  • High: security finding (details withheld)
  • High: security finding (details withheld)
  • High: security finding (details withheld)
  • LLM evaluation failed
  • No exposed public API
  • Scanner failed to run — not a clean result
  • Secret: jwt (example/full-example/src/main/resources/config/application-graphql.playground.yml)
  • Secret: jwt (example/full-example/src/main/resources/config/application-graphql.playground.yml)
  • Secret: jwt (sample/full-sample/src/main/resources/config/application-graphql.playground.yml)
  • Secret: jwt (sample/full-sample/src/main/resources/config/application-graphql.playground.yml)
  • Secret: jwt (sample/full-sample/src/main/resources/graphql/embed/variables.json)
  • Secret: jwt (sample/graphql-sample/src/main/resources/config/application-graphql.playground.yml)
  • Secret: jwt (sample/graphql-sample/src/main/resources/config/application-graphql.playground.yml)
  • …and 3 more

New (70)

  • Dependency hygiene PARTLY measured — Maven/Gradle declarations read, no dependency graph resolved
  • Documentation: no installation or build instructions (README.md)
  • Duplicated block (15 lines × 2) (core/src/main/java/io/github/wangyuheng/arc/core/dictionary/DgraphPredicateTypeEnum.java)
  • Duplicated block (5 lines × 2) (dgraph/src/main/java/io/github/wangyuheng/arc/dgraph/repository/SimpleDgraphRepository.java)
  • Duplicated block (9 lines × 2) (dgraph/src/main/java/io/github/wangyuheng/arc/dgraph/repository/SimpleDgraphRepository.java)
  • Flaky test: io.github.wangyuheng.arc.graphqlclient.GraphqlClientsRegistrarTest.should_completion_http_schema_if_url_not_specified
  • Flaky test: io.github.wangyuheng.arc.graphqlclient.GraphqlClientsRegistrarTest.should_resolve_vars_by_env_when_get_url
  • Flaky test: io.github.wangyuheng.arc.graphqlclient.GraphqlClientsRegistrarTest.should_throw_exception_if_attribute_not_include_url
  • Flaky test: io.github.wangyuheng.arc.graphqlclient.GraphqlClientsRegistrarTest.should_throw_exception_if_url_illegal
  • High: security finding (details withheld)
  • High: security finding (details withheld)
  • High: security finding (details withheld)
  • High: security finding (details withheld)
  • High: security finding (details withheld)
  • Leaked secret: http-authorization-credential (example/full-example/src/main/resources/graphql/embed/variables.json)
  • Leaked secret: http-authorization-credential (example/graphql-example/src/main/resources/graphql/embed/variables.json)
  • Medium: security finding (details withheld)
  • Medium: security finding (details withheld)
  • No ADRs found
  • No assertions: all_enum_values_should_be_convert (core/src/test/java/io/github/wangyuheng/arc/core/common/GraphqlFieldType2DgraphPredicateTypeConverterTest.java)
  • …and 50 more

Architecture

  • Containers 0 added · 0 removed · contexts 5 added · 1 removed · edges 2 added · 0 removed

Added bounded contexts (5)

  • arc-full-example
  • arc-generator
  • arc-graphql-client
  • arc-graphql-example
  • arc-mq

Removed bounded contexts (1)

  • arc

Added dependency edges (2)

  • arc-full-example → arc-mq
  • arc-graphql-example → arc-mq

Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.

Survey your own repository

wangyuheng/Arc was measured the same way every project in this corpus was: the same rubric, at a pinned commit, with the result published in full. Point a surveyor at a repository you know and see whether you agree with it.

About this page

  • The score is its most recent published measurement, taken on 21 September 2026 at a pinned commit. It is not a live figure and does not change until the project is measured again.
  • Measured at commit 62c0afd8426dc34b8b731012b11de86226255b88 — the exact code this score is about.
  • Scored under rubric-2026.09.15 — the same rubric and the same method as every other entry in this index.
  • Measured by watchdog.canine.dev using codehealth-analyzer preprod-fa71c66cabd8.