Розробка мобільного додатку для бронювання готелів
Додаток для бронювання готелів—це конкурентна ніша з встановленими гравцями (Booking.com, Ostrovok, Yandex.Travel). Перемогти в цій нише з власним додатком можна лише спеціалізуючись: конкретний регіон, корпоративні подорожі, певна категорія об'єктів. Технічна реалізація не менш складна, ніж у гігантів—потрібна та сама система інвентарю, календар доступності, оплата з резервуванням та управління бронюваннями.
Інтеграція з системами управління готелями (PMS)
Центральне технічне завдання—отримання актуальної наявності номерів та цін. Три варіанти:
Channel Manager API. Готелі підключені до channel manager'а (TravelLine, Bnovo, Reznext)—єдина точка входу для оновлення інвентарю. TravelLine надає REST API для пошуку доступності та бронювання. Один договір з channel manager'ом відкриває доступ до тисяч підключених готелів.
Пряма інтеграція з PMS. Opera PMS (Oracle), Fidelio, 1C:Hotel—у кожного свій API або SOAP. Має сенс лише при роботі з конкретною мережею готелів.
OTA-агрегатори. Ostrovok B2B API, Broniruй API, HotelBeds—готові агрегатори з великим інвентарем, комісійна модель. Для старту це найшвидше.
// Запит доступності номерів через API channel manager'а
struct AvailabilityRequest: Encodable {
let hotelId: String
let checkIn: String // "2025-06-15"
let checkOut: String // "2025-06-18"
let adults: Int
let children: Int
let currency: String
}
struct RoomType: Decodable {
let id: String
let name: String
let description: String
let capacity: Int
let pricePerNight: Decimal
let cancellationPolicy: CancellationPolicy
let images: [String]
let availableRooms: Int
}
Карта та пошук за геолокацією
Пошук готелів поруч—обов'язкова функція. MapKit (iOS) з MKAnnotationView та кластеризацією, або Google Maps SDK. При великій кількості об'єктів (100+)—кластеризація через GMSMarkerClusterer (Google) або ClusterKit (MapKit).
На карті потрібні «плашки» з ціною замість стандартних маркерів—кастомний MKAnnotationView з UILabel для ціни. Натиснення на кластер—zoom in. Натиснення на окремий маркер—bottom sheet з карточкою готелю.
Геопошук: за координатами центру + радіус. Бекенд: PostGIS з ST_DWithin(location, ST_Point(lon, lat)::geography, radius_meters)—швидко при наявності просторового індексу.
Календар дат та динамічне ціноутворення
Вибір дат заїзду/виїзду—один з найпроблемніших UI-елементів у готельних додатках. Стандартні DatePicker не підходять: потрібен кастомний range picker з блокуванням недоступних дат, відображенням мінімальної ціни під кожною датою.
На iOS—кастомний range date picker через UICollectionView з кастомним layout—комірки з підсвіченням діапазону. На Android—MaterialDatePicker з Material Design 3 з кастомізацією через DayViewDecorator.
Динамічне ціноутворення: ціни змінюються залежно від попиту та дат. Кешування на 30 хвилин—розумний компроміс. При остаточному бронюванні—повторна перевірка ціни через GET /rooms/{id}/price-check?checkin=&checkout=. Якщо ціна змінилась—попереджуємо користувача з новою ціною перед оплатою.
Резервування та оплата
Схема оплати залежить від політики готелю:
- Повна передплата—оплата одразу при бронюванні
- Оплата при заїзді—бронюємо без оплати, готель держит місце
-
Часткова передплата—резервування суми через
payment.capture_mode = manualу YooKassa або Stripe
Резервування (preauthorization): через YooKassa це POST /payments з capture: false. Після заїзду гостя—POST /payments/{id}/capture. При скасуванні—POST /payments/{id}/cancel. Деякі OTA-агрегатори беруть оплату на себе та перераховують готелю—спрощує інтеграцію.
Apple Pay та Google Pay—обов'язкові для конверсії. PKPaymentRequest на iOS, PaymentsClient на Android.
Управління бронюванням
Екран «Мої бронювання»: активні, завершені, скасовані. Деталі: ваучер, адреса готелю з навігацією (deep link в 2GIS/Yandex.Maps/Google Maps), контакти. Скасування бронювання з розрахунком штрафу залежно від cancellation policy та поточної дати—логіка на бекенді, не на клієнті.
Push-повідомлення: підтвердження бронювання, нагадування за 3 дні до заїзду, запит відзиву після виїзду (через 24 години).
Відзиви
Система відзивів з рейтингом за категоріями: розташування, чистота, персонал, співвідношення ціни/якості. Верифікація: лише користувачі з завершеним бронюванням можуть залишити відзив. Модерація перед публікацією—або автоматична (ML-класифікатор спаму/образ), або ручна.
Етапи та терміни
| Етап | Терміни |
|---|---|
| Інтеграція з channel manager / OTA API | 1–2 тижні |
| Пошук, карта, фільтрування | 2 тижні |
| Карточка готелю, галерея, деталі | 1 тиждень |
| Бронювання та оплата | 1–2 тижні |
| Особистий кабінет, історія, відзиви | 1 тиждень |
| Тестування, складання iOS + Android | 1 тиждень |
Усього: 8–12 тижнів. Вартість розраховується індивідуально після аналізу вимог.







