Простая онлайн-запись для спа, врача и столика: собственный сервис
Заказчик попросил максимально простой аналог YClients: запись в спа, к врачу и столик, минимум функций. Я собрал отдельный сервис с виджетом в одну строку кода, ссылкой и QR. Он работает в тестовом режиме на временном сервере, реальных клиентов у него пока нет.
Коротко (TL;DR)
- Запрос звучал так: простой аналог YClients, минимум функций, три сценария: спа, врач, столик в ресторане. Я собрал отдельный сервис и назвал его рабочим именем Reserva.
- Клиент записывается без регистрации и сам отменяет запись по личной ссылке. Владелец ведёт всё в кабинете. На сайт сервис ставится одной строкой кода, есть ещё ссылка и QR.
- Поверх записи добавились бот-меню для гостей на десяти языках и раздел для конференций с вопросами спикеру и опросами.
- Статус честный: тестовый режим, временный сервер, демо-заведения. Реальных записей и платящих заведений пока нет.
Сделаю под ключ: разберу задачу, назову срок и цену. Чтобы начать, напишите в Telegram одной фразой.
Обсудить сайтБольшие системы записи умеют всё: склады, зарплаты, программы лояльности. Владельцу небольшого спа или кабинета врача нужна только одна вещь: чтобы клиент выбрал время и пришёл. Я проверил, как далеко можно зайти в простоте, если выкинуть всё остальное.
Задача
Заказчик описал её в одной фразе: максимально просто и интуитивно, с минимальными функциями. Три типа бизнеса: спа, врач, столик в ресторане. Потом он добавил два условия. Сервис должен вставляться на любой сайт одной строчкой кода. И у каждого заведения должны быть ссылка и QR-код, чтобы запись можно было открыть с визитки или стойки.
Главное требование я понял так: у владельца нет времени разбираться. Он регистрируется, видит готовый набор услуг, часов работы и сотрудников под свой тип заведения и правит то, что не подходит. Для клиента путь ещё короче: услуга, день, время, имя и телефон. Всё. Я уже разбирал выбор между готовым виджетом и собственной формой в статье про онлайн-запись на сайте, и здесь решил идти вторым путём.
Что я сделал
Это отдельный продукт со своей папкой, контейнером и базой. Серверная часть на FastAPI, база SQLite, страницы на обычном HTML и JavaScript без сборки. Меньше слоёв, меньше мест, где что-то ломается.
Регистрация владельца. На главной он выбирает тип: спа, клиника, барбершоп, ресторан или другое. Сервис сам заводит услуги, сотрудников или столы и часы работы. Для ресторана это столы на 2, 4 и 6 мест, для спа и врача терапевты и кабинеты. Дальше владелец правит названия и время в кабинете.
Запись клиента. Страница заведения открывается без входа. Клиент выбирает услугу, день, время, а для ресторана ещё и число гостей. Подбор стола идёт от самого маленького подходящего: компанию из двоих не посадят за стол на шесть. После записи клиент получает личную ссылку, по которой видит свою запись и может её отменить. Прошедшую запись отменить нельзя.
Двойная запись. Это место, где такие сервисы ломаются первыми. Проверка свободного времени и сама запись у меня идут одним шагом внутри одной транзакции, поэтому два человека, нажавших «Записаться» на одно время, не получат одно место. Повторное нажатие на медленной связи тоже не создаёт вторую запись.
Кабинет. Записи по дням, ручное добавление записи по звонку, отметки «пришёл» и «не пришёл», услуги, люди, часы, ссылка, QR. Календарь записей можно подписать в обычном телефонном календаре по закрытой ссылке. Владелец выбирает один из шести цветов кнопок. Все цвета лежат в одном файле, и я измерил контраст каждого набора: худший случай получился 5,54 к 1.
Виджет. Одна строка кода вставляет запись прямо на страницу сайта, второй режим показывает кнопку в углу. Готовая строка лежит в настройках кабинета, копировать её можно одним нажатием. Родственная тема из другой области: запись без сайта прямо в мессенджере.
Бот-меню для гостей. Позже заказчик попросил вместо ИИ-помощника что-то попроще для отелей: гость сканирует QR, выбирает язык и видит кнопки с ответами. Владелец пишет каждый ответ один раз на своём языке, а кнопка «Написать на ресепшен» открывает мессенджер с готовым текстом. За каждое сообщение платить не нужно: гостю отвечает заранее написанный текст, нейросеть тут не участвует. Языков десять. Кнопка автоматического перевода на все языки сделана, но сейчас стоит заглушкой с пометкой «Скоро»: она включится, когда будет подключён платный ИИ-сервис, и до тех пор ничего наружу не отправляет.
Конференции. Следом пошёл раздел для залов: гости без аккаунта задают вопросы спикеру и голосуют за них, отвечают на опросы, пишут комментарии. На проекторе показывается идущий опрос или пять самых популярных вопросов с QR. Один голос на телефон, организатор модерирует. Ссылки и почту гости вставлять не могут, грубые слова фильтруются на трёх языках, причём целыми словами, чтобы не резать фамилии. Подробнее об идее: бот для гостей конференции.
Что было сложно
Первое: https. Браузер не загрузит скрипт по http на странице с https, поэтому виджет на большинстве настоящих сайтов пока не заработает. Нужны домен и сертификат. Заказчик просил обойтись без собственного домена, поэтому я рассматривал адрес вида «ip через дефисы плюс бесплатный сервис», но пока не включал. Скрипт и страницы проверены, а вот на чужом https-сайте виджет вживую ещё не стоял.
Второе: безопасность встраивания. Во фрейме разрешены только страница записи и страница личной записи, всё остальное отказывается открываться во фрейме. Политика безопасности запрещает инлайн-стили, поэтому ширину полосок опросов мне пришлось выставлять из скрипта. На узких экранах длинное название мероприятия вылезало за край на 4 пикселя, пока я не добавил перенос слов.
Третье: простота. Каждая новая просьба тянула сервис к «большой системе». Я каждый раз спрашивал себя, нужна ли функция владельцу спа в первую неделю. Напоминаний клиентам и онлайн-оплаты в сервисе нет, и я не стал их добавлять наспех. О том, как напоминания и предоплата снижают неявки, я писал в статье про неявки и предоплату.
Четвёртое: выкладка. С моего компьютера ssh на сервер то проходил, то зависал, и дважды архив с обновлением не доезжал, хотя я считал его выложенным. Теперь после каждой выкладки я сверяю хэши файлов на сервере с локальными и открываю новые страницы запросом, прежде чем отчитываться.
Что получилось
| Что | Состояние |
|---|---|
| Запись, отмена по ссылке, кабинет | работает на демо-заведениях: спа, кабинет врача, ресторан |
| Виджет, ссылка, QR | готовы, виджет на https-сайте ждёт https у сервиса |
| Бот-меню для гостей | работает, десять языков, перевод кнопкой пока заглушка |
| Раздел для конференций | работает, проверен на стенде и на демо |
| Автотесты сервера | 155 проверок из 155 по последнему прогону |
| Прохождение сценариев на телефоне | 88 из 88 в браузерном прогоне |
| Сервер | временный, перенос на постоянный впереди |
| Резервная копия базы | автоматической нет, перед обновлениями снимаю копию вручную |
| Реальные заведения и записи | нет |
Ссылки на демо отправлены заказчику, он их смотрит и присылает замечания, по которым я вношу правки. Я не проверял выбор цвета в живом кабинете: пароль демо-заведения у меня не открыт, поэтому проверка шла на стенде. Реальные замеры, сколько записей получил хоть один владелец, взять неоткуда, ни одно заведение сервисом ещё не пользуется.
Что дальше
Первым делом перенос на постоянный сервер с доменом и https. Без этого виджет остаётся демонстрацией. Затем автоматическая ежедневная копия базы и запуск первого настоящего заведения, пусть даже одного, чтобы появились живые цифры. Дальше по очереди: напоминания клиенту накануне, экран тарифов вместо ручной команды, расшифровка докладов на конференции, если заказчик решит, кто платит за ИИ. Каждую функцию я буду добавлять только после просьбы реального владельца.
Частые вопросы
Чем это отличается от YClients?
Объёмом. Там есть склад, касса и зарплаты, здесь только запись, отмена и кабинет с расписанием. Для небольшого заведения этого часто хватает, а разобраться можно за вечер. Если вам нужна касса и учёт, лучше взять большую систему.
Можно ли вставить запись на сайт на Тильде или WordPress?
Да, достаточно одной строки кода в блок вставки. Условие одно: у сервиса должен быть https. Пока он на временном сервере, этого условия нет, поэтому я называю такой вариант готовым к запуску, но не запущенным.
Это готовый продукт, который можно купить?
Пока нет. Это рабочее демо в тестовом режиме. Я показываю его как пример того, что можно собрать под ваш бизнес, и могу развернуть такую же запись под вас на вашем сервере.
Коротко о главном
Простоту приходится защищать. Сама запись собралась быстро, а труднее всего было не добавить лишнего и закрыть места, где ломается всё: двойную запись и встраивание на чужой сайт. Сейчас это честное демо без единого настоящего клиента, и я так о нём и пишу.
Если вам нужна запись для вашего спа, кабинета или ресторана, я соберу её под ваш сайт. Напишите в Telegram, MAX или VK.
Что я делаю для бизнеса
Напишите одной фразой, что нужно. Отвечу, что подойдёт, сколько займёт и сколько стоит. Сообщение уже подготовлено.
- Боты в Telegram, MAX, VK
- Автоматизация процессов и CRM
- Аналитика и дашборды
- Сайты и лендинги под ключ
Разборы, кейсы и практика — без воды. Выходит регулярно, читать 3–5 минут.


