Rationale: It is the offered system by Fraunhofer (organizational constraint).
For KST Platform OAuth 2 Authorization Server
Keycloak
Rationale:
The development team is familiar with this technology.
It is free (no costs) and open source.
For KST Platform Backend Development
Java 17: A programming language.
Rationale: The development team is familiar with Java software development.
Spring: A framework for developing modern Java-based enterprise applications.
Rationale:
The development team is familiar with Spring.
Spring offers a wide variety of projects that provide the needed support to develop the backend application, such as:
Spring Boot: A library that provides a complete runtime environment with low configuration effort to run spring applications.
Spring WebFlux: A reactive web framework for spring.
Spring Security, OAuth2 Resource Server: A library that protects endpoints in spring web applications. The library assumes that the web application is a resource server as defined in the OAuth2 protocol.
Spring Boot Actuator: A library that provides health checks and monitoring capabilities for spring boot applications.
Spring Boot Validation: A library that adds input validation capabilities (for endpoints exposed by spring web applications) to spring boot applications.
Spring Boot Mail: A library for sending emails from spring boot applications.
Jetty (Webserver): An open source web server and servlet container written in java with low resource consumption and fast response times.
Rationale:
The development team is familiar with jetty.
It can be embedded into a spring boot application.
It uses less resources than tomcat, which is the default embedded servlet container for spring boot application.
SpringDoc OpenAPI: A J__ava library automates the generation of API documentation for S_pring Boot_ projects.
Rationale: It works well with Spring Controllers (the way we implement the endpoints).
SLF4J: (Simple Logging Facade for Java) A library that provides a Java logging API.
Rationale: Standard, convenient.
MongoDB: A document based NoSQL database (for Persistence).
Rationale: It is easy to use and the development team is familiar with it.
Gradle: A Build tool.
Rationale: Fast building (short building time).
JsonSchema Validator: To validate the structure of JSON objects (that they adhere to the defined JSON schema). Note: we use JSON schema to describe the valid data structure of the JSON objects.
GeoTools: An open source java library for handling GeoJSON data.
JUnit 5 & Mockito: A java unit testing framework for Unit Testing.
Rationale: It is easy to use, provides a better developer experience, faster commit-to-release, offered by the used version control system (GitLab).
Renovate Bot: A tool that regularly scans the Git repositories for outdated dependencies and automatically creates merge requests for the available version updates.
Rationale: It provides good support to keep the dependencies up-to-date.
Docker: A containerization tool.
Rationale: It is the state of the Art technology to bundle and operate server side applications.
For KST Platform Frontend Development
Typescript: A programming language.
Rationale: The development team prefers Typescript over plain JavaScript because of the better IDE support (warnings, code completion).
React: A Front-end JavaScript library for building user interfaces.
Rationale: It is the state of the Art Technology for SPAs (Single Page Applications), and the development team is familiar with React.
Material UI: An open-source React component library that implements Google’s Material Design.
Rationale: It offers a comprehensive nice looking and easy to use set of components, and has typescript support out of the box.
Rationale: Keycloak JS is provided by the keycloak open source project, and thus, it works perfectly together with keycloak.
openapi-generator: A tool that automatically generates API client libraries (SDK generation), server stubs, documentation and configuration given an OpenAPI Spec (v2, v3).
Rationale: It works good with the openapi specifications created by springdoc to generate the API client libraries.
npm: A package manager.
GitLab CI/CD
Rationale: It is easy to use, provide a better developer experience, faster commit-to-release, offered by the used version control system (GitLab).
Renovate Bot
Rationale: It provides good support to keep the dependencies up-to-date.
Docker
Rationale: It is the state of the Art technology to bundle and operate server side applications.
lighttpd: A web server software.
Rationale: It is a very lightweight and fast web-server for static content.