Mini App: настройка владельцем
Всё оформление мини-аппы настраивается в веб-кабинете, раздел Мини-приложение. Экран показывает живые превью: карточки тем и «телефон» справа — это настоящая мини-аппа в iframe (/app/?mock=1&variant=…), так что владелец видит ровно то, что получат подписчики. Превью в «телефоне» обновляется по мере правок; после сохранения подписчики получают новое оформление при следующем открытии мини-аппы — без пересборки и деплоя.

Тема и брендинг
| Поле | Ограничения | Что делает |
|---|---|---|
| Тема | одна из 18 — базовые: minimal, private, buddy, native, terminal, magazine, neon, pop; строгие: onyx, swiss, ledger, graphite, atlas, noir, steel, ivory, sable, quartz | Выбор кликом по карточке-превью; карточки показывают нативный акцент каждой темы |
| Название | до 64 символов | Название приложения (заголовок окна мини-аппы) |
| Приветствие | до 256 символов | Текст в самом верху Главной; пусто — блок скрыт |
| Акцентный цвет | #RGB / #RRGGBB | 7 пресетов + свой HEX + сброс «✕» (сброс возвращает нативный цвет темы). Перекрашивает кнопки и акцентные элементы поверх выбранной темы |
| Масштаб фото | 70–130% | Ползунок масштаба обложки |
| Масштаб интерфейса | 85–115% | Ползунок ui.scale — базовый размер шрифта всей мини-аппы |
Строгий набор — 10 сдержанных деловых тем без градиентов и неона: Оникс (уголь и серебро), Швейцарский (белый лист, чёрная типографика, красная точка), Гроссбух (банковская зелень на кремовой бумаге), Графит (матовый серый со стальным синим), Атлас (глубокий нави с латунью), Нуар (чистое ч/б), Сталь (холодный металл), Слоновая кость (тёплый светлый с серифами), Соболь (почти чёрный с бронзой), Кварц (нейтральный серый с приглушённым индиго). Каждая поддерживает светлую и тёмную схему; лендинг наследует ту же тему.
Кнопка Опубликовать сохраняет конфиг и ставит отметку публикации (published_at); при правках без публикации появляется отдельная кнопка «Сохранить». Технически экран работает через GET/PATCH /api/admin/miniapp и POST /api/admin/miniapp/publish.
Порядок блоков на главной и видимость
Пять секций Главной можно переставлять стрелками и скрывать/показывать (👁 / 🚫):
- Статус подписки (
status) - Тарифы и оплата (
plans) - Пригласи друга (
referral) - MTProto-прокси (
proxy) - Свои блоки и кнопки (
custom) — сюда попадают кастомные блоки и кнопки, назначенные на Главную
Тексты и цвета кнопок
Шесть встроенных кнопок можно переименовать (до 32 символов) и перекрасить, не трогая остальную тему:
| Ключ | Кнопка |
|---|---|
renew | Продлить / Купить |
share | Поделиться (рефералка) |
open_app | Открыть в приложении |
get_link | Получить ссылку |
connect_proxy | Подключить прокси |
trial | Попробовать бесплатно |
Кастомные блоки и кнопки-ссылки
Два конструктора добавляют собственный контент на любой из трёх экранов (Главная / Подключение / Кабинет):
Свои блоки (до 16) — контентные карточки: эмодзи-иконка, заголовок (до 64), текст (до 1000, с переносами строк) и опциональная кнопка-ссылка (подпись до 32 + URL + цвет). Подходит для акций, анонсов, ссылок на канал.
Свои кнопки-ссылки (до 16) — отдельные кнопки: подпись (до 32), URL, стиль primary (залитая) или ghost (контурная), свой цвет.
Ссылки фильтруются
Разрешены только схемы https://, http://, tg:// и mailto: (до 512 символов) — всё остальное отбрасывается и на сервере, и на клиенте. Telegram-ссылки (tg://, t.me/…) открываются нативно, остальные — в браузере.
На этом же экране настраивается блок «Сайт (лендинг)» — публичная витрина на корне домена (/): заголовок, подзаголовок, до 8 карточек-фич, до 8 вопросов FAQ и цель кнопки «Личный кабинет» (веб-кабинет или бот). Сайт использует ту же тему и акцент, что и мини-аппа.
Превью тем по URL
Мини-аппа открывается в браузере в mock-режиме — без Telegram и без реальных данных. Этим пользуется и сам экран кабинета, и это удобно для быстрой проверки любой темы:
https://<домен>/app/?mock=1&variant=a # …&variant=b … &variant=r| Параметр | Значения | Что делает |
|---|---|---|
mock=1 | — | Принудительный mock-режим (демо-данные) |
variant | a..r или имя темы (minimal…quartz) | Тема для превью, перекрывает сохранённую |
mode | light / dark | Фиксирует цветовую схему |
accent | #HEX | Акцентный цвет |
lang | ru / en | Язык интерфейса |
title, greeting | текст | Переопределяют заголовок и приветствие |
tab | home / connect / account | Открыть конкретную вкладку |
wstep | 0..3 | Открыть шаг мастера подключения (интро / приложение / подписка / готово) |
wapp, wother | ключ приложения / 1 | Выбранное приложение мастера и режим «другое устройство» |
Как мини-аппа попадает к подписчику
URL мини-аппы хранится в настройке SUBSCRIPTION_MINI_APP_URL (категория «Подписки» в настройках). Если она пуста, при старте бот подставляет <WEB__PUBLIC_URL>/app автоматически и устанавливает кнопку меню чата «VPN» (MenuButtonWebApp). Отдельно деплоить мини-аппу не нужно — статика miniapp/app/ отдаётся тем же веб-сервисом по пути /app.
