# Приложения

> Адрес приложения, сборка и версии, публикация и откат, уровни доступа и удаление.

> Оглавление всей документации: https://docs.getxflow.com/llms.txt

Приложение это веб-интерфейс для людей: кабинет менеджера, экран склада, форма записи. Код
пишет агент, собирает и раздаёт xflow. Приложение живёт в [проекте](https://docs.getxflow.com/platform/projects.md) и
пользуется его [базой](https://docs.getxflow.com/platform/database.md) и [функциями](https://docs.getxflow.com/platform/functions.md). В проекте
может быть несколько приложений, у каждого свой код, версии, адрес и уровень доступа.

## Адрес

```
https://<id>--<организация>.xflowpage.ru
```

`<id>` выдаётся при создании, `<организация>` это короткое имя
организации. Адрес не меняется при переименовании приложения или папки. Поисковикам
приложения не показываются.

## Добавить и собрать

`xflow apps add <папка>` создаёт приложение, кладёт стартовый шаблон в `apps/<папка>` и
печатает адрес. `xflow apps --json` выводит приложения проекта с id.

```bash
xflow deploy apps/<папка> -m "что изменилось"
```

Платформа проверяет исходники, собирает приложение в чистом окружении и сохраняет новую
версию. Если проверка не прошла, сборка не начинается, а агент получает список нарушений с
файлами и строками. Локальная сборка на платформу не попадает.

## Версии

Посетители видят одну версию, живую. Новая сборка не показывается, пока её не опубликуют,
кроме самой первой сборки нового приложения: она публикуется сама.

| Что хранится | Сколько |
|---|---|
| Сборки с файлами, к которым можно вернуться | три последних успешных и живая |
| История сборок | 30 последних |
| Исходники ревизий | пока их сборка в истории, и 10 последних |

`xflow deployments` выводит сборки. Сборка без файлов помечена `no pages`: на неё уже не
вернуться. Код, который нельзя потерять, держите в своём git.

## Публикация и откат

Публикация переключает адрес на выбранную сборку без копирования файлов: за секунду и без
пустого экрана.

| Действие | Как |
|---|---|
| Опубликовать последнюю сборку | кнопка «Опубликовать» в шапке приложения или `xflow publish` в папке приложения |
| Вернуть прежнюю сборку | `xflow publish <номер>` или `xflow rollback <номер>` |
| Без папки | `--app <id>` у тех же команд |

Откат касается только приложения: функции и база проекта остаются текущими. Функции
откатывают отдельно: `xflow deploy functions --revision N`.

## Кто может открыть приложение

| Уровень | Кто откроет | Тариф |
|---|---|---|
| Участники проекта | вошедшие в xflow люди с доступом к проекту | любой |
| Любой по ссылке | кто угодно, без входа | Старт и выше |

На Бесплатном тарифе приложение работает только внутри xflow: прямой заход по адресу уводит на
экран приложения в xflow. Старт добавляет прямой адрес и «Любой по ссылке».

Отдельного списка людей у приложения нет: его открывает каждый, кому открыт проект.

Уровень меняет человек: окно «Опубликовать» в шапке приложения, поле «Кто может открыть».
Пересборка не нужна, агент уровень не меняет. При переключении на «Любой по ссылке» интерфейс
показывает функции, которые станут [открытыми](https://docs.getxflow.com/platform/functions.md), и просит подтвердить. На
этом уровне платформа никого не узнаёт: вход, пользователей и права на данные делает само
приложение через свои функции, см. [Вход в публичном приложении](https://docs.getxflow.com/develop/public-signin.md).

## Удаление

В интерфейсе, из меню приложения, с вводом названия. Удалить может автор проекта или Админ.
Через CLI приложение не удаляется. Удаляются код, версии и адрес; база, функции и файлы
проекта остаются. Корзины нет.
