---
description: How your application will be built.
---

# App Architecture

[**The AppMaster.io no-code platform** ](https://appmaster.io/)builds applications in the same way as regular developers do. Therefore, the components of your application will be the same as any professional software.

![](https://3563768697-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MapxHzVskQ_27pNUTT4%2F-MkbT5fNaDAOVFLacIa-%2F-Mkbd7Y5N3dtc41XHLZH%2Fimage.png?alt=media\&token=9a5c9736-321b-4990-867c-99532042cdec)

## Backend and frontend ‌

The application created in AppMaster.io will consist of two main parts:&#x20;

* **Backend** - the back end of your application - everything under the hood. Here the general logic of work is determined, key parameters are configured, the main data processing processes are created; this part is located on the server and is not visible to users.&#x20;
* **Frontend** is the visual part of your application that users interact with. You can say that this is your application - how it will look from the side of users. This part is configured in one of the app editors - Web Apps for web apps and Mobile Apps for mobile apps.&#x20;

Because of this structure, you can simultaneously create a web and mobile application that will be connected to each other - through a common backend.

### Backend&#x20;

The **backend** of the applications that AppMaster.io creates can be hosted on your local server, cloud hosting AppMaster.io Cloud, or third-party storage - AWS, Azure, Google Cloud, etc.&#x20;

You can export binaries, custom files, and your application source code - and move wherever you want, automatically or manually.&#x20;

**The backend of your application** is built according to the following logic:&#x20;

* Database design - creating [data models and relationships](../data-design/what-is-data-models) between them.&#x20;
* Building business logic - setting up [business processes](../business-logic/business-processes-editor).&#x20;
* [Endpoint](../endpoints/endpoints-configuration) and [middleware](../endpoints/middleware) configuration. ‌&#x20;

[Modules](../modules/modules) are used to connect additional functions.

{% hint style="info" %}
We recommend adding all the necessary modules at once - they contain elements that will be useful to you during design and speed up development.
{% endhint %}

### Frontend&#x20;

After you design the back-end, you can go to the **front-end** settings - directly for applications - in one of the designers: [Web Apps](../web-apps/web-applications-designer) (for web applications) or [Mobile Apps ](../mobile-apps/mobile-applications-designer)(for mobile applications).

{% hint style="info" %}
The order of building an application in AppMaster.io is from backend to frontend. However, you can first create a mock application, and then "bind" the data and business logic.
{% endhint %}

## Database and data models&#x20;

All application data is stored in a strictly defined structure so that it can work with them using clear algorithms. The individual parts of this structure are called databases. For no-code database design, AppMaster.io uses a visual data model editor.

### Data models ‌‌

**Data models** are kind of tables with descriptions of data that are stored in databases. When you create a data model, you define exactly what data will be in your application, how it differs from each other, and how you can work with it. ‌

Data models are located in a separate designer AppMaster Studio - on the [**Data Design**](../data-design/what-is-data-models) tab.‌

![User data model (left) and menu for creating a new model (right)](https://3563768697-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MapxHzVskQ_27pNUTT4%2F-Mi7-MT_p0lh1VWRwTEI%2F-Mi74ulKLbapfJQ3apnr%2Fimage.png?alt=media\&token=aa9723f0-d2d3-40ee-bee4-cffc0d5538dc)

{% hint style="info" %}
**The data you entered** (users, customers, products, orders, messages, etc.) can be viewed in the finished application, but you will not see them in AppMaster Studio. In the designer, you will only work with a visual representation of the data storage structure and the processes that will occur with them.
{% endhint %}

## Business processes&#x20;

**Business processes** are logical sequences of actions that implement specific functionality in your application. For example, creating a customer request, booking a ticket, or sending a message. When creating a business process, you determine where the application will take information from, where to transfer it, how, and in what order to process it - that is, you set up **the business logic of the application**. ‌

You can create and edit business processes in a special designer on the [**Business logic** ](../business-logic/business-processes-editor)tab. The execution of business processes can be launched on a schedule, as well as called through other business processes or **endpoints**.&#x20;

![This is what a business process looks like when it is set up.](https://3563768697-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MapxHzVskQ_27pNUTT4%2F-MkbT5fNaDAOVFLacIa-%2F-MkbhUT1lHmTvGMInJE0%2Fimage.png?alt=media\&token=418216b1-4960-4798-a3aa-2b07034ae5de)

## Endpoints&#x20;

**Endpoints** are a kind of gateway that connects the server processes of your application to the front-end (web or mobile application itself). Each endpoint will be associated with a business process and a page (or screen) element - in order to transfer data between them. ‌

You can create and configure endpoints on the [**Endpoints**](../endpoints/endpoints-configuration) tab in AppMaster Studio.

![Endpoint creation and editing window.](https://3563768697-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MapxHzVskQ_27pNUTT4%2F-Mi7-MT_p0lh1VWRwTEI%2F-Mi77m81h1igyvgjNu_V%2Fimage.png?alt=media\&token=c815d120-d9e1-4c58-9898-e2467351dad1)

To manage complex tasks (access control, data filtering), middleware is connected to the endpoint. It plays the role of an additional link between the endpoint and the business process and allows you to further customize their interaction.&#x20;

Some middleware is added to your application by default, others when some modules are installed. For example, the **Auth** module, which is responsible for authorizing users, provides a **Token Auth** middleware for managing permissions to launch a specific endpoint.

![Token Auth on the Middleware tab in the endpoint creation window.](https://3563768697-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MapxHzVskQ_27pNUTT4%2F-Mi7-MT_p0lh1VWRwTEI%2F-Mi78tsXxOvT2LBN8j5D%2Fimage.png?alt=media\&token=37e02d5f-bf0b-4bd9-ae8e-f86b47d9000b)

Endpoints form what is called the **REST API** - the programming interface of your application for exchanging data implemented using the **REST** architectural approach.

## API AppMaster.io ‌

**API** (Application Programming Interface) is a set of tools that exchange data between the frontend of your application, its server part, as well as third-party applications, services, and sites connected to them. **REST** is the technology by which this data exchange takes place. ‌

**The API documentation for your application** is generated automatically and saved in OpenAPI (Swagger) format in its backend. ‌

You do not need to specifically understand how it works to master AppMaster.io - you will understand the basic principles by studying the platform tools. Besides, the main part of the API is created by AppMaster.io - most of the settings are made by default or when connecting modules. ‌

You will need to manually change some of the API settings when integrating (connecting) your application with other applications or external resources.

## Publication ‌

After you create an application (or change some part of it) in AppMaster.io Studio, it needs to be published - that is, posted on the Internet - in order to test or make it accessible to users.

{% hint style="info" %}
When you publish, the code generated from your diagrams in AppMaster.io Studio will be compiled - converted into a finished application.
{% endhint %}

You can publish your app to **AppMaster Cloud**, a third-party cloud service, or your personal server. Mobile applications can be placed on the App Store and Google Play.&#x20;

**Application server components** (including mobile application manager), **web applications**, and **Swagger** are packaged in a single binary file. This file can be compiled for various operating systems - Linux, Windows, MacOS with various processor architectures - x86-32, x86-64, and even ARM. ‌

**Mobile apps** can be published directly to the App Store or Google Play. Thanks to the **Mobile Apps Adapter**, you only have to publish your app in the store once - if you want to change or update it, in most cases you will not need to republish.&#x20;

**The Mobile Apps Adapter** is a modern real-time engine that connects mobile app endpoints and design into the user interface and data streams for deployed mobile apps. Rendering of the interface and data happens in real-time with no visible delay. This approach provides many options for editing applications without republishing them to stores.
