Все возможности letscourt

Полный список функций по 8 группам. Это то, что уже работает в продакшене — не roadmap «когда-нибудь сделаем». Каждый пункт можно проверить демо-доступом или регистрацией клуба.

Подать заявку →

📅Расписание и брони

Сетка дня по кортам

Цветовая кодировка покрытий: хард → синий, грунт → терракотовый, трава → зелёный, падл → синий. Глядя на сетку видно занятость без чтения текста.

Бронь по телефону за ≤15 секунд

Click в клетку → попап с поиском клиента → выбор тренера → готово. Поиск показывает подсказки начиная с 2 символов имени.

Hover на броне

Через 250 мс появляется popover с клиентом, типом, тренером, оплатой — без открытия drawer. Удобно для быстрого взгляда.

Drawer редактирования

Click на бронь → справа выезжает drawer с inline-редактированием тренера, клиента, суммы. ESC закрывает.

Hold с таймером 10 минут

Hold-бронь автоматически снимается, если клиент не оплатил за 10 минут. Воркер expire-holds работает каждые 30 секунд.

EXCLUDE constraint в БД

Postgres физически не даст создать две пересекающиеся брони на одном корте. Гарантия не «постараемся», а на уровне базы данных.

Длительность 1–4 часа

При выборе 2/3/4 часов клетки в публичной броне объединяются. Если в диапазон попадает занятый слот — красная пунктирная рамка.

Типы: игра / тренировка / турнир / блок

Технический блок (уборка, ремонт) не считается в выручке. Турнирные сетки на 4-32 пары не путаются с обычными бронями.

👥Клиенты (CRM)

Карточки с метриками

Аватар-градиент по hash имени, потрачено всего, визитов, sparkline активности 12 недель — открыли список и сразу видно кто VIP кто пропадает.

Бейджи статуса

VIP / Абонемент / Долг / Уснул N дней — каждый бейдж окрашен. Строки клиентов с долгом подсвечены жёлтым.

Сегмент-фильтры

Все · VIP · С абонементом · С долгом · Уснувшие. Один клик — отфильтровано.

История бронирований

Карточка клиента показывает 50 последних броней с временем, кортом, тренером, оплатой. Inline-редактирование баланса.

Multi-tenancy

Один клиент = одна запись во всей сети клубов. Не «синхронизация», а архитектурно.

152-ФЗ из коробки

Кнопка «Удалить клиента» делает полное стирание данных, не soft-delete. Для соответствия требованию «право быть забытым».

💳Платежи и финансы

ЮKassa интеграция

Карты, СБП, идемпотентные webhook-и. Авто-возврат при отмене оплаченной брони.

Ручная отметка оплаты

Клиент пришёл и заплатил наличными — кнопка «Отметить оплачено» с выбором метода (наличные / перевод / карта офлайн / другое).

История каждой брони

Создана → Hold → Оплачена → (Отменена → Возвращена) — полная цепочка событий с временем и автором действия.

Финансовая аналитика

Период 7/30/90 дней, разрезы по клубам и тренерам, динамика выручки по дням, средний чек, конверсия в оплату.

🎾Тренеры и кабинеты

8 уровней разряда

Новичок / Любитель / III–I разряд / КМС / МС / МСМК. Каждый со своим цветом плашки. МСМК — чёрная (премиум).

Регалии

Массив строк через запятую — отображаются цветными пилюлями со ★ («Чемпион России 2018», «Финалист WTA»).

Кабинет тренера /coach

Своё расписание во всех клубах сети, занятия, история выплат, расчёт «к получению» в реальном времени.

Расчёт выплат

Confirmed-часы × ставка тренера → автоматически. Через UI у director создание payout документ-заявки.

Рейтинг /leaderboard

Топ-3 пьедестал, ранг по выручке/часам/сессиям/новым клиентам, переключатели 7/30/90 дней.

🌐Каналы для клиента

Публичная страница /c/<club>

Бренд клуба, фото, слоты с ценами, выбор длительности 1-4 часа, оплата через ЮKassa. Работает 24/7.

Embeddable виджет

iframe или script-тег на сайте партнёра. Авто-resize. Безопасность по доменам через wpk_-ключ с allow-list (wildcard *.example.com).

Telegram-бот клуба

Каждая орг подключает своего бота через @BotFather под собственным брендом. За 5 минут — webhook регистрируется автоматически.

Telegram Mini App

Кнопка «Забронировать» открывает тот же UI что на сайте — но внутри Telegram. Авто-логин по signed initData. Платёж не выходит из мессенджера.

Связь с админом из бота

Клиент пишет вопрос в бот → пересылается в админский Telegram-чат с подписью клиента. Админ отвечает в этом же чате.

📊Аналитика и дашборды

Дашборд директора

4 KPI с trend-стрелочками (выручка/конверсия/брони/отмены), heatmap загрузки час × клуб, топ-10 тренеров.

«Требует внимания»

Автоматический список клубов с просадкой выручки 30%+ относительно среднего по сети.

Inbox с живым таймером

Hold-брони со счётчиком обратного отсчёта (обновляется каждую секунду). Цветная полоска по статусу.

⚙️Управление и роли

5 ролей сотрудников

Владелец / Директор / Администратор клуба / Тренер / Только чтение. Привязка администратора к конкретным клубам сети.

Тарифы матрицей

Правило × День недели × Конкретные корты. Court-specific цены (корт 1 — прайм 5500 ₽, остальные 3500 ₽).

Инвентарь

Учёт мячей / ракеток / струн с порогами заказа. KPI: критичные / низкие / общий остаток.

Аудит-лог

Партицирован по месяцам. Кто, что, когда, IP, user-agent. Поиск по сотруднику/типу действия/периоду.

🛡Безопасность и compliance

JWT с коротким TTL

Access-токен 15 минут + refresh 30 дней. Compromise токена даёт минимальное окно эксплуатации.

152-ФЗ ready

УЗ-3 совместимость, документированное удаление и экспорт данных клиента, Audit-лог IP/user-agent на каждой мутации.

Имперсонация прозрачно

Platform-админ может зайти под сотрудником клуба с полной фиксацией в audit. У сотрудника жёлтый баннер «Сейчас имперсонация».

Idempotent webhooks

UNIQUE constraint на (provider, event_id) — повторный webhook от ЮKassa не создаст дубль платежа.

Попробовать всё это

Заявка → пароль на email → пять минут на настройку клубов и кортов → принимаете брони. Возможность вывезти данные обратно в любой момент.

Подать заявку →