
Під час deployment ICanUp Composer не зміг клонувати приватний GitLab пакет і показав згенеровану помилку Failed to clone. При цьому ssh -T git@gitlab.com усередині Docker успішно впізнавав мій GitLab account. Розбираю, чому цього тесту недостатньо, як окремо перевірити SSH агента, доступ саме до репозиторію, контекст виконання Composer і URL репозиторію.
11

Під час локальної роботи з Laravel і Vite я отримала EACCES: permission denied для node_modules/.vite/deps/package.json. Причина виявилася не у Vite, а у власнику файлів: частину кешу раніше створив root через Docker або команду з sudo. Розбираю, як знайти такі файли, коли достатньо видалити .vite, коли потрібно виправити ownership усього node_modules і як не повторити проблему в Laradock.
24

Після інтеграції власного localization package в ICanUp мені було недостатньо просто побачити, що Laravel route:cache завершується без помилки. Я перевірила реальні localized routes, logical route names, default locale без префікса, /en, locale switch, redirects, параметри URL і роботу застосунку після повторного завантаження cached routes.
23

У ICanUp robots.txt, sitemap і canonical з'являлися не одночасно, але на production вони мають описувати один і той самий набір публічних URL. Я зібрала свій практичний SEO checklist: що дозволяємо сканувати, що додаємо в sitemap, який URL оголошуємо canonical і як перевіряю все це через raw HTML та HTTP-відповіді після deploy.
25

Для статистики ICanUp мені була потрібна країна відвідувача, але я не хотіла зберігати його IP-адресу або викликати зовнішній GeoIP API на кожен перегляд. Я перенесла визначення країни на рівень Nginx і MaxMind, а Laravel отримує лише нормалізований дволітерний код через довірений внутрішній заголовок.
24

У ICanUp Telegram уже показував обкладинку, заголовок і опис Post, але LinkedIn формував картку некоректно. Я перевірила Open Graph у початковому HTML, відповідь для LinkedInBot, URL і параметри зображення, дублікати meta tags та кеш платформи. Цей кейс показав, чому робота прев'ю в одному месенджері ще не доводить, що social metadata налаштовані правильно.
30

У ICanUp я хотіла автоматично рухати Jira-задачу після створення та merge GitLab Merge Request, але не віддавати автоматизації весь життєвий цикл задачі. Розбираю, чому залишила лише два автоматичні переходи, як перевіряю target branch і поточний статус та чому повторний webhook не повинен рухати задачу вдруге.
34

У списку постів Infinite Scroll працював до моменту завантаження page=2: нові записи приходили, але пости з першої сторінки зникали. Розбираю реальний кейс ICanUp - різницю між заміною та додаванням даних, захист від дублів, стан пагінації та правильне скидання списку при зміні фільтра, категорії або локалі.
50

Під час локального запуску AVN Documentation AI мій диск майже закінчився. Docker Build Cache виріс приблизно до 29 GB, images займали ще понад 31 GB, а filesystem дійшов до 99-100%. Показую, як я знайшла причину, чому звичайний prune майже не допоміг і як контрольовано звільнила десятки гігабайтів.
33

У ICanUp visible breadcrumbs і BreadcrumbList JSON-LD описують одну й ту саму hierarchy сторінки. Показую, як я пов’язую навігацію зі structured data, формую sequential positions, використовую localized canonical URLs і не додаю окрему SEO hierarchy поверх application breadcrumbs.
33

У ICanUp JSON-LD BlogPosting пов’язує статтю не тільки з SEO metadata, а й з реальною author entity. Показую, як я представила автора як Person, узгодила structured data з canonical URL і localized metadata та чому JSON-LD має рендеритися одразу в SSR HTML.
44

У multilingual Laravel-проєкті x-default легко сприйняти як ще одну мовну версію сторінки. У ICanUp я використовую його інакше: x-default вказує на URL default locale. Розбираю реальний HreflangService, зв’язок із canonical та edge cases для різних content types.
35