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
6.4. Can you build mobile applications with A12?
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?
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?
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?
8.4. On which specific technlologies is A12 based?
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
|