====== Architecture ======
{{tag>frontend architecture}}
The application is divided into 2 technological lines: backend (java) and frontend (javascript). There is a REST interface between the two.
===== Minimum executable application =====
The minimal executable application always contains the app + core modules.
==== Core module ====
Contains services, managers, components and individual core pages. More in [[.modularity|modularity]] and in the next chapter with layers.
==== App module ====
= Application, executable application. Connects modules with environment configuration.
===== Modularity =====
{{tag> modularity frontend architecture installation}}
TODO: Introduction
==== Installation/ module update ====
Installation/ module update is done by copying the module into the application libraries **/WEB-INF/lib**. Modules can also be included directly in the project dependencies (pom.xml modul app).
You can see a list of all installed modules and their status (enabled/disabled) in the Modules agenda in the Settings.
Modules can be enabled/disabled by setting **idm.pub..enabled** as true, or false.
==== Module-specific database scripts ====
Each module can contain its own set of [[.flyway|database scripts]], which are applied to the application database scheme at the start of the application (in the phase after initializing the data connection, or rather after initializing the hibernate context) => **the modules are automatically initializing and updating the database scheme themselves.**
==== Example module ====
The [[https://github.com/bcvsolutions/CzechIdMng/tree/master/Realization/backend/example|example module]] was created for module demonstration and, at the same time, as a template (skeleton) for creating a module with pre-filled configurations.