# Проекты

> Что лежит в проекте, как его создать и связать с папкой, кому он открыт и как его удалить.

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

Проект это коробка под одну задачу бизнеса: «Склад», «Заявки», «Клиника». В нём общие части
для его приложений: одна [база данных](https://docs.getxflow.com/platform/database.md), [функции](https://docs.getxflow.com/platform/functions.md)
с расписаниями, [переменные и секреты](https://docs.getxflow.com/platform/secrets.md), [файлы](https://docs.getxflow.com/platform/storage.md) и
люди с доступом. Код живёт в [приложениях](https://docs.getxflow.com/platform/apps.md). Проект всегда принадлежит
организации, личных проектов нет.

## Создать проект

В интерфейсе, кнопка «Новый проект»:

- **Создать через агента**: xflow даёт фразу для чата агента, агент заводит проект сам;
- **Создать пустой проект**: проект с первым приложением из стартового шаблона. Так заранее
  настраивают базу и доступы, а агента подключают потом по инструкции внутри проекта.

Агент создаёт проект с первым приложением и папкой на компьютере:

```bash
xflow init <папка> --name "Склад"
```

| Флаг | Что делает |
|---|---|
| `--name` | название проекта |
| `--app <папка>` | имя папки первого приложения |
| `--no-app` | проект без приложений: автоматизация, чьи функции запускают расписание, вебхук или человек |

## Папка проекта

```
sklad/
  xflow.json            id проекта и кто может звать каждую функцию
  package.json          зависимости функций
  functions/<имя>/      функции, общие для всех приложений
  migrations/           миграции базы
  apps/
    priem/              приложение со своим xflow.json
    ostatki/
```

У проекта две истории изменений, их отправляют разными командами:

| Что отправить | Команда |
|---|---|
| функции, миграции и корневой `xflow.json` | `xflow deploy functions` |
| одно приложение | `xflow deploy apps/<папка>` |

Корень и приложения друг с другом не уезжают. Функции внутри папки приложения сборка не
принимает.

## Связать проект с папкой

| Команда | Что делает |
|---|---|
| `xflow projects list` | проекты организации с id |
| `xflow link <id>` | в пустой папке забирает весь проект: корень и каждое приложение |
| `xflow projects get` | карточка проекта: приложения, база, функции с зовущими, расписания |
| `xflow status` | чем папка отличается от платформы |
| `xflow pull` | забрать последнюю версию с платформы |
| `xflow pull --revision <N>` | забрать конкретную версию |

Многие команды работают и без папки: им передают `--project <id>`.

## Несколько человек на одном проекте

Платформа не сводит правки двух людей: код держат в git, а на платформу отправляют уже
сведённую версию, обычно из CI. Если папка отстала от платформы, `xflow deploy` откажет и предложит сначала забрать свежую
версию. `--force` кладёт папку поверх чужой работы. Прежняя ревизия хранится, пока она среди 10
последних, и команда печатает `xflow pull --revision N`, которым её вернуть.

## Кому открыт проект

Новый проект видят автор и Админы. Открывают его людям, группам или всей организации в окне
«Пригласить» на экране проекта, с уровнем «Просмотр» или «Редактирование». Уровни и роли:
[Участники и доступ](https://docs.getxflow.com/platform/access.md).

## Удалить проект

Удаляют в интерфейсе: автор проекта или Админ. Через CLI проект не удаляется. Корзины нет:
удаление сразу и целиком стирает приложения с версиями, функции и расписания, базу и файлы.
Восстановить нельзя.
