wangyuheng/Arc
44.2
Weak · 21 September 2026
8k
lines of production code
Java
primary language
4
measurements over time
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.