Architecture

Back

ProjectBuilder Components

The ProjectBuilder itself is based on the same project structure like the starwit/reacthook-spring-template. The following description is valid for both. The project, based on Spring Boot is build via maven and is parted in subprojects shown in the diagram below.

Components projectBuilder

The following subprojects exist in every project built with projectBuilder:

application

This subproject defines the overall spring boot application. It contains spring boot application configuration and is needed to build the application.

persistence

This subproject contains classes for database access. In this project, all database scripts are placed. Through flyway, these scripts are executed automatically during the project’s start. Two databases have to be supported with the scripts: h2 (for tests) and MySQL.

rest

This subproject enables the access from UI via RESTful webservices.

webclient

The UI logic is placed in the webclient project. React is used. The Frontend is utilized with Material-UI and its design structure (mostly based on JSS).

ProjectBuilder specific

In ProjectBuilder, one additional project is implemented:

generator

The generator project contains all logic to generate projects configured with the ProjectBuilder.

Code generation via freemarker enables publishing of an entire running application via ProjectBuilder. The intent is to help to do the first step and using a standardized way to implement standard functionality. So, you will just generate once and change the code in the way you want. This pragmatic approach avoids a complex code generation.

Complete Components

In the deployments folder, different docker-compose scripts exists in order to deploy ProjectBuilder with additional components:

Components

The components are used as followed:

  • certbot + Nginx: provides SSL-certificate-handling in order to do HTTPS
  • keycloak: authentication and authorisation. For development, keycloak is using an integrated database. In production, an additional MariaDB is used
  • mariaDB: Database for projectBuilder
  • mariaDB for keycloak