Skip to main content

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 direct dependencies.
  • 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 or root)
  • 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

note

Visualizing the structure with tools like npm ls or dependency graph generators is useful when troubleshooting or planning modularization.