Сайт і CRM для комплексу «Ладомир»
Повний цикл для банно-готельного комплексу під Києвом: публічний сайт на Next.js із бронюванням і custom CRM для керування ресурсами, фінансами й персоналом. Одна кодова база, один деплой.
↗ Відкрити ladomyr.kiev.ua
Задача
Діючому банно-готельному комплексу «Ладомир» під Києвом потрібні були одразу дві речі: сучасний публічний сайт, що приймає бронювання, і внутрішня система керування операціями — розкладом ресурсів, гостьовими рахунками, фінансами та персоналом. Це не запуск з нуля, а оцифрування бізнесу, що вже працює.
Специфіка ускладнює готові рішення: баня на дровах, купіль, альтанки та номери бронюються погодинно, з буфером між сеансами на прибирання й протоп, з пакетами й цінами, що залежать від дня та часу. Типовий booking-віджет цього не покриває.
Чому custom CRM, а не готова SaaS
Коротка відповідь: жодна готова платформа не описує ресурси комплексу так, як вони працюють у реальності. Погодинні слоти з буфером, блокування ресурсів, пакети «баня + купіль + альтанка», динамічне ціноутворення, гостьові рахунки з дозамовленням — це доменна логіка, яку SaaS або не має, або дає ціною місячної підписки й вендор-лок-іну.
Рішення — одна кодова база на Next.js, де публічний сайт і CRM ділять типи, схему БД і деплой. Це дешевше в підтримці, узгоджене за даними й повністю належить бізнесу. Технологічний бік — у послузі розробки на Next.js.
Публічний сайт
Сайт на Next.js (App Router, SSR) показує послуги комплексу й веде до бронювання. Кожна сторінка рендериться на сервері — швидка й одразу індексована.
Послуги та номери
Окремі сторінки для лазні, басейнів, чану, купелі, альтанок і номерів — зі структурою під пошук і зрозумілою навігацією.
Бронювання
Онлайн-бронювання з вибором ресурсу, дати й тривалості. Заявка потрапляє прямо в CRM, не в пошту.
Пакети та меню
Готові пакети відпочинку й меню кухні/бару — з цінами, що керуються з адмінки, без правок коду.
SEO та IndexNow
Мета-теги, structured data, миттєве повідомлення пошуковиків про оновлення через IndexNow.
CRM: операційний центр
Адмінка `/admin` — це повноцінна система керування комплексом, а не «панель налаштувань». Понад 18 робочих модулів навколо одного операційного дня.
Календар ресурсів
Денна таймлайн-сітка по кожному ресурсу: видно завантаження, вільні слоти, накладки й блокування в одному екрані.
POS гостьових рахунків
Гостьовий чек із позиціями, дозамовленням і закриттям — облік того, що спожито на місці.
Фінанси
Доходи, витрати, касові рухи й документи витрат — фінансова картина комплексу без Excel.
Склад
Inventory з рухами залишків — від дров і трав до бару. Видно, що закінчується.
Персонал і payroll
Працівники, зміни та виплати — облік роботи команди й нарахувань.
Динамічний pricing
Ціни за правилами (день/час/сезон) + підписки та відгуки з керованими токенами запиту.
Виклик: рахувати доступність
Найскладніша частина — не інтерфейс, а рушій доступності. Кожен ресурс має місткість і буфер між сеансами (прибирання, протоп), може бути заблокований (ремонт або приватна подія), а ціна залежить від дня й часу. Наївний календар тут швидко дає накладки й помилкові вільні слоти.
Рішення — чиста доменна модель у Postgres через Drizzle: ресурси (місткість, буфер), блокування (діапазони недоступності), цінові правила та дозамовлення до броні. Календар рахує вільні слоти з урахуванням буфера й блокувань, а не просто «зайнято/вільно». Це дає адміністратору чесну картину дня й прибирає ручні звірки.
AI-асистент
У CRM вбудований AI-асистент на Anthropic SDK, який працює за принципом «сканує → пропонує → людина підтверджує». Він допомагає з рутинними операційними діями, але фінальне рішення завжди за адміністратором — human-in-the-loop, без автономних змін даних. Такий підхід до AI-інтеграцій лишає контроль у людини.
Безпека та надійність
CRM працює з персональними даними гостей і фінансами, тож безпека — не опція:
- RBAC — рольовий доступ: хто що бачить і може змінювати
- MFA — двофакторний вхід для адміністративних акаунтів
- Audit log — журнал дій для відстеження змін
- Мережева межа — авторизація на рівні `proxy.ts` (Next.js 16), а не лише в компонентах
- Фоновий воркер — Vercel Cron смикає джоби кожні 5 хв (нагадування, службові задачі) з авторизацією через секрет
Технічний стек
- Framework: Next.js 16 (App Router, `proxy.ts`), React 19, TypeScript strict
- Дані: Supabase (auth + Postgres), Drizzle ORM (30+ таблиць), Zod на межах
- AI: Anthropic SDK (асистент scan/confirm)
- UI: Radix UI primitives, self-hosted шрифти, sharp для зображень
- Інфраструктура: Vercel + Vercel Cron, Resend (email), IndexNow
- Архітектура: monorepo (pnpm + turbo) — сайт, CRM і воркер в одному застосунку
Схожі послуги
- Бізнес-сайт на Next.js — сайт або платформа з SSR, SEO й аналітикою
- AI-інтеграції для сайту — асистенти й автоматизація з human-in-the-loop
- Ціни на розробку — 6 пакетів із чітким обсягом