- System design
- Code structure
- Building the system
- Plugin design
- Plugin development
- Core development
To build the project and manage dependencies, Apache Maven is used.
The backend is written in Java (8 and above) with the help of JAX-RS Framework. The project uses PostgreSQL (10 and above) as a database.
The following libraries are used:
The dependences are managed by the Bower package manager, included in the Maven project with the help of frontend-maven-plugin.
The frontend uses dependency injection (via the builtin AngularJS mechanism).
Headwind MDM web panel consists of the following modules (which are the submodules of the root Maven project):
The directory install contains the installer scripts for Ubuntu Linux.
All modules have similar code structure, see the picture.
conf – the configuration of web app module, that is, server. The configuration is dynamically generated from build.properties during the build phase.
src/main/java – backend code
src/main/resources – resources (instruction for the Liquibase database migration)
src/main/webapp – frontend code
target – build results
webtarget – Bower configuration for frontend, also the downloaded third party libraries are stored here.
The backend code (src/main/java) consists of the following components:
guice – the code for the Guice module initializers (database, binding configuration to the class properties, etc.)
persistence – the code for models and DB, in particular:
persistence/domain – model classes, for DB and JSON (to send and receive REST requests)
persistence/mapper – the code mapping model classes to SQL
*DAO files are Data Access Objects implementing the high-level logic of model manipulation.
rest – the code for web services, in particular:
rest/json – the code for JSON representations of requests and responses (if they differ from the persistence models)
rest/resource – this code implements REST web resources (here you can find the URL mapping)
The frontend code (/src/main/webapp) has the following structure:
app/app.js – this is the main app module. Here you can, for example, find and update the common constants.
css, images – static web resources (CSS and images).
localization – localization strings for the system core.
The code of components (including plugins) contains controllers, services and views.
One controller file may contain multiple controllers of the logically bound components, for example, the controllers of the list and edit dialog.
The views for modal popup windows are located in the view/modal subdirectory and have the extension .modal.html.