Skip to content

Тарифы и лимиты

Последняя сверка с кодом: 2026-06-12
Источник правды: backend/src/constants/planLimits.ts, GET /api/plans
Аудитория: PM, аналитики, QA


1. Тарифы

ЛимитFREEBASEPRO
Событий на аккаунт310
Файлов в событии1001 000
Хранение файлов7 дней30 дней90 дней
Видео: макс. длина30 сек2 мин10 мин
Макс. размер файла50 МБ100 МБ500 МБ
Модерация загрузок
Брендинг события (лого, фон, цвет)
Закрытый QR / private events

null в коде = «без ограничений».


2. Что применяется где

ЛимитГде проверяется
Число событийPOST /api/events → middleware requirePlanEventCreateassertCanCreateEvent
Файлов в событииTUS onUploadFinishassertEventMediaCapacity
Размер файлаTUS policy → assertFileSizeWithinPlanLimit
Длина видеоTUS / metadata
БрендингPOST /events/:id/branding/:kindassertCustomBrandingAllowed
МодерацияEventSettings.moderationEnabled (UI скрыт на FREE)
Приватный QREventSettings.qrAccess (MEMBERS_ONLY / INVITE_ONLY)

SUPER_ADMIN: обходит все план-лимиты через bypassesPlanLimits().


3. UX при превышении лимита

СитуацияHTTPКодUI
Создание события при maxEvents403PLAN_LIMIT_REACHEDToast об ошибке
Upload при maxFilesPerEvent403PLAN_LIMIT_REACHEDTUS error toast
Слишком большой файл403PLAN_LIMIT_REACHEDTUS error toast
Брендинг на FREE403Кнопка неактивна / toast

На /pricing — сравнение тарифов. Апгрейд — не реализован (PLAN 23.5 отложено, биллинг нет).


4. EventSettings vs Plan limits

Два уровня ограничений не путать:

УровеньКто управляетГде
Plan limitПлатформа (нельзя обойти)planLimitsService, middleware
EventSettingsOWNER (в пределах плана)/:id/settings, EventSettings

Пример: FREE не может включить moderationEnabled в настройках (поле скрыто в UI).


5. StorageDays

Файлы с истёкшим storageDaysавтоочистка не реализована (backlog). Сейчас поле используется в UI/marketing, фактического удаления нет.


6. Биллинг

Оплата смены тарифа — отложено (PLAN 23.5). Причина: юрлицо / 152-ФЗ / Stripe+РФ.
Тариф меняется сейчас только вручную через SUPER_ADMIN → /admin/users.