in terms of the structure, here is a list of the most relevant/important modules/folders:
* admin-ui: Node.js application for our UI, bundled as a JAR file
* model: contains API and JPA implementation of the "data model"
* jaxrs: contains the REST endpoints of the server, some are used as "public API endpoints" (such as the sender or device registration), and others are less or more not public, they back the UI, and are protected by keycloak
* service: Contains a "service layer", basically less or more smart API wrappers around the DAOs, which are implemented via JPA
* push/model: Contains some push specific model classes, also reused by our java client
* push/sender: most important package. Here happens the most important: Sending of the push notifications, which is implemented via JMS, and the metrics processing (also via JMS), and storing metrics to the DB layer
* servers: builds the WAR files (for our custom keycloak, and our ag-push.war file)
Besides that we have docker-compose files, and database configuration (e.g. separated DB docker files)
Also, in the appendix of our users guide there is a bit of arch. overview: