Architectural Overview
Architectural Overview
ADITO Project Structure
An ADITO project is composed of multiple interconnected npm packages. These packages may serve different roles, such as project coordination, feature implementation, or aggregation of submodules. Each package defines its dependencies in a package.json
file, determining its place in the overall structure.
The system follows a layered modular architecture:
- Project module: The top-level entry point (type
"project"
), defines all directdependencies
. - Parent modules: Group related feature modules, typically without their own logic.
- Feature modules: Contain entities, services, and logic. Declared as
peerDependencies
by parent or project modules.
Tree Structure and Directed Acyclic Graph (DAG) Concept
While modules are commonly visualized in a tree structure—starting from the project
module as the root and branching into parent and feature modules—the true form is a Directed Acyclic Graph (DAG):
- Modules may be reused in multiple branches (shared modules like
utility
orroot
) - Cycles are forbidden by design: dependency graphs must remain acyclic to support consistent resolution, transpilation, and runtime loading
This DAG-based architecture ensures:
- Independence of modules
- Predictable dependency resolution
- Easier unit testing and targeted deployment
Visual Structure of xRM
The ADITO xRM system has been progressively modularized since version 2024.1.0. Its structure can be visualized as follows:
Figure: Simplified modular structure of a typical ADITO xRM setup
Visualizing the structure with tools like npm ls
or dependency graph generators is useful when troubleshooting or planning modularization.