Building backend

The backend of an app built with Heisenware is responsible for three essential tasks:

  1. Integration with external services

  2. Data storage

  3. Data processing

Building blocks

To accomplish the mentioned tasks, static functions, objects, and object-related functions (object functions) serve as key backend building blocks.


To create the backend, instead of programming, you configure functions and establish links between them in Heisenware. Each function is designed to perform a specific action using input arguments and provides an output result for further processing. Functions can be triggered by events. If the built-in functions of the App Builder are not sufficient for a particular need, you can complement them with custom functions from various sources and services using the code adapter.


Objects can perform a specific range of actions and provide context to those actions by containing data. The actions an object can perform are represented by object functions. While each app has its own custom backend, objects are shared across a Workspace so that each app in that Workspace can make use of a specific object. To work with an object, it must either already exist in the Workspace or first be constructed with a create function.


To enable individual and targeted data modification and processing, the App Builder allows flexible code usage. You can use both simple and complex expressions in JavaScript, as well as the transformation and query language JSONata to process data even more individually.


This section provides an overview of the available backend features of the App Builder and classfies them to the three main tasks of the backend.


To facilitate data exchange between apps and external systems, Heisenware offers a variety of integration capabilities based on the availability of APIs, interfaces, and protocols in external systems.

Protocol connectors

Facilitate data exchange at the protocol level, supporting serial protocols, various network protocols, and automation technology protocols. To establish a protocol connection, you need to create an object, which subsequently provides various functions for the established connection.

Data connectors

Establish read-write connections with external relational and time series databases. To use data connectors, you have to create an object for the connection. Additionally, data connectors include the file connector, allowing connections to files for reading or writing.

API connectors

Enable data exchange at a higher, abstracted level compared to protocol connectors. They are designed for specific external systems offering clear APIs, including operating systems. Like other connectors, create an object for the connection to access the corresponding functions.

Edge connector

Helps to establish a read-write connection to systems, services, or files within private networks. The edge connector is therefore not a connector per se, but a vehicle for using protocol, data, and API connectors within the boundaries of private networks to send data into and fetch data from those private networks.

Communication interfaces

Integrations that facilitate the programmatic handling of communication tasks, such as sending emails via an external email server, receiving SMS messages, or managing incoming calls.

Code adapter

For remotely calling coded functions and adapting them within your apps. The code adapter is especially useful for integrating systems that lack a standard interface and so-called legacy.

If you are stuck integrating systems or data, please reach out to us. We usually find solutions to integrate the systems, data sources, and sinks you wish to integrate.

Data storage

Heisenware offers integrated data storage solutions for both relational (PostgreSQL) and time series data (InfluxDB). The integrated databases enable the development of standalone apps, eliminating the need for external data storage. Consequently, apps within the same Workspace can share stored data if desired.

Data processing

There are no limits to data processing in Heisenware. In case the broad set of built-in functions and tools for many types of processing is not sufficient, there is always the option of extending the functionality with simple code snippets and expressions within a clear framework.

Frontend communication

Backend and frontend communicate by exchange of data. Data exchange between the backend and frontend is established by linking functions with their frontend counterparts, widgets. Through this connection, functions can both set and receive widget properties. The link between a widget and a specific function part (input, trigger, output, extension) determines the direction of data exchange, specifying which data or events are transferred.

Last updated