Портфолио и кейсы фрилансеров по автоматизации записи на приём

Радислав Наумов
Радислав Наумов 6 дней назад
Своя онлайн-запись вместо подписки
Система онлайн-записи для барбершопов, салонов, студий и мастеров. Покупается один раз, без ежемесячной подписки, и настраивается под конкретный бизнес: услуги, мастера, цвета, тексты. Из чего состоит: 🤖 Telegram- (и любой другой) бот и мини-приложение: клиент выбирает услугу, мастера, дату и время в пару нажатий и ничего не устанавливает. 🗓 Админ-панель для владельца: журнал записей по мастерам, клиенты, услуги и цены, статистика, рассылки. Удобно работает и с телефона. 🌐 Сайт с записью, если он нужен бизнесу. Что умеет: 🔔 Сам напоминает клиентам о записи, поэтому меньше людей не приходит. ⚠️ Если мастер заболел, клиенты получают предупреждение автоматически, обзванивать никого не нужно. 🎁 Бонусы за визиты, чтобы клиенты возвращались. 📈 Статистика по выручке и загрузке мастеров, выгрузка базы клиентов в Excel. 🏢 Несколько филиалов ведутся в одной системе. 🔒 Данные клиентов хранятся на сервере владельца, а не у сторонней площадки. Стек: Python, FastAPI, SQLite, aiogram 3, Telegram Mini App на HTML, CSS и JavaScript, nginx, свой VPS. Около 300 автотестов и ежедневные зашифрованные резервные копии. * Демо на выдуманной студии можно попробовать вживую: onlinebooking.rvdcode.pro * Настрою систему индивидуально для каждого бизнеса
Максим Баранов
Максим Баранов 1 месяц назад
CRM записи для клиники: расписание, клиенты, напоминания в Telegram
Запись клиента, перенос и отмена, карточки клиентов и специалистов, фильтры по дню и статусу. Подтверждения и напоминания уходят в Telegram. Сделано под небольшую клинику или салон, где администратор ведёт запись руками и теряет её в переписке. Видно, кто к какому специалисту идёт и что с расписанием на день, свободные окна не теряются. Внутри: Node и TypeScript, база в SQLite, всё запускается в Docker. Живое демо с демо-доступом прямо на странице входа: clinic.maxcarter.ru
Сергей Соколкин
Сергей Соколкин 1 месяц назад
Мониторинг свободных слотов: 10 кортов и 4 площадки в Google Sheets
Разработал автоматический мониторинг доступности кортов через YClients API. Система проверяет ближайший часовой слот и сохраняет результат в Google Sheets без отдельного сервера. Масштаб: 4 площадки и 10 кортов. Реализовано: • отдельный лист Google Sheets для каждой площадки; • запись времени проверки, даты, слота, ресурса и статуса; • автоматическая проверка каждый час и ручной запуск из меню таблицы; • выбор нужной услуги YClients по времени суток и дню недели; • индивидуальное время проверки для каждой площадки; • продолжение общего цикла при ошибке отдельного корта; • повторная установка расписания при временном сбое Google Apps Script; • журнал работы с ограничением размера. Результат: заказчик получает регулярную историю свободных и занятых слотов по всем площадкам в одной таблице. Ручная проверка виджетов бронирования заменена автоматическим сбором данных. Система развёрнута и используется заказчиком. На обложке демонстрация структуры результата с вымышленными названиями площадок и слотами. Технологии: Google Apps Script, TypeScript, YClients API, Google Sheets, Webpack.
Максим Баранов
Максим Баранов 2 месяца назад
Заявка с сайта: счёт, оплата, статус
Сквозная связка для сервисного бизнеса: заявка с сайта падает мастеру в Telegram, мастер оценивает работу и выставляет счёт, клиент платит картой, статус заявки меняется сам после подтверждения кассы, клиент видит его по личной ссылке без пароля. Внутри: Node.js, TypeScript, SQLite, ЮKassa, Docker, 28 тестов. Три решения, на которых всё держится: 1. Касса спрятана за интерфейсом из двух методов. ЮKassa и встроенный эмулятор — две реализации одного интерфейса, маршруты не знают, с кем разговаривают. Поэтому демо-стенд показывает весь путь целиком, а переход на живые платежи не меняет ни строчки логики. 2. Вебхуку об оплате не верят. ЮKassa не подписывает уведомления, поэтому тело запроса — только повод перезапросить платёж в кассе. Статус меняет ответ кассы, а не содержимое запроса. Иначе любой, кто узнал адрес вебхука, объявляет чужую заявку оплаченной; тест на это в наборе есть. 3. Деньги хранятся в копейках целым числом. Рубли в дробных числах однажды дают 4899.999999 и потерянную копейку в отчёте. Статусы идут по одной дороге: Новая — Оценена — Счёт выставлен — Оплачена — Сдана. После оплаты отмены нет: это возврат денег, он делается в кассе, а не сменой строки в базе. Демонстрационный стенд, данные вымышленные.