Module Types
Module Types
Project Module
The project module is the top-level package of a modularized ADITO setup. It acts as the entry point and central configuration point for the application.
Characteristics
- Declares the main
dependencies
to all required modules. - Should not contain business logic like entities or processes unless necessary.
- Cannot declare
peerDependencies
—onlydependencies
are allowed.
Deployment Role
- Only one project module is allowed per application.
- It is the only module type that can be deployed.
- Includes system-wide configuration like application settings, preferences, and system definitions.
Parent Module
A parent module is a structural package that groups related feature modules. It does not include own logic but defines dependencies to other functional modules.
Characteristics
"type": "module"
inpackage.json
- Contains only
dependencies
, nopeerDependencies
- Simplifies grouping and version control
Example
The contactmanagement
module aggregates contact-related logic:
{
"name": "@aditosoftware/contactmanagement",
"version": "1.2.0",
"adito": {
"type": "module"
},
"dependencies": {
"@aditosoftware/contact": "^2.0.2",
"@aditosoftware/activity": "^1.0.2",
"@aditosoftware/dsgvo": "^1.0.2"
}
}
Feature Module
A feature module provides specific functionality. It contains domain logic, such as entities, processes, views, and libraries.
Characteristics
"type": "module"
- Uses
peerDependencies
to reference other modules - May be reused across projects
Example
The contact
module contains the Person and Organisation entities and declares all required peerDependencies
:
{
"name": "@aditosoftware/contact",
"version": "2.0.3",
"adito": {
"type": "module"
},
"peerDependencies": {
"@aditosoftware/attribute": "^2.0.1",
"@aditosoftware/keyword": "^2.0.1"
}
}
Feature modules are the main carriers of reusable business logic in the ADITO ecosystem.