Architecture
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.
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:
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