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:
Property | Type | Title/Description |
---|---|---|
schemaVersion * | Enum (of string) | Item version, describing what kind of item it is |
Must be /v1/projectConfiguration.schema.json | ||
acronym * | string | Unique acronym of the project |
displayName * | string | Full name of the project |
description | string | Brief explanation about the purpose of this project |
icon | string | Icon of the project, used for displaying purposes |
tags | Array of string | Project tags, used to organize multiple projects together |
Can be an empty array | ||
creationTs * | String | Creation timestamp in milliseconds |
creator * | String | Creator of the item |
creatorId | String | ID 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 Reference | Reference 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 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. |
additionalConfig * | Object of type Java Spring Boot Stack 2.0.0 Configuration | Additional 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.
Property | Type | Title/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.
Property | Type | Title/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.
Property | Type | Title/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.
Property | Type | Title/Description |
---|---|---|
apiModelling | Object of type Extension | Model and implement a secure Rest API and publish it as Open API specification |
domainModelling | Object of type Extension | Model and implement your business logic based on DDD principles |
integrationModelling | Object of type Extension | Model and implement integrations to other services |
aggregatePersistenceSupport | Object of type Aggregate Persistence Extension | Easily persist your business data in a database (RDBMS / MongoDB) |
businessEventSupport | Object of type Business Events Extention | Model and implement Business Events and Agents |
sagaPatternSupport | Object of type Extension | Model and implement your services using the Saga Pattern for distributed transactions |
unitTestingSupport | Object of type Extension | Autogenerate unit testing stubs for your implementation |
swaggerUISupport | Object of type Extension | Visualize 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.
Property | Type | Title/Description |
---|---|---|
apiModelling | Object of type Extension | Model and implement a secure Rest API and publish it as Open API specification |
integrationModelling | Object of type Extension | Model and implement integrations to other services |
unitTestingSupport | Object of type Extension | Autogenerate unit testing stubs for your implementation |
swaggerUISupport | Object of type Extension | Visualize 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.
Property | Type | Title/Description |
---|---|---|
architecturalDecisionSupport | Object of type Extension | Document and manage architectural decisions |
Extension
Property | Type | Title/Description |
---|---|---|
enabled * | Boolean | Defines, whether the extension is enabled or not |
Aggregate Persistence Extension
Aggregate Persistence Support Extension info with special configuration options.
Property | Type | Title/Description |
---|---|---|
enabled * | Boolean | Defines, whether the extension is enabled or not |
databaseType * | Enum (of string) | Supported database type |
Supported values: | ||
- "Mongo" | ||
- "DB2" | ||
namingStrategies | Enum (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.
Property | Type | Title/Description |
---|---|---|
enabled * | Boolean | Defines, 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.
Property | Type | Title/Description |
---|---|---|
basePackage | String | Defines package structure for generated code |
solution.yml
The solution.yml
contains the following properties:
Property | Type | Title/Description |
---|---|---|
appAcronym * | string | Unique acronym of the project |
appName * | string | Full name of the project |
appDescription | string | Brief 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" | ||
appIcon | string | Icon of the project, used for displaying purposes |
language * | Enum (of string) | Implementation language of the project |
Supported values: | ||
- "TYPESCRIPT" | ||
- "JAVA" | ||
- "JAVASCRIPT" | ||
category | Enum (of string) | Service category of project - DEPRECATED SINCE 4.1.0 |
Supported values: | ||
- "EXPERIENCE_API" | ||
- "DOMAINSERVICE" | ||
- "SYSTEMS_API" | ||
domainTags | Array of string | Project tags, used to organize multiple projects together |
Can be an empty array | ||
basePackage | string | Defines package structure for generated solution |
Only has to be filled if language is "JAVA" | ||
extensions | Object of type Project Extensions | |
creationTs * | String | Creation timestamp in milliseconds |
creator * | String | Creator of the item |
creatorId * | String | ID 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
Property | Type | Title/Description |
---|---|---|
databaseType | Enum (of string) | Supported persistance mechanism |
Supported values: | ||
- "Mongo" | ||
- "RDBMS" | ||
- "None" | ||
supportedEventVersion | Enum (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" | ||
saga | Boolean | Flag, defining whether Saga support is enabled in the current project |
If yes, additional features will be available when designing and implementing | ||
java | Enum (of integer) | Java Version used in the project. Generic projects prior to 4.1 do not have that property |
Supported values: | ||
- 17 |