Розробка платформи для бронювання послуг
Платформа бронювання послуг з'єднує провайдерів послуг (майстрів, спеціалістів, орендодавців) з клієнтами через систему онлайн-записи. Ключові компоненти: управління розписанням, часові слоти, передплата та скасування, повідомлення.
Модель розписання
Розписання провайдера визначає доступні слоти для бронювання:
-- Регулярний робочий графік
CREATE TABLE schedules (
provider_id, day_of_week INT (0-6),
start_time TIME, end_time TIME
);
-- Виключення (вихідні, відпустка)
CREATE TABLE schedule_exceptions (
provider_id, exception_date DATE,
is_available BOOLEAN, -- false = недоступен
custom_start TIME, custom_end TIME -- інше розписання в цей день
);
-- Забронировані слоти
CREATE TABLE bookings (
id, provider_id, client_id, service_id,
start_at TIMESTAMPTZ, end_at TIMESTAMPTZ,
status ENUM('pending', 'confirmed', 'cancelled', 'completed')
);
Алгоритм генерації доступних слотів: взяти робочі години дня → відняти вже забронировані → відняти буферне час мів записами → повернути вільні інтервали.
Запобігання подвійному бронюванню
Race condition: два клієнти одночасно бронюють один слот. Рішення через PostgreSQL advisory lock:
SELECT pg_advisory_xact_lock(provider_id, unix_timestamp_of_slot);
-- перевіряємо занятість
-- створюємо бронь
-- lock знімається автоматично по закінченні транзакції
Або через INSERT ... ON CONFLICT DO NOTHING з унікальним індексом по (provider_id, start_at).
Управління послугами провайдера
Кожний провайдер налаштовує свої послуги:
- Назва та опис
- Тривалість (30 хв, 1 година, 1,5 години)
- Ціна
- Буфер після сеансу (час на підготовку до наступної)
- Вимоги до клієнта (заповнити форму, прикріпити документи)
Політика скасування та повернень
Стандартні політики:
- Flexible: скасування за 24 години — повний повернення
- Moderate: за 5 днів — повний, за 24 години — 50%
- Strict: за 14 днів — 50%, пізніше — без повернення
Провайдер вибирає політику. При скасуванні клієнтом — автоматичний розрахунок суми повернення через Stripe Refund.
Напоминки
Автоматичні повідомлення:
- Підтвердження бронювання (миттєво)
- Напоминка за 24 години
- Напоминка за 1 годину
- Прохання залишити відгук через 2 години після візиту
Канали: email + SMS (через Twilio / SMS.ru) + push.
Інтеграція з Google Calendar / Outlook
Провайдер може синхронізувати своє розписання з Google Calendar:
- OAuth2 авторизація
- Блокуючі события з Calendar → недоступні слоти на платформі
- Нові брони → створюються события в Calendar
Google Calendar API через googleapis SDK.
Терміни
MVP (профіль провайдера, розписання, бронювання, оплата, повідомлення): 2–3 місяці. З множинними провайдерами, маркетплейс-функціями, аналітикою та мобільним додатком: 4–6 місяців.







