# Apps

Apps provide an interface for end-users to view and interact with the data in a solution. A solution can have many apps and they all share a common data model. This allows you to create targeted apps that serve a specific purpose for a group of users For example, a common pattern is to have one app for customers and another for admin users.

Building an app consists of three main elements:

* A [user interface (UI)](#ui) to create the visual structure and design of the app for end-users.
* [Data](#data) to define variables and what objects in the database can accessed and manipulated.
* [Actions](#actions) to add logic for data manipulation and app navigation.

Apps can be built with responsive design, supporting multiple screen sizes and device types, or restricted to certain screen sizes. By default, apps require authentication and support fine-grained user permissions, but they can also be published to the open web.

Apps built using Appfarm Create are Progressive Web Apps (PWAs) and this enables users to [install an app on their device](/how-to/security-testing-and-deployment/install-an-app-on-a-device.md) and use it in much the same way as a native app, without having to download it from an app store and keep it updated.

## UI

The user interface of an app is built up of [views](/reference/apps/ui/views.md) that represent the pages, dialogs and menus a user can interact with. A view is constructed using a library of customizable [UI components](/library/ui-components.md) to render static text and images, collect user input, and display data from the database. Additional interactivity is enabled using actions.

{% content-ref url="/pages/-MiQLLRUaw0Z2CZHxp97" %}
[UI](/reference/apps/ui.md)
{% endcontent-ref %}

## Data

Data contains the [data sources](/reference/apps/data/data-sources.md) which an app can use to read and manipulate data. Built-in data sources such as [App variables](/reference/apps/data/app-variables.md) are used to track and manage the state of an app, and custom data sources can be added used to access and store data in the database. Data sources and individual properties are available in the UI and actions using [data bindings](/reference/platform-concepts/data-bindings.md).

{% content-ref url="/pages/-MiQO4iRwkI-AtSszJyD" %}
[Data](/reference/apps/data.md)
{% endcontent-ref %}

## Actions

Actions are blocks of logic used to run data operations and move between the views in an app. Actions consist of one or more [action nodes](/library/action-nodes.md) – pre-built logical operations with customizable properties. An action is typically run when triggered by an [event](/reference/platform-concepts/event-handlers.md).

{% content-ref url="/pages/-MiQOJoyKAOKxR\_vE8rO" %}
[Actions](/reference/actions.md)
{% endcontent-ref %}


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.appfarm.io/reference/apps.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
