Changelog 2026.01 🎄
Пройшов місяць з нашого попереднього поста про розробку Крути, тож час поділитися тим, що ми встигли зробити за цей період.
Загалом, у main гілку було всього 18 комітів, і працювали ми над такими штуками:
- Захист від автоматизованих логінів (ботів)
- Перехід з Leaflet на Mapbox
- Редактор маршрутів
- Виправлення помилок та оптимізація
Детальніше про все далі:
Захист від ботів
Майже одразу як ми додали email як опцію для логіну, в Kruty почали реєструватися боти. Я не досліджував, що саме це за боти і звідки вони приходили на сервіс, але імовірно це були LLM scraping bots.
Боти є проблемою, тому що вони спотворюють реальний стан справ на сервісі, бо впливають на метрики, такі як кількість реальних користувачів. Іншою проблемою є те, що деякі боти позначали наші листи з логін кодом як спам, що погано впливає на спам рейтинг доменного імені.
Всі ці листи на скріншоті були відправлені на запит ботів, один з ботів вирішив, що це спам. 🤷♂️

Загалом, ми мали більше 100 зареєстрованих ботів. Not great, not terrible, але хотілося б мати натомість реальних користувачів. 🙃
На щастя, боти все ще достатньо тупі, щоб обійти капчу, і в нашому випадку для вирішення проблеми достатньо було додати Cloudflare Turnstile віджет на сторінку логіну.
Редактор маршрутів
Серед багатьох ідей того, що можна втілити на Крути, була ідея створити простий, але зручний редактор GPS маршрутів. Олексій неодноразово скаржився на редактор маршрутів у Strava і мріяв про зручніший інструмент. Мене особисто розробка редактора маршрутів трохи лякала, бо це rabbit hole, але ідея мати інструмент для створення маршрутів безпосередньо в Крути мені дуже імпонувала.
Наразі редактор маршрутів доволі примітивний і навряд чи найближчим часом буде просунутим, як RideWithGPS, але він є good enough для простих потреб і може бути корисним.
Є ідея, як покращити редактор маршрутів, щоб спростити історію дій, не втрачати поточний стан маршруту при перезавантаженні сторінки, а також дозволити редагування маршрутів декількома користувачами, але це вже після свят 🙂.
Виправлення помилок та оптимізація
Звісно, були й всякі дрібні фікси - Олексій робив виправлення CSS, я виправляв деплоймент, але одна оптимізація вийшла цікавою, розповім про неї трохи.
Один з реальних користувачів Kruty хотів поділитися маршрутом зі своїми друзями джиперами, але не зміг відкрити GPX файл у Kruty. Боже бережи Posthog, завдяки якому я дізнався про цю проблему. Як виявилось, GPX файл відкривався, але через секунд 30 і завантажувався повільно, бо це був файл, який писався на маршруті, важив 7,5 МБ і мав 24646 точок.
Перше, що приходило на думку, це те, що нам не потрібні всі точки маршруту, лише ті, які потрібні, щоб маршрут зберігав свою точність. Як виявилось, ця проблема вже вирішена алгоритмом Рамера - Дугласа - Пекера.
Я додав цей алгоритм для оптимізації завантажених маршрутів, і це зменшило кількість точок для проблемного маршруту з 24646 до лише 440. Маршрут візуалізовувався миттєво, користувач залишився задоволеним. 🫡
Що далі?
У попередньому пості ми писали про Клуби, але наразі можна констатувати, що розробка клубів на паузі, допоки немає чіткого розуміння, як клуби мають виглядати.
Протягом різдвяних канікул я відкрив для себе XCode і зробив прототип мобільного iOS клієнта Kruty. Хто зна, може з цього прототипу вийде щось путнє, бо це зробить можливим цікавий функціонал, нотифікації, більш зручний інтерфейс.
Дякуємо, побачимось у 2026.2.