A12: Frequently Asked Questions Part 2

This FAQ answers common questions about the Enterprise Low Code platform A12. For an in-depth introduction, refer to the Whitepaper “A12 – Low Code for Custom Enterprise Software.” The FAQ is continuously updated. Have more questions? Feel free to reach out or schedule a demo.

Read Part 1 of the A12 FAQ

Contents

5.1. How is the security of the A12 platform ensured?
5.2. How are A12 projects secured?
5.3. What is mgm ATLAS?
5.4. My application must meet the securoty requirements of the “IT-Grundschutz-Bausteine” according to the German BSI. Is this possible with A12?
6.1. What is A12 Plasma?
6.2. How does the UI modeling work in A12?
6.3. Does A12 support accessibility?
6.4. Can you build mobile applications with A12?
6.5. What themes does A12 offer?
7.1. What options does mgm offer for the operation of A12 applications?
7.2. Does A12 support Kubernetes?
7.3. Will A12 run on OpenShift clusters?
8.1. Can parts of the A12 platform be used separately?
8.2. Which A12 components are available?
8.3. Where can I find the source code of A12?
8.4. On which specific technlologies is A12 based?

5. Security

5.1. How is the security of the A12 platform ensured?

A12 follows the principle of Security by Design. Security requirements are taken into account from the very beginning to prevent potential weaknesses. Security experts accompany all phases of development – from early requirements to architectural decisions and acceptance tests. In addition, the enterprise low code platform is continuously tested intensively with the help of the security test platform mgm ATLAS.

5.2. How are A12 projects secured?

The security measures required in each case must be defined individually according to the requirements of the project. Basic guidelines, best practices, and recommendations for the secure use of A12 are summarized in the A12 Security Guidelines. They are available on the GetA12 documentation platform and outline what a secure standard configuration looks like based on the A12 Full-Stack Project Template. In addition to securing service endpoints and the approach for a logging strategy that takes into account the requirements of the General Data Protection Regulation, the documentation includes tips for a secure configuration of Keycloak as an identity provider and recommendations for the use of security headers.

5.3. What is mgm ATLAS?

ATLAS is a security toolset developed by mgm that integrates a number of tools such as OWASP Dependency Check, ZAP, and sqlmap. It enables automated security tests and provides consolidated reporting. Among other things, ATLAS checks for known vulnerabilities in third-party components, detects configuration issues such as missing HTTP security headers, and tests how robust APIs are against attacks such as injection attacks. With the help of ATLAS, the A12 platform is continuously and automatically scanned for vulnerabilities. We also recommend the use of ATLAS in A12 projects.

5.4. My application must meet the securoty requirements of the “IT-Grundschutz-Bausteine” according to the German BSI. Is this possible with A12?

Yes, the software development lifecycle (SDLC) of A12 already takes into account the requirements of the CON.8 software development module. The relevant requirements must be updated in the development phase of the application on the basis of A12. Finally, there are specifications for operation (OPS module) that must be taken into account. mgm already has experience in the successful implementation of the strict specifications of the “IT-Grundschutz-Bausteine” – both as a supplier and as an operator.

6. UI/UX

6.1. What is A12 Plasma?

A12 Plasma is a design system that mgm has developed specifically for business applications. It consists of UI/UX components, usage patterns, and design guidelines that allow for consistent, efficient, and attractive user interfaces. The A12 Widget Showcase contains examples of all available plasma components. In contrast to pure design languages such as Material Design, Plasma also takes into account the extended functionality typically required by business applications. This includes, in particular, aspects such as scalability and the handling of high information density.

6.2. How does the UI modeling work in A12?

A12 uses special UI models for the design of the user interface. They, too, are guided by the idea of separating technology from content. UI models enable an abstract representation of the interaction structure – for example, the structure of a form – without being hard-wired to a specific technical implementation. This has the advantage that the technical display details and the design can be developed separately from the UI models. This makes it much easier to implement a consistent and accessible user interface. The Plasma Design System is used for the actual realization.

6.3. Does A12 support accessibility?

Yes, the A12 platform is designed for building accessible web applications. Numerous UI components – including the model-driven engines for forms and overviews – are accessible out-of-the-box. However, in the project practice of individual software development, there are always additional aspects to consider. There are specific requirements that a Low Code platform per se cannot cover. For this purpose, the A12 team offers projects practical assistance in the form of a regularly updated guide. It contains, for example, background information on accessibility certification, design specifications, and requirements for modeling and development.

6.4. Can you build mobile applications with A12?

Yes, A12 is designed for developing responsive and device-independent web applications. They provide a first-class user experience across mobile devices such as tablets and smartphones.

6.5. What themes does A12 offer?

A12 provides four officially supported themes to choose from (Default, Compact, Flat, and Flat-Compact), which are specifically designed to meet the requirements of business applications. Default and Compact themes follow a structure-focused design. Flat and Flat-Compact offer a content-focused design with more discreet navigation elements. In addition to these standard themes, extensions can also be used to create your own individual themes.

7. Operations

7.1. What options does mgm offer for the operation of A12 applications?

For business-critical software, it is essential that sensitive data is stored in a trustworthy, secure environment, and that smooth operation is ensured. The importance of maintaining full control over operations is something we see time and again with our customers in the e-commerce sector, for example. At times of high demand, such as during the Christmas business, the systems run at maximum load for a long time without downtime. To achieve this, the software must be both performant and scalable. On the other hand, it also requires sole control over the underlying infrastructure and the release versions used.

We offer the following options for the deployment of A12:

  • On-premise operation in the company’s own data center
  • Operation in the private cloud of mgm, hosted in a data center in Germany
  • Cloud operation with any cloud provider

7.2. Does A12 support Kubernetes?

Yes, A12 applications are designed to be deployed on Kubernetes clusters by default. Based on experience from several large software projects, we have selected a set of tools from the Kubernetes ecosystem that we recommend as the default stack. In principle, however, A12 applications can be operated with different technology stacks – depending on the specifications of the respective hoster.

7.3. Will A12 run on OpenShift clusters?

Although A12 applications do not run out-of-the-box on Red Hat OpenShift clusters, they can be run in such environments by modifying the configuration.

8. Technology

8.1. Can parts of the A12 platform be used separately?

Yes, A12 is modular and divided into different components. The cut of the A12 components is technically motivated. Each component has a clear scope and clear interfaces to the outside. The components can be used flexibly – even individually. For example, you can use the client and write the server yourself.

8.2. Which A12 components are available?

Component

Included in Platform License

Description

Client Yes Model-Driven, client-side runtime component. Implements the UI/UX concept of the Plasma Design System and supports desktop, tablet, and smartphone. Main tasks include the orchestration of other UI components, especially the A12 engines, data retrieval, and state management.
Engines Yes
Model-driven UI components. Engines interpret data
and UI models. They are based on the Plasma UI/UX
concepts and use the widgets for rendering.
Widgets Yes
Widget Library, based on Plasma UI/UX concepts.
See also A12 Widget Showcase.
Kernel Yes
Bundles everything for the creation and processing of
document models: modeling tools, language for validations and calculations, client-and server-side runtime components, Java and Typescript API.
Data
Services
Yes
API for managing models and data. It also contains routines for client/server communication, validation, persistence and indexing.
User Man
agement, Authentica-
tion and Authorization
Yes
Bundles solutions around authentication (Keycloak, OAuth 2.0, SAML, LDAP), authorization (Spring Security, RBAC, ABAC, custom logic) and user management.
Workflows Yes
Integration of Business Process Model and Notation
(BPMN) in A12; enables graphical modeling of server-
side workflows and their execution.
Simple Model Editor Yes
Modeling tool for business analysts.
Installer Yes
Provides all current and compatible A12 products and
tools in a pre-configured package for local installation – allowing business analysts to access a modeling and demo environment.
ANTLR 4 Code Editor Yes

ANTLR (Another Tool for Language Recognition) is a well-established parser generator used, among other things, for building domain-specific languages. The component provides a code editor that can be integrated into A12 applications for editing such languages – including syntax validation and highlighting as well as auto-completion.

Rocket.Chat Integration Yes
Enables the integration of a live chat functionality into
A12 applications – for example, to allow customers to chat with service staff. Uses the open source chat platform Rocket.Chat in the background.
Chatbot Yes
The component can be used to bring chatbots into A12 applications. It uses the Rasa chatbot development
platform. Can be optionally combined with the A12 Rocket.Chat integration.
Print Engine Yes
Lets you generate accessible PDFs in A12 business applications. The Print Model Editor enables business analysts and subject matter experts to design the layout, design and content of PDFs. The Print Engine populates these templates of a print model at runtime with values from data fields of an underlying A12 document model.
Data Distribution No
Transport layer for the secure and fast synchronization of data. The technical service is designed to distribute data between servers and clients and to propagate
changes – especially in scenarios where clients are temporarily offline.
Notification Center No
Bundles notifications to users in one central location –
e.g. info on new tasks, news, appointments and reminders. Provides predefined notification types such
as reminders and workflow events. With the help of an API, your own individual notification types can be added.

8.3. Where can I find the source code of A12?

The source code of A12 is currently only available to customers and partners involved in selected large projects.

8.4. On which specific technlologies is A12 based?

The separation of domain knowledge and technology allows the technologies used to be exchanged as required. Currently, the technology stack of A12 is composed as follows:

A12 PRODUCT

TECHNLOLOGY

DESCRIPTION

Kernel Java
Typescript
Groovy
Antlr Parser generator
StringTemplates Template Engine
JAXB Mapping Java objects to XML
Jackson JSON processor for Java
Widgets Typescript
React Building UIs
Styled Components
CSS
styling
Recharts Chart library
DraftJS Rich text editor
React-Dnd
Drag and drop handling
React-virtualized
Rendering partial data into DOM
Redux State management
UAA Typescript
Redux
State management
oidc-client-js
OpenIdConnect authentication protocol
Java
Spring
Application framework for the Java platform
Spring Boot
Auto configuration for Spring application
Spring-security
Spring security approach for Authorization (SpEL-Spring Expression)
KeyCloak
identity and access management
OAuth2/OpenID
protocol for authentication
SAML
protocol for authentication
LDAP
protocol for accessing and maintaining distributed directory information services over an IP network
Data
Services
Java
Apache solr
Search index
WildFly
Application server
Apache Tomcat
Application server
Eclipse Jetty
Application server
PostgreSQL Database
Oracle
Database
H2
Local In-Memory-DB
Spring Security
authentication, authorization
Spring Boot
Auto configuration for Spring application
NodeJS
Java runtime environment
Typescript API
Workflows Kotlin
Spring
Application framework for the Java platform
Spring Boot
Auto configuration for Spring application
Camunda
Platform for BPMN workflow and DMN decision automation
Typescript Frontend
React
Building UIs
Webpack
JavaScript module bundler
NPM
package manager for JavaScript
Overview Engine Typescript
React
Building UIs
Stylus
CSS preprocessor
Recharts
Chart library
DraftJS
Rich text editor
React-DnD
Drag and drop handling
React-virtualized
Rendering partial data into DOM
Redux
State management
Form Engine Typescript
JavaScript
TSLint
Analysing Typescript
NodeJS
Java runtime environment
NPM
package manager for JavaScript
Lerna
Managing multi-package repositories
Webpack
JavaScript module bundler
React
Building UIs
Redux
State management
Marked
Markdown in expression language
Jison
Expression language
moment.js
JavaScript wrapper for the date object
Tree Engine Typescript
React
Building UIs
Stylus
CSS preprocessor
Recharts
Chart library
DraftJS
Rich text editor
React-DnD
Drag and drop handling
React-virtualized
Rendering partial data into DOM
Redux
State management
Chat Solution
A12 Client
frontend
A12 Widgets
frontend
Rocket.Chat
Web chat platform
NodeJS
Java runtime environment
MongoDB
Data persistence
Chatbot Python
Rasa
Chatbot development framework
Tensor-flow
Machine learning/differentiable programming framework
Scikit-learn
Machine learning library
Flask
Web framework
Client Typescript
JavaScript
TSLint
Analysing Typescript
NodeJS
Java runtime environment
NPM
package manager for JavaScript
Lerna
Managing multi-package repositories
Webpack JavaScript module bundler
React
Building UIs
Redux
State management
Inversify
Configuration injection
Data Modeler Java
Tycho
Building Eclilpse plugins
RCP Building Eclilpse plugins
SWT Widget toolkit for Java
JFace UI toolkit
Jackson
JSON processor for Java
JSONSchema
Validating the structure of json data
Slf4J simple facade or abstraction for various logging frameworks
LOGBack
logging framework for Java applications
UI Designer Java
Tycho Building Eclilpse plugins
RCP Building Eclilpse plugins
SWT Widget toolkit for Java
JFace UI toolkit
Jackson JSON processor for Java
JSONSchema
Validating the structure of json data
Slf4J
simple facade or abstraction for various logging frameworks
LOGBack logging framework for Java applications
Simple Model
Editor
A12 Front end
Typescript
React Building UIs
Redux
State management
Redux Saga
library used to handle side effects in Redux
A12 Installer
Typescript
React
Building UIs
Redux
State management
Redux Saga
library used to handle side effects in Redux
Spring Boot
Auto configuration for Spring application
H2 Database
Local In-Memory-DB
Electron
Software framework to develop desktop GUI applications using web technologies
Plasma Design
Adobe illustrator Creating graphical user interfaces
Adobe XD
Creating screens and lo-fi prototypes
Azure
Creating hi-fi prototypes
PUG
Template engine – create reusable HTML
BEM Creating extendable and reusable CSS
Documentation
Asciidoc
User documentation
Typedoc
Generating API documentation for TypeScript
Javadoc Generating API documentation for Java
QA, Testing &
Security
Enzyme
Unit tests
Cypress
Integration tests
Testcontainers Integration/system tests based on Docker containers
JUnit 5
testing framework for java applications
MockK
For Kotlin
H2
Local In-Memory-DB
QFS-Test-Suite
Automated surface tests
PerfLoad
Load testing
Selenium
Browser automation
Mocha
JavaScript test framework
TestCafe
Automating end-to-end web testing
Sonarqube
Continuous inspection of code quality
OWASP Dependency Check
Scanning for vulnerabilities
TestRail
Managing and tracking testing
JAX-RS
Integration tests
jMeter
Functional behavior and performance tests
TestNG
Unit, functional, end-to-end, integration tests
Python
Orchestrating Security Test Suite
Docker
Running Security Test Suite
Sqlite, MariaDB
Persistent Storage for Licenses, Credentials, Configuration
OWASP ZAP
Dynamic Application Security Testing
Postman/Newman
REST client for API Testing
OWASP DefectDojo
Security Reporting and Monitoring
Xanitizer
Static Application Security Testing
Chai
Assertion library for Node
NYC
Test coverage reporting
NPM audit
Security review of project’s dependency tree
Hamcrest
creating customized assertion matchers
Runtime
Docker/Docker-compose
defining and running multi-container Docker applications
Kubernetes
managing containerized workloads and services
Prometheus
systems monitoring and alerting toolkit
Grafana
analytics & monitoring
ELK (Elastic, Logstash, Kibana)
log management
Ansible
Automating configuration management & application deployment
Development-Infrastructure Jenkins Automation of builds and deployment
Artifactory
Managing code repositories
GIT
Version control
Bitbucket
Code Collaboration & Version Control
Gradle
Build automation
Maven
Build automation
Webpack
JavaScript module bundler
NPM
package manager for JavaScript

Looking for further information?
Contact the A12 team here.