archifacts is a free (Apache 2.0 license) library for describing and detecting architectural building blocks and their relationships in your Java applications.
archifacts heavily relies on ArchUnit which analyzes the Java bytecode. With the help of descriptors archifacts identifies building blocks, relationships and containers of your application and builds a model.
Having this model in place you can visualize your application's architecture or verify it against certain rules.
While we already have some support for the former, the latter is subject of future work.
Caution! archifacts is in a very early state. The API is not intended to be stable. We might introduce breaking changes at any time if we think it improves the overall user experience. Please be aware of this, if you decide to use archifacts.
Nevertheless we try to reduce the breaking changes to a minimum, but there is no guarantee.
implementation 'org.archifacts:archifacts-core:0.5.0'
<dependency>
<groupId>org.archifacts</groupId>
<artifactId>archifacts-core</artifactId>
<version>0.5.0</version>
</dependency>
Take a look at our Fraktalio demo application example and Spring Restbucks example to get an idea about how to use archifacts.
The project documents the Fraktalio demo application which is a Spring Boot and Axon Framework based microservice system, implemented in Java and Kotlin.
The generated documentation is deployed using GitHub Actions. You can find it here
The project documents the Spring Restbucks application which is a Spring Boot and jMolecules based modulithic system, implemented in Java.
The generated documentation is deployed using GitHub Actions. You can find it here
archifacts is a made-up word out of architects, artifacts and facts.
architects who want to visualize or verify their architecture are the main target group of the library.
Every class, interface or enum in your application is treated as an artifact. Artifact is the common base class for all these elements and therefore the foundation of archifacts.
archifacts is all about facts as the model is extracted from bytecode. With this approach archifacts tackles outdated documentation. The model contents are facts.
The most helpful contribution in this early project phase is feedback. Feedback about bugs, missing features, misconceptions, successes, whatever. We would like to get in touch with the library's users to improve archifacts.
ArchUnit is published under the Apache License 2.0, see http://www.apache.org/licenses/LICENSE-2.0 for details.