Разработка сайта
Собственная система онлайн-записи для студии маникюра why not nailsroom
Описание проекта
why not nailsroom — студия маникюра мастера Милы в Ivanke pri Dunaji (Словакия): аппаратный и комбинированный маникюр, гель-лак, наращивание. На сайте — цены и длительность по каждой услуге, галерея работ (подгружается из инстаграма @whynot_nailsroom), блок «как я работаю» и онлайн-запись на приём. Интерфейс сайта — словацкий, с возможностью договориться на русском.
Это собственный проект агентства: сайт и система записи разработаны с нуля на Next.js, без использования готовой CMS или коробочного сервиса бронирования.
Готовые сервисы вроде Dikidi (запись клиента) и Beauty Agent (расписание мастера) описывают доступность рабочими часами — «вторник с 9 до 21». Мастеру нужно другое: в один день взять одного клиента утром и двоих вечером. Поэтому в основе своей разработки — модель расписания «окна с ёмкостью»: отрезок времени плюс число клиентов, которых мастер готова в нём принять; от этой модели строится всё остальное — свободные слоты, проверка при записи, ручные брони.
У расписания — недельный шаблон плюс правки на конкретную дату (правка на дату полностью перебивает шаблон), у каждой услуги — своя длительность и буфер после неё под уборку и стерилизацию, не показываемый клиенту, но блокирующий следующую запись.
Кроме публичного виджета записи (`/widget`, встраивается на сторонний сайт через `<script>`, лежит в кабинете мастера), в проекте есть мобильный кабинет мастера (`/admin`) для ручных броней и настроек и личный кабинет клиента (`/rezervacie`), где клиент сам переносит или отменяет запись без звонка мастеру.
Задачи
- Заменить связку из двух сторонних сервисов (запись клиента в Dikidi + расписание мастера в Beauty Agent) одной собственной системой.
- Реализовать модель расписания, которая учитывает не рабочие часы, а свободную «ёмкость» — сколько клиентов мастер готова принять в конкретном отрезке времени.
- Учитывать при записи длительность конкретной услуги и технологический буфер после неё.
- Дать мастеру возможность вносить ручные брони и закрывать время под личные дела прямо с телефона.
- Дать клиенту личный кабинет, где он сам переносит или отменяет запись без звонка мастеру.
- Уведомлять мастера в Telegram о новых записях, отменах и переносах.
Что сделали
- Разработали ядро расписания на основе окон с ёмкостью — недельный шаблон плюс правки на дату, проверка правил на сервере в транзакции, а не только в интерфейсе.
- Реализовали длительность и буфер для каждой услуги: услуга предлагается клиенту только в те дни и часы, куда помещается целиком вместе с буфером.
- Собрали публичный виджет записи (`/widget` + `embed.js`), который вставляется в iframe на любой внешний сайт и сам подгоняет высоту под содержимое.
- Сделали мобильный кабинет мастера (`/admin`): ручная запись и блокировка времени, недельный шаблон и правки на дату, список услуг, настройки, код для встраивания виджета.
- Сделали личный кабинет клиента (`/rezervacie`) со входом по телефону и паролю: перенос и отмена записи клиентом самостоятельно, с ограничением по времени до визита, которое задаёт мастер.
- Подключили уведомления мастеру в Telegram о новой записи, отмене и переносе — настраиваются из кабинета мастера без обращения к разработчику.
Результат
Сайт и система записи развёрнуты на whynot-nailsroom.sk и используются студией в работе: цены и услуги — реальные, снятые с действующей страницы записи мастера, галерея собирается из папки с фотографиями её работ. Часть функциональности, которую проект пока не закрывает, — напоминания клиенту перед визитом, самостоятельное восстановление пароля и словацкий язык интерфейса самих кабинетов (сейчас он русский при словацких названиях услуг) — авторы фиксируют это как следующие шаги.
