FAQ
Technologies (Tech-Stack)
The Headless CMS ist Build with the following tech-stack. We use industrial standards and best practices for our services for quick and easy development. You can use and extend the CMS like you need it. (See: Plug-In Development)
- Spring Boot 3 (since CMS V2.1.0)
- Hibernate 6 (since CMS V2.1.0)
- JPA (Jakarta)
- OpenJDK 17+
- Spring REST
- Actuator Endpoint
- OpenAPI / Swagger UI
Environments of CMS
Global
Environment | Description | Example |
---|---|---|
DEBUG | Print a lot of additional information in defined Log4J2 Writer. | true |
TZ | Timezone for java application. | Europe/Berlin |
format_datetime | Datetime format of rest calls. | yyyy-MM-dd HH:mm:ss |
Authenticate
user authentication configuration
Environment | Description | Example |
---|---|---|
user_management_client | Public authentication. | none.v1_0_0 |
user_management_client | We use the keycloak in V15.0.2. | keycloak.v15_0_2 |
user_management_client | Simple internal client. | internal.v1_0_1 |
additional Keycloak configuration
Environment | Description | Example |
---|---|---|
keycloak_realm | Keycloak realm id. | test-realm |
keycloak_url | Url to your keycloak installation with "/auth" | https://localhost:8443/auth |
keycloak_client | Name of the keycloak confidential client. | cms |
keycloak_client_secret | Secret of confidential client. | test-test-test-test |
Custom configuration
Environment | Description | Example |
---|---|---|
user_management_client | Your own implementation of a user management. | yourClient.yourVersion |
Database
Environment | Description | Example |
---|---|---|
cms_database_mode | Database mode, see multi tenant | multi |
cms_database_driver | jdbc-driver class | com.mysql.cj.jdbc.Driver |
cms_database_url | url to database | jdbc:mysql://172.18.0.2:3306/ |
cms_database_prefix | Prefix for database (database name) | cms |
cms_database_user | database user | mysqluser |
cms_database_password | Password for database user | test-1234 |
Security Settings
Environment | Description | Example |
---|---|---|
security_max_field_per_request | Max fields to fetch in response. | 30 |
security_max_deep | Max deep to fetch in response. | 30 |
cors_allow_origin | CORS Header allow origin | * |
cors_allow_methods | CORS Header allow methods | * |
cors_allow_headers | CORS Header allow headers | * |
cors_allow_credentials | CORS Header allow credentials | true |
File Storage
Environment | Description | Example |
---|---|---|
file_storage | type of storage | local |
file_basepath | path of storage if local storage | /data |
Encryption
Environment | Description | Example |
---|---|---|
CYPHER_PASSWORD | 16 digit long key for database encryption | Test1234 |
Ports and URLs of CMS
Overview of the system ports and endpoints in your CMS.
Path | Port | Description |
---|---|---|
/ | 8100 | Root Path of your local stated CMS |
/v2/* | 8100 | Root endpoint for your data |
/swagger-ui/ | 8100 | See the Swagger configuration of your endpoints |
/ | 8101 | Management Port of your local stated CMS |
/actuator/health/ | 8101 | Health Endpoint for container services |
/actuator/metrics/ | 8101 | Metric Endpoint for monitoring services |
TIP
We are planning to make the ports configurable, please feel free to contact us if you have this specific need.
Postman Setup
Setup introduction for postman using with keycloak and the CMS.
Postman pre request script
var client_id = "yourClient";
var client_secret = "yourClientSecret";
var token_endpoint = "https://your.keycloak.com/auth/realms/your-realm/protocol/openid-connect/token";
var scope = "eamil";
var details = {
"grant_type" : "password",
"client_id" : 'yourClient',
"username" : 'yourUser',
"password": 'yourPassword'
}
var formBody = [];
for (var property in details) {
var encodedKey = encodeURIComponent(property);
var encodedValue = encodeURIComponent(details[property]);
formBody.push(encodedKey + "=" + encodedValue);
}
formBody = formBody.join("&");
pm.sendRequest({
url: token_endpoint,
method: 'POST',
header: {
'Content-Type': 'application/x-www-form-urlencoded',
'Authorization' :'Basic ' + btoa(client_id+":"+client_secret)
},
body: formBody
}, function(err, response) {
const jsonResponse = response.json();
pm.collectionVariables.set("access_token", jsonResponse.access_token);
});
Add the fetched token to Authorisation
-Tab in postman tab.
Name creation of models
The Name of models will be created with folder name in prefix.
Example:
- Folder
- ClassA Name will result in
FolderClassA
.
- ClassA Name will result in
DANGER
Please be aware of possible duplications in namings. (we are working on a fix for this) Example: If you create an "Offer" class in a "Service" Folder and an "Offe" class in a "rService" Folder, you create a duplicate we currently can not detect. (At least the lowercase role names will be running into troubles)