Skip to main content

Project configuration files

In each service project, there is a project configuration file created automatically in the root directory. It holds meta data about the project, as well as project specific configurations e.g. which extensions are enabled.

k5-project.yml

The k5-project.yml contains the following properties:

PropertyTypeTitle/Description
schemaVersion *Enum (of string)Item version, describing what kind of item it is
Must be /v1/projectConfiguration.schema.json
acronym *stringUnique acronym of the project
displayName *stringFull name of the project
descriptionstringBrief explanation about the purpose of this project
iconstringIcon of the project, used for displaying purposes
tagsArray of stringProject tags, used to organize multiple projects together
Can be an empty array
creationTs *StringCreation timestamp in milliseconds
creator *StringCreator of the item
creatorIdStringID of the creator of the item
stackReference *Object of type Java Spring Boot Stack Reference | Object of type NestJS Stack Reference | Object of type System Architecture Design Stack ReferenceReference to the used stack, which is identified by a combination of name and version
extensions *Object of type Java Spring Boot Stack 2.0.0 Extensions | Object of type NestJS Stack 1.0.0 Extensions | Object of type System Architecture Stack 1.0.0 ExtensionsExtensions object, defining which extensions are enabled and which configuration options are set (if necessary). If an extension is not defined, it is treated as disabled.
additionalConfig *Object of type Java Spring Boot Stack 2.0.0 ConfigurationAdditional project configuration, mandatory for projects based on k5-JavaSpringBoot 2.0.0
* Mandatory field

Example file:

schemaVersion: /v1/projectConfiguration.schema.json
acronym: ORDERS
displayName: Orders project
icon: home
tags:
- "order"
- "business"
stackReference:
name: k5-JavaSpringBoot
version: 2.0.0
extensions:
apiModelling:
enabled: true
domainModelling:
enabled: true
integrationModelling:
enabled: false
aggregatePersistenceSupport:
enabled: true
databaseType: Mongo
businessEventSupport:
enabled: true
version: '2.0'
sagaPatternSupport:
enabled: false
swaggerUISupport:
enabled: false
unitTestingSupport:
enabled: true
additionalConfig:
basePackage: myPackage
creationTs: '1687780358190'
creator: John Doe
creatorId: 12345678-1234-1234-1234-123456789012

Java Spring Boot Stack Reference

Reference to the used Java Spring Boot stack, which is identified by a combination of name and version.supported.

PropertyTypeTitle/Description
name *Enum (of string)Name of stack, which is used as base for the project
Supported values:
- "k5-JavaSpringBoot"
version *Enum (of string)Version of stack, which is used as base for the project. Applies semantic versioning
Supported values:
- "2.0.0"

NestJS Stack Reference

Reference to the used NestJS stack, which is identified by a combination of name and version.

PropertyTypeTitle/Description
name *Enum (of string)Name of stack, which is used as base for the project
Supported values:
- "k5-ts-nestjs"
version *Enum (of string)Version of stack, which is used as base for the project. Applies semantic versioning
Supported values:
- "1.0.0"

System Architecture Design Stack Reference

Reference to the used System Arachitecture Design stack, which is identified by a combination of name and version.

PropertyTypeTitle/Description
name *Enum (of string)Name of stack, which is used as base for the project
Supported values:
- "k5-system-architecture-design"
version *Enum (of string)Version of stack, which is used as base for the project. Applies semantic versioning
Supported values:
- "1.0.0"

Java Spring Boot Stack 2.0.0 Extensions

Extensions object, defining which extensions are enabled and which configuration options are set (if necessary). If an extension is not defined, it is treated as disabled.

PropertyTypeTitle/Description
apiModellingObject of type ExtensionModel and implement a secure Rest API and publish it as Open API specification
domainModellingObject of type ExtensionModel and implement your business logic based on DDD principles
integrationModellingObject of type ExtensionModel and implement integrations to other services
aggregatePersistenceSupportObject of type Aggregate Persistence ExtensionEasily persist your business data in a database (RDBMS / MongoDB)
businessEventSupportObject of type Business Events ExtentionModel and implement Business Events and Agents
sagaPatternSupportObject of type ExtensionModel and implement your services using the Saga Pattern for distributed transactions
unitTestingSupportObject of type ExtensionAutogenerate unit testing stubs for your implementation
swaggerUISupportObject of type ExtensionVisualize and easily access your Rest API

NestJS Stack 1.0.0 Extensions

Extensions object, defining which extensions are enabled and which configuration options are set (if necessary). If an extension is not defined, it is treated as disabled.

PropertyTypeTitle/Description
apiModellingObject of type ExtensionModel and implement a secure Rest API and publish it as Open API specification
integrationModellingObject of type ExtensionModel and implement integrations to other services
unitTestingSupportObject of type ExtensionAutogenerate unit testing stubs for your implementation
swaggerUISupportObject of type ExtensionVisualize and easily access your Rest API

System Architecture Design Stack 1.0.0 Extensions

Extensions object, defining which extensions are enabled and which configuration options are set (if necessary). If an extension is not defined, it is treated as disabled.

PropertyTypeTitle/Description
architecturalDecisionSupportObject of type ExtensionDocument and manage architectural decisions

Extension

PropertyTypeTitle/Description
enabled *BooleanDefines, whether the extension is enabled or not

Aggregate Persistence Extension

Aggregate Persistence Support Extension info with special configuration options.

PropertyTypeTitle/Description
enabled *BooleanDefines, whether the extension is enabled or not
databaseType *Enum (of string)Supported database type
Supported values:
- "Mongo"
- "DB2"
namingStrategiesEnum (of string)Defines whether it uses the default 3rd party libraries naming strategies, or custom legacy naming strategies (defaults to 'legacy' if not set).
Supported values:
- "legacy"
- "default"

Business Events Extension

Business Event Support Extension info with special configuration options.

PropertyTypeTitle/Description
enabled *BooleanDefines, whether the extension is enabled or not
version *Enum (of string)Defines, whether only new events or also old events (prior to 4.0.5) are supported.
Supported values:
- "1.0"
- "2.0"

Java Spring Boot Stack 2.0.0 Configuration

Additional project configuration for projects based on k5-JavaSpringBoot 2.0.0.

PropertyTypeTitle/Description
basePackageStringDefines package structure for generated code

solution.yml

The solution.yml contains the following properties:

PropertyTypeTitle/Description
appAcronym *stringUnique acronym of the project
appName *stringFull name of the project
appDescriptionstringBrief explanation about the purpose of this project
appType *Enum (of string)Type of project, used to resolve available capabilities within the project
Supported values:
- "DDD"
- "CUSTOM"
appIconstringIcon of the project, used for displaying purposes
language *Enum (of string)Implementation language of the project
Supported values:
- "TYPESCRIPT"
- "JAVA"
- "JAVASCRIPT"
categoryEnum (of string)Service category of project - DEPRECATED SINCE 4.1.0
Supported values:
- "EXPERIENCE_API"
- "DOMAINSERVICE"
- "SYSTEMS_API"
domainTagsArray of stringProject tags, used to organize multiple projects together
Can be an empty array
basePackagestringDefines package structure for generated solution
Only has to be filled if language is "JAVA"
extensionsObject of type Project Extensions
creationTs *StringCreation timestamp in milliseconds
creator *StringCreator of the item
creatorId *StringID of the creator of the item
* Mandatory field

Example file:

appAcronym: "ORDERS"
appName: "Service providing the possibility to order stuff"
appDescription: ""
appType: "DDD"
appIcon: "home"
creationTs: '1687780358190'
creator: John Doe
creatorId: 12345678-1234-1234-1234-123456789012
domainTags:
- "order"
- "business"
language: "TYPESCRIPT"
basePackage: ""
extensions:
databaseType: "Mongo"
supportedEventVersion: "2.0"
saga: "true||false"
java: 17

Project Extensions

PropertyTypeTitle/Description
databaseTypeEnum (of string)Supported persistance mechanism
Supported values:
- "Mongo"
- "RDBMS"
- "None"
supportedEventVersionEnum (of string)Flag defining whether only new events or also old events (prior to 4.0.5) are supported. If it's not set, the default behavior should fall back to "1.0" which means both old and new events are supported
Supported values:
- "1.0"
- "2.0"
sagaBooleanFlag, defining whether Saga support is enabled in the current project
If yes, additional features will be available when designing and implementing
javaEnum (of integer)Java Version used in the project. Generic projects prior to 4.1 do not have that property
Supported values:
- 17