Skip to main content

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—only dependencies 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" in package.json
  • Contains only dependencies, no peerDependencies
  • 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.