Як тут усе влаштовано
Оберіть, хто ви — і залишиться тільки те, що стосується вас. Або просто шукайте словом: пошук дивиться і в заголовки, і в тексти.
З чого почати
Що це за сайт і для кого
Це каталог місць для відпочинку в Україні: природа, пам’ятки, активності, заклади, житло. Кожне місце має картку з описом, координатами, годинами роботи, цінами й оцінками.
Головна відмінність від збірок посилань — усе можна відфільтрувати під себе (з дітьми, з собакою, безкоштовно, поруч зі мною), скласти з відібраного план поїздки й порахувати бюджет.
Чи потрібен акаунт
Дивитися каталог, карту, картки місць, події, добірки й статті можна без входу. Акаунт потрібен для того, що прив’язане особисто до вас: обране, плани поїздок, відгуки, пропозиції нових місць.
Окремий випадок — план, яким з вами поділилися посиланням: його видно без акаунта взагалі.
Куди натискати: коротка мапа сайту
Пошук, фільтри, карта
Фільтри: як звузити каталог
Фільтри згруповані за змістом: тип місця, регіон, для кого підходить (діти, тварини, доступність), зручності, ціна, коли відкрито. Обране фільтрами показується чипами над списком — кожен чип знімається окремо, не треба скидати все.
Фільтри складаються між собою: «Карпати» + «з дітьми» + «безкоштовно» звужують до перетину, а не до суми. Якщо нічого не знайшлося — приберіть найвужчий чип, зазвичай це ціна або зручність.
Стан фільтрів живе в адресі сторінки, тож посилання можна просто скопіювати й надіслати — воно відкриється з тим самим набором.
Карта й пошук у видимій області
Перемикач «Список / Карта» показує ті самі результати двома способами. На карті близькі точки збиваються в кластери — натисніть, щоб розгорнути.
Кнопка пошуку у видимій області шукає рівно в тих межах, які ви бачите: посуньте карту на потрібний район і натисніть її. Фільтри при цьому лишаються ті самі.
Карта побудована на OpenStreetMap. Маршрут до місця відкривається в Google Maps або Waze — саме там ним користуються, тому посилання ведуть туди, а не в OSM.
Сортування й «поруч зі мною»
Список можна впорядкувати за релевантністю (за замовчуванням), рейтингом, популярністю, новизною або відстанню. Сортування за відстанню вмикається лише тоді, коли відома точка відліку — інакше воно мовчки повертається до релевантності.
Геолокацію браузер питає окремо і лише коли ви натиснули відповідну дію — сайт не визначає місце самотужки у фоні.
Підказки в рядку пошуку
Рядок пошуку підказує назви місць уже з кількох літер, а разом із ними — регіони, категорії й теги. Підказка з місцем веде одразу на картку, підказка з регіоном чи категорією — у каталог із уже поставленим фільтром.
Збіг шукається в будь-якій частині назви, але саме тими літерами, які ви ввели: латиницею українську назву не знайти.
Сторінка місця
Що показує картка місця
Фото, опис, точка на карті, зручності, години роботи, ціни, контакти, оцінка з відгуками й блок «схоже поруч». Порожні поля просто не показуються — картка не має «дірок» із прочерками.
Унизу картки — атрибуція джерел: OpenStreetMap, Вікіпедія, Wikimedia Commons, якщо опис, координати чи фото прийшли звідти, плюс приписка редактора. Це не формальність, а вимога ліцензій, під якими ці дані віддаються.
Години роботи: «зараз відчинено»
Години задаються по днях тижня, у дні може бути кілька інтервалів (наприклад, обідня перерва). Картка сама рахує, відчинено зараз чи ні, і показує, коли зачиняється або коли відчиниться.
У каталозі є фільтр «відчинено зараз» — він працює з тих самих даних. Якщо години не заповнені, місце в цей фільтр не потрапляє: краще не показати, ніж збрехати.
Кнопки на картці: маршрут, дзвінок, сайт, бронювання
Маршрут відкривається в Google Maps або Waze, телефон — у застосунку дзвінків, сайт і бронювання — за посиланням закладу. Кнопки з’являються лише тоді, коли відповідні дані в картці заповнені.
Натискання рахуються знеособлено — власник місця бачить у себе в кабінеті, скільки разів будували маршрут чи телефонували, але не хто саме.
Звідки на картці оцінка Google
Оцінка Google показується довідково, поруч із нашою, і лише в тих місць, де вказано їхній ідентифікатор. Вона береться наживо й у нас не зберігається — так вимагають умови Google.
Джерелом правди лишається наш рейтинг: він рахується з відгуків цього сайту й враховує їхню кількість, а не лише середнє.
Оцінки й відгуки
Як залишити відгук
Потрібен вхід. Оцінка зірками обов’язкова, текст і фото — за бажанням; є окремі критерії (наприклад, чистота чи зручність для дітей), вони теж не обов’язкові.
Відгук зазвичай з’являється одразу. Якщо він виглядає підозріло для автоматичних перевірок, то піде на перевірку модератором — про рішення прийде лист.
На одне місце — один відгук від людини. Свій відгук можна відредагувати або видалити в кабінеті.
Фото у відгуках
До відгуку можна додати кілька фотографій. Ліміт розміру показується прямо у формі — він залежить від налаштувань сервера, тому це не вигадана цифра, а реальна стеля.
З кожного фото знімаються EXIF-дані, зокрема координати зйомки й модель камери. Це робиться на сервері, тому не залежить від того, чим ви знімали.
Як рахується рейтинг місця
Не просто середнє. Місце з однією п’ятіркою не має обходити місце з сотнею оцінок 4,8 — тому рейтинг зважений: чим менше відгуків, тим сильніше оцінка тягнеться до середньої по сайту.
Через це рейтинг місця може змінитися й тоді, коли нових відгуків у нього не було: змістилося загальне середнє. Перерахунок відбувається періодично у фоні.
Скарга на відгук
Під кожним відгуком є скарга. Вона не видаляє відгук — вона кладе його в чергу до модератора з вашою причиною.
Якщо на один відгук поскаржилося кілька різних людей, він автоматично ховається до перевірки, а автор отримує лист. Це захист від цькування, а не вирок: якщо відгук правил не порушує, його повертають.
Обране й плани поїздок
Обране й списки
Сердечко на картці зберігає місце в обране. Обране можна розкладати по власних списках («Карпати влітку», «на вихідні») і перекладати між ними.
Обране — це просто закладки. Коли з’являються дати й порядок — це вже план поїздки.
План поїздки: кроки, дати, нотатки
План — це впорядкований список місць. Додати місце можна кнопкою «В план поїздки» на його сторінці, звідти ж створюється новий план.
Кожен крок має дату й нотатку; вони зберігаються самі, за секунду після того, як ви перестали друкувати — крок підсвічується зеленим. Порядок міняється стрілками ↑ ↓ (вони працюють і з клавіатури).
Якщо в кроках є координати, над списком з’являється карта плану з лінією маршруту.
Калькулятор бюджету поїздки
Під планом рахується орієнтовна вартість: житло за ночі, їжа на людину в день, вхідні квитки з карток місць і пальне за довжиною маршруту. Ви задаєте кількість людей, ночей і свої ціни — підсумок перераховується одразу.
Місця без вказаної ціни вважаються безкоштовними й позначені окремо, щоб не створювати враження точності там, де даних немає.
Бюджет бачать лише ті, хто має доступ до плану в кабінеті. У план, відкритий публічним посиланням, він не потрапляє.
Road-trip: довжина маршруту, порядок, «по дорозі»
Над списком кроків показано приблизну довжину маршруту, а біля кожного кроку — відстань від попереднього. Відстані рахуються по прямій із поправкою на дороги, тому всюди стоїть «≈»: для питання «це одноденна поїздка чи ні» цього досить.
«Впорядкувати за маршрутом» переставляє кроки так, щоб дорога вийшла коротшою. Перше місце лишається першим — його ви обрали не випадково, це зазвичай виїзд із дому.
«Що подивитися по дорозі» шукає місця біля лінії маршруту, а не біля самих точок, і показує, на скільки кілометрів кожне з них подовжить дорогу.
Події, добірки, статті
Добірки
Добірка — готовий список місць на тему. Частина зібрана руками, частина складається сама за умовою (наприклад, «безкоштовні місця Карпат») і оновлюється, коли в каталозі щось змінюється.
Події
Події — це те, що прив’язане до дат: фестивалі, ярмарки, екскурсії. Подію можна прив’язати до місця з каталогу — тоді на сторінці події видно, де вона відбувається, а на сторінці місця з’являється блок «Події тут» із найближчими трьома.
Події, які вже минули, зі списку зникають самі.
Статті й зв’язок «стаття ↔ місце»
У статті можна вказати місця, про які вона розповідає. Зв’язок працює в обидва боки: у статті з’являється блок із картками місць, а на картці місця — блок «почитати перед поїздкою».
Акаунт, профіль, приватність
Вхід, реєстрація, забутий пароль
Вхід, реєстрація й відновлення пароля відбуваються на сторінках самого сайту, а не в адмінці WordPress.
Повідомлення про невдалий вхід свідомо не уточнює, що саме не збіглося — логін чи пароль. Так само однаково виглядає відповідь на відновлення пароля незалежно від того, чи є така пошта в базі: інакше форму можна було б використати для перевірки, хто тут зареєстрований.
Чому реєстрація може бути закрита
Реєстрація вмикається окремим налаштуванням сайту. Якщо вона вимкнена, сторінка реєстрації чесно каже про це, а не показує форму, яка все одно не спрацює.
Поки реєстрація закрита, співредактором плану можна зробити лише того, у кого акаунт уже є. Для решти лишається посилання «лише перегляд» — воно акаунта не потребує.
Розділи кабінету
Обране · Плани поїздок · Мої відгуки · Запропонувати місце · Моє місце · Профіль · Приватність. Розділ «Моє місце» має сенс лише для тих, чиї права на заклад підтверджені.
Профіль і «підібрати під мене»
У профілі можна описати склад родини (скільки дорослих, вік дітей), тварин, потреби доступності, домашній регіон і звичний радіус поїздок.
Далі каталог уміє підставити це у фільтри однією дією — не треба щоразу вручну вибирати «з дітьми 3–6 років» і «з собакою».
Приватність: що зберігається і як це забрати
У розділі «Приватність» видно згоди, які ви давали, і є дві дії: вивантажити свої дані файлом і видалити акаунт.
Видалення акаунта незворотне: зникають профіль, обране й плани. Відгуки за замовчуванням лишаються без імені — вони вже вплинули на рейтинг місць і потрібні іншим людям.
Перегляди й натискання на картках рахуються знеособлено, добовими сумами. Ані власник місця, ані ми не бачимо, хто конкретно дивився картку.
Листи: які приходять і як вимкнути
Сервісні листи стосуються ваших власних дій: долі відгуку, підтвердження прав на заклад, запрошення в спільний план. Вони ввімкнені за замовчуванням.
Листи про новини й добірки — навпаки, лише за явною згодою. Обидва канали вимикаються в розділі «Приватність», і кожен лист має посилання туди.
Запропонувати місце, якого немає
У кабінеті є форма «Запропонувати місце»: назва, тип, координати або адреса, опис. Пропозиція потрапляє на модерацію й після схвалення стає звичайною карткою.
Вхід до форми є і в кінці каталогу, і в порожніх результатах пошуку — саме там, де стає зрозуміло, що місця бракує.
Кабінет власника місця
Як заявити права на своє місце
На картці закладу є дія «Це моє місце». Заявка йде на перевірку: ми звіряємо контакти в заявці з тими, що вказані в картці, тож пишіть із робочої пошти або телефона закладу.
Після підтвердження в кабінеті з’являється розділ «Моє місце», а ваші відповіді на відгуки позначаються бейджем власника. Бейдж рахується від чинного стану прав: якщо права відкликати, він зникне й зі старих відповідей.
Правки картки: чому вони не застосовуються одразу
Власник не редагує картку напряму, а пропонує зміни: контакти, години, ціни, короткий опис. Модератор приймає їх вибірково — може погодити нові години й не погодити опис.
Так зроблено тому, що картка — це спільні дані каталогу, а не рекламна сторінка: інакше опис поступово перетворився б на рекламний текст, а фактичні поля почали б розходитися з реальністю.
Поки правка в черзі, вона показана в кабінеті; її можна відкликати. Про рішення приходить лист.
Відповіді на відгуки
На кожен відгук про ваше місце можна відповісти один раз; відповідь показується під відгуком із позначкою власника. Її можна змінити або прибрати.
Відповідь не змінює оцінку й не ховає відгук. Якщо відгук порушує правила — це скарга, а не відповідь.
Статистика картки: що означають цифри
Показані перегляди картки й натискання дій — маршрут, телефон, сайт, бронювання — за обраний період, зі стовпчиками по днях.
Рахунок знеособлений: повторний перегляд тією ж людиною протягом півгодини не рахується двічі, боти й ваші власні заходи не рахуються взагалі. Тому цифри тут завжди трохи менші, ніж у зовнішніх лічильниках — вони ближчі до реальних людей.
Відсоток зміни показується лише тоді, коли в попередньому періоді було досить переглядів, щоб він щось означав. «+400%» від одного перегляду до п’яти — це шум, а не зростання.
Модерація, дані, наповнення
Черги модерації
В адмінці, у розділі «Об’єкти», окремими сторінками живуть: «Заявки власників», «Правки карток», «Відгуки» (разом зі скаргами), «Дублікати», «Імпорт» і «Рейтинг Google».
Пропозиції місць від користувачів окремої сторінки не мають: вони приходять як звичайні об’єкти у статусі «На розгляді» й чекають у списку об’єктів.
Правки карток приймаються по полях, а не цілою пачкою: у черзі видно «було → стало» для кожного поля окремо, і позначаються лише ті, з якими ви згодні.
Звідки беруться місця в каталозі
Три джерела: імпорт з OpenStreetMap і відкритих держреєстрів, пропозиції користувачів і ручне введення. Кожна картка пам’ятає своє джерело й ідентифікатор у ньому, тому повторний імпорт не створює дублів, а оновлює те, що вже є.
Місця без координат геокодуються за назвою й областю. Атрибуція джерел обов’язкова й показується у футері картки.
Дублі та злиття
Одне й те саме місце може приїхати з двох джерел під різними назвами. В адмінці є пошук схожих і злиття: одна картка лишається основною, друга віддає їй дані, відгуки й обране, а сама йде в кошик. Її стара адреса після цього віддає постійне перенаправлення (301) на основну картку — щоб посилання, які вже десь опубліковані, не привели в нікуди.
Злиття незворотне — перед ним варто відкрити обидві картки й переконатися, що це справді те саме місце, а не дві сусідні садиби з однаковою назвою.
Добірки, події та головна
Добірки бувають ручні (список місць) і динамічні (умова фільтра). Динамічну достатньо описати один раз — далі вона оновлюється сама.
На головній сторінці добірки — один із блоків, поряд із найближчими подіями, популярними регіонами й свіжими місцями. Ці блоки збираються з даних самі: щоб змінити плитки добірок на головній, достатньо змінити самі добірки.
Рейтинг Google: налаштування
Сторінка «Об’єкти → Рейтинг Google» показує стан інтеграції, дозволяє перевірити будь-який ідентифікатор місця й задати, скільки тримати відповідь у кеші. Без ключа блок на сайті просто не показується — помилок користувач не бачить.
Кеш за замовчуванням — доба: оцінка місця за день практично не змінюється, а кожен запит до Google оплачується окремо.
Фонові задачі: імпорт, перерахунки
Довгі роботи — імпорт, геокодинг, перерахунок рейтингів, прибирання старої статистики — виконуються порціями у фоні, а не одним запитом.
Черга рухається на відвідуваннях сайту, тому на порожньому dev-сайті вона може стояти. Щоб зрушити її, достатньо кілька разів відкрити будь-яку сторінку.
Технічне: API й перевірки
API: усе, що робить сайт, робиться через нього
Веб-інтерфейс не має «свого» бекенду: він звертається до того самого API /wp-json/travel/v1, що й майбутній мобільний застосунок. Тому будь-який сценарій можна перевірити запитом, не клікаючи.
Швидка перевірка, що сайт живий і якої він версії: /wp-json/travel/v1/ping.
Як автентифікуватися для перевірок
Браузер працює через cookie й одноразовий ключ, який тема сама кладе на сторінку. Для перевірок ззовні зручніші «Паролі додатків» WordPress — вони створюються в профілі користувача й підходять до HTTP Basic.
Особисті ендпоінти починаються з /me/ і без входу віддають 401. Виняток — запис натискань на картці: він відкритий, бо дію робить і гість, але нічого про людину не приймає.
Коди відповідей, які тут щось означають
401 — не увійшли. 403 — увійшли, але це не ваше. 404 — немає або доступ закрито. 429 — забагато спроб поспіль. 501 — можливість не налаштована (наприклад, немає ключа Google).
Різниця між 403 і 404 навмисна: чужий план віддає 404, а не 403, щоб за кодами не можна було перебирати, які записи існують.
Що перевіряти в першу чергу
Найкорисніші перевірки — не «чи відкривається», а межі: чужий доступ (403/404), повторна дія (чи не дублює), порожній стан (чи є що показати замість білого екрана), дуже довгий текст і дуже велике фото.
Окремо варто перевіряти те, що тихо ламається: чи оновилися похідні дані після програмного запису, чи не показує кеш стару відповідь після виправлення, чи рахується дія двічі.
Частина логіки покрита офлайн-перевірками в теці tests/ репозиторію — вони не потребують ані сайту, ані бази.
За цим запитом нічого не знайшлося. Спробуйте інше слово або поверніть роль «Усе».