> ## Documentation Index
> Fetch the complete documentation index at: https://docs.layeron.ru/llms.txt
> Use this file to discover all available pages before exploring further.

# Storage и Env

> Как загружать файлы в Cloud Storage и хранить переменные окружения проекта.

## Storage

Storage нужен для файлов, которые приложение должно использовать после deploy: изображений, иконок, документов и других ассетов.

### Поддерживаемые форматы

| Тип  | Примеры         |
| ---- | --------------- |
| JPEG | `.jpg`, `.jpeg` |
| PNG  | `.png`          |
| WebP | `.webp`         |
| GIF  | `.gif`          |

Максимальный размер одного изображения в интерфейсе Cloud: **10 MB**.

### Как загрузить файл

<Steps>
  <Step title="Откройте проект">
    Перейдите в проект и откройте панель Cloud.
  </Step>

  <Step title="Перейдите в Storage">
    Откройте вкладку Storage. Если Cloud еще не включен, сначала включите его для проекта.
  </Step>

  <Step title="Загрузите файл">
    Выберите файл на компьютере. После загрузки Layeron покажет список файлов, размер и публичный URL.
  </Step>

  <Step title="Используйте URL в проекте">
    Скопируйте публичный URL и попросите чат подставить его в нужное место приложения.
  </Step>
</Steps>

<Tip>
  Для интерфейсных изображений лучше загружать оптимизированные `.webp` или `.png`, чтобы preview открывался быстрее.
</Tip>

### Удаление файлов

Удаление файла из Storage убирает его из хранилища проекта. Если этот URL уже используется в коде, изображение может пропасть из интерфейса.

Перед удалением проверьте, что файл больше не нужен проекту.

## Env

Env хранит переменные окружения проекта. Это правильное место для API keys, токенов, URL внешних сервисов и других настроек, которые не должны лежать в коде.

### Примеры переменных

```bash theme={null}
VITE_API_URL=https://api.example.com
PUBLIC_SITE_URL=https://example.com
NEXT_PUBLIC_ANALYTICS_ID=...
```

### Правила имен

Имена переменных должны быть в верхнем регистре и состоять из латинских букв, цифр и `_`.

| Хорошо                     | Плохо                      |
| -------------------------- | -------------------------- |
| `VITE_API_URL`             | `vite_api_url`             |
| `PUBLIC_SITE_URL`          | `PUBLIC-SITE-URL`          |
| `NEXT_PUBLIC_ANALYTICS_ID` | `NEXT PUBLIC ANALYTICS ID` |

Для frontend-проектов используйте публичные префиксы, если значение должно быть доступно в браузере: `VITE_`, `NEXT_PUBLIC_` или `PUBLIC_`.

<Warning>
  Любая переменная, доступная в браузере, не является настоящим секретом. Не помещайте приватные ключи в frontend-код.
</Warning>

### Как добавить переменную

<Steps>
  <Step title="Откройте Env">
    В панели Cloud откройте вкладку Env.
  </Step>

  <Step title="Введите имя и значение">
    Имя будет приведено к верхнему регистру. Значение скрывается в интерфейсе.
  </Step>

  <Step title="Сохраните переменную">
    Layeron добавит переменную в окружение проекта.
  </Step>

  <Step title="Перезапустите или redeploy проект">
    Чтобы приложение увидело новую переменную, может потребоваться новый запуск проекта.
  </Step>
</Steps>

### Что не хранить в проекте

Не добавляйте в файлы проекта:

* `.env` и `.env.local`
* `.npmrc`
* SSH-ключи
* приватные токены
* доступы к платежам, базам данных или админкам

Храните такие значения только в Env и не вставляйте их в чат как обычный текст.
