[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"technology-uk-php":3,"technology-projects-uk-php":36,"mdc-7t8qfw-key":234},{"id":4,"title":5,"category":6,"content":7,"description":8,"extension":9,"faq":10,"icon":17,"links":18,"meta":24,"projects":25,"since":32,"stem":33,"updated":34,"__hash__":35},"technologies_uk\u002Fuk\u002Ftechnologies\u002Fphp.yml","PHP","backend","PHP — моя основна мова серверної розробки. Маю понад вісім років комерційного досвіду з Laravel, Symfony та WordPress, коли він відповідає завданню. Зараз працюю з PHP 8.x; попередній досвід також охоплює старіші версії мови.\n\n## Де я використовую PHP\n\nНа Laravel працюють VetSpace, DigiPulse та NetPostPanel. Комерційна робота із Symfony охоплює платформу продажу квитків на події Formula 1, MotoGP, EICMA та EuroLeague. Мої завдання включають оформлення замовлень, облікові записи, адміністративні інструменти й зовнішні інтеграції.\n\n## На чому зосереджуюся\n\n- **Бізнес-логіка** — зрозумілі процеси для записів, підписок і замовлень.\n- **API та платежі** — перевірка даних, авторизація й надійна обробка відповідей зовнішніх сервісів.\n- **Підтримка** — автоматичні тести та статичний аналіз для розвитку наявного коду.\n\n## Вибір середовища виконання\n\nPHP-FPM підходить для звичайної обробки запитів. Процеси тривалої роботи, зокрема Octane із FrankenPHP, потребують іншого підходу до стану й пам'яті. Я обираю середовище під застосунок і перевіряю результат на характерному навантаженні. Сама мова чи фреймворк не гарантує швидкодії.\n","Розробка на PHP, Laravel і Symfony: SaaS-застосунки, продаж квитків, платіжні інтеграції та API з подальшою підтримкою.","yml",[11,14],{"label":12,"content":13},"З якими версіями PHP ви працюєте?","Зараз працюю з PHP 8.x. Під час оновлення старішого застосунку перевіряю вимоги фреймворку й залежностей та тестую поведінку, на яку впливає зміна версії.",{"label":15,"content":16},"Як ви обираєте між Laravel і Symfony?","Враховую наявний код, досвід команди, інтеграції та вимоги до підтримки. Обидва підходять для тривалого розвитку: Laravel використовую у власних SaaS, а Symfony — у комерційній платформі продажу квитків.","i-simple-icons-php",[19],{"label":20,"to":21,"color":22,"icon":23},"php.net","https:\u002F\u002Fwww.php.net","neutral","i-heroicons-arrow-top-right-on-square",{},[26,27,28,29,30,31],"vetspace","digipulse","digispace","netpostpanel","vetcard","digispace-studio","2017","uk\u002Ftechnologies\u002Fphp","2026-09-20","UtvmmwTweGmRLQ5jEyC6NxHoUlNz9K3iV5C-LCtfz_0",[37,85,122,159,189,213],{"id":38,"title":39,"content":40,"date":41,"description":42,"extension":9,"featured":43,"image":44,"links":45,"meta":60,"stack":61,"stem":80,"tags":81,"url":48,"__hash__":84},"projects_uk\u002Fuk\u002Fprojects\u002Fvetspace.yml","VetSpace","Двостороння ветеринарна платформа — SEO-каталог клінік та CRM для підписки з призначеннями та записами пацієнтів. Публічний каталог клінік, побудований для SEO-first набуття клієнтів, та підписка на основі CRM (призначення, візити, записи пацієнтів) як окремі Vue\u002FNuxt додатки над одним Laravel API. Архітектура database-per-tenant, підписки Stripe через Cashier, GraphQL + REST, та аналіз візитів з допомогою AI через присвячений Go мікросервіс.\n\n## Ключові можливості\n\n- **Двостороння воронка** - SEO-каталог залучає клініки, а CRM за підпискою (візити, картки пацієнтів) їх утримує\n- **Справжня ізоляція тенантів** - database-per-tenant тримає дані кожної клініки окремо, а GDPR-експорт\u002Fвидалення — це операція на рівні бази\n- **Дві грані API** - GraphQL для складних запитів каталогу, REST для CRM — одна кодова база Laravel\n- **Білінг із коробки** - підписки Stripe через Cashier: тріали, зміна планів, dunning\n- **AI там, де допомагає** - аналіз візитів виконує окремий Go-мікросервіс, не навантажуючи основний API\n\n## Стек технологій\n\n- **Бекенд**: Laravel (API)\n- **Фронтенд**: Vue\u002FNuxt (окремі застосунки)\n- **Архітектура**: Database-per-tenant multi-tenancy\n- **Платежі**: Stripe через Cashier\n- **API**: GraphQL + REST\n- **AI**: Go-мікросервіс для аналізу візитів\n","2026-09-19","Двостороння ветеринарна платформа — SEO-каталог клінік та CRM для підписки з призначеннями та записами пацієнтів",true,"\u002Fhero\u002Fvetspace.avif",[46,50,54,57],{"label":47,"to":48,"color":49,"icon":23},"Live Demo","https:\u002F\u002Fvetspace.pro","primary",{"label":51,"to":52,"color":22,"icon":53},"Огляд API","https:\u002F\u002Fgithub.com\u002FYurij2015\u002Fvetspace-api","i-simple-icons-github",{"label":55,"to":56,"color":22,"icon":53},"Огляд фронтенду","https:\u002F\u002Fgithub.com\u002FYurij2015\u002Fvetspace-frontend",{"label":58,"to":59,"color":22,"icon":53},"Огляд VetCard","https:\u002F\u002Fgithub.com\u002FYurij2015\u002Fvetspace-vetcard",{},[62,65,68,71,74,77],{"name":63,"icon":64},"Laravel","i-simple-icons-laravel",{"name":66,"icon":67},"Vue","i-simple-icons-vuedotjs",{"name":69,"icon":70},"Nuxt","i-simple-icons-nuxtdotjs",{"name":72,"icon":73},"Stripe","i-simple-icons-stripe",{"name":75,"icon":76},"GraphQL","i-simple-icons-graphql",{"name":78,"icon":79},"AI","i-heroicons-sparkles","uk\u002Fprojects\u002Fvetspace",[82,63,66,83,72,78],"SaaS","Multi-tenant","DG_13GfOpIs-FP9mwOJDR33DOhZ0GdfeSK1u1JLzZt8",{"id":86,"title":87,"content":88,"date":89,"description":90,"extension":9,"featured":43,"image":91,"links":92,"meta":98,"stack":99,"stem":117,"tags":118,"url":94,"__hash__":121},"projects_uk\u002Fuk\u002Fprojects\u002Fdigipulse.yml","DigiPulse","SaaS для моніторингу доступності — перевірки кожні 60 секунд, відстеження закінчення SSL, сповіщення через Telegram та email. Адмін панель та основний бекенд побудовані з Laravel (Octane, Reverb websockets) та Filament, а моніторинг-движок — окремий Go сервіс. Інтеграція Google OAuth sign-in та Cloudflare Turnstile. Включає MCP сервер, який надає дані моніторингу безпосередньо до AI асистентів. Self-hosted на Proxmox.\n\n## Ключові можливості\n\n- **Окремий Go-движок** - перевірки доступності виконує окремий Go-сервіс, тож постійний поллінг кожні 60 секунд не гальмує Laravel-застосунок\n- **Дашборд у реальному часі** - Reverb websockets передають зміни статусу в UI наживо, без ручного оновлення\n- **Octane + Filament** - резидентний у пам'яті Laravel із повною адмін-панеллю для моніторів, контактів і правил сповіщень\n- **MCP-сервер** - монітори та інциденти доступні для AI-асистентів (Claude, Cursor) через Model Context Protocol\n- **Google OAuth + Turnstile** - вхід без пароля та захист від ботів на публічних формах\n- **Self-hosted** - розгорнуто на власному Proxmox-хомлабі, який я адмініструю повністю\n\n## Стек технологій\n\n- **Бекенд**: Laravel (Octane, Reverb websockets)\n- **Адмін-панель**: Filament\n- **Движок моніторингу**: Go (окремий сервіс)\n- **База даних**: PostgreSQL\n- **Інтеграція AI**: MCP-сервер\n- **Інфраструктура**: Self-hosted на Proxmox\n","2026-04-17","SaaS для моніторингу доступності: event-driven архітектура — Laravel (Octane, Reverb) і Filament диспетчеризують перевірки через Redis у легкий Go-воркер; MCP-сервер дає дані моніторингу AI-асистентам; сповіщення Telegram\u002Femail","\u002Fhero\u002Fdigipulse.avif",[93,95],{"label":47,"to":94,"color":49,"icon":23},"https:\u002F\u002Fdigipulse.cloud",{"label":96,"to":97,"color":22,"icon":53},"GitHub","https:\u002F\u002Fgithub.com\u002FYurij2015\u002Fdigipulse-backend",{},[100,101,104,107,110,113,114],{"name":63,"icon":64},{"name":102,"icon":103},"Filament","i-simple-icons-filament",{"name":105,"icon":106},"Go","i-simple-icons-go",{"name":108,"icon":109},"PostgreSQL","i-simple-icons-postgresql",{"name":111,"icon":112},"Redis","i-simple-icons-redis",{"name":66,"icon":67},{"name":115,"icon":116},"MCP","i-heroicons-cpu-chip","uk\u002Fprojects\u002Fdigipulse",[82,63,105,119,115,111,120],"Monitoring","Event-driven","jNmJS9kMabUQ04ggukPIRPMSLui7xNAbE9Nsuuw99ag",{"id":123,"title":124,"content":125,"date":126,"description":127,"extension":9,"featured":43,"image":128,"links":129,"meta":134,"stack":135,"stem":154,"tags":155,"url":131,"__hash__":158},"projects_uk\u002Fuk\u002Fprojects\u002Fdigispace.yml","DigiSpace","Production-сайт digispace.pro — публічний сайт агенції, адмін-панель та кастомна CMS в одному застосунку Laravel, тепер повністю мультимовний (EN\u002FUK\u002FPL), з Filament-панеллю поруч зі старою адмінкою на Inertia + Vue. Той самий код, що працює на живому сайті, доступний на GitHub.\n\n## Ключові можливості\n\n- **Адмін-панель на Filament** - паралельна панель `\u002Fcontrol` (24 ресурси) з TipTap-редактором, заливкою зображень напряму в MinIO та контент-орієнтованою навігацією, впроваджена ресурс за ресурсом поруч з існуючою Inertia-адмінкою\n- **Мультимовність за задумом** - перекладаються не лише сторінки, а й структурні UI-рядки (меню, футер, кнопки) для кожної локалі, з hreflang-маршрутизацією\n- **SEO з коробки** - структуровані дані JSON-LD, локалізовані sitemap та коректна обробка 404 для кожної локалі\n- **Моноліт як треба** - публічний сайт і обидві адмінки в одному застосунку Laravel, без окремого API\n- **Самостійний контент** - сторінки, послуги й кейси редагуються в CMS — без деплою заради зміни тексту чи перекладу\n- **Брама якості** - PHPUnit-тести та статичний аналіз PHPStan у CI\n- **Відкритий код** - саме той код, що обслуговує digispace.pro, публічний на GitHub\n\n## Стек технологій\n\n- **Бекенд**: Laravel\n- **Адмінка**: Filament 5 (`\u002Fcontrol`) + стара адмінка на Inertia.js + Vue\n- **Фронтенд**: Vue.js, Vite\n- **Локалізація**: переклади контенту й структури EN\u002FUK\u002FPL\n- **Архітектура**: Кастомна CMS\n","2022-10-05","Мультимовний (EN\u002FUK\u002FPL) production-сайт агенції з кастомною CMS — Filament-панель з розширеним редактором контенту, переклади, JSON-LD і локалізовані sitemap із коробки, поруч зі старою адмінкою на Inertia + Vue","\u002Fhero\u002Fdigispace.avif",[130,132],{"label":47,"to":131,"color":49,"icon":23},"https:\u002F\u002Fdigispace.pro",{"label":96,"to":133,"color":22,"icon":53},"https:\u002F\u002Fgithub.com\u002FYurij2015\u002FDigiSpace",{},[136,137,140,141,144,147,150,151],{"name":63,"icon":64},{"name":138,"icon":139},"Inertia","i-simple-icons-inertia",{"name":66,"icon":67},{"name":142,"icon":143},"Vite","i-simple-icons-vite",{"name":145,"icon":146},"MySQL","i-simple-icons-mysql",{"name":148,"icon":149},"Tailwind CSS","i-simple-icons-tailwindcss",{"name":102,"icon":103},{"name":152,"icon":153},"CMS","i-heroicons-document-text","uk\u002Fprojects\u002Fdigispace",[63,102,138,66,156,157],"i18n","SEO","6eh_R4Py3nOuDZ26oLWb7x2WWp4iSV66uJrBh_MkX_U",{"id":160,"title":161,"content":162,"date":163,"description":164,"extension":9,"featured":43,"image":165,"links":166,"meta":170,"stack":171,"stem":183,"tags":184,"url":187,"__hash__":188},"projects_uk\u002Fuk\u002Fprojects\u002Fnetpostpanel.yml","NetPostPanel","Внутрішня AI-платформа для контент-операцій, яка перетворює дослідження теми на готовий контент: повний RAG-пайплайн (Google Custom Search + RSS → скрапінг → мультипровайдерна генерація → векторизація), плюс версіонований зовнішній API, що живить контент-процеси інших проєктів, зокрема блог-пайплайн DigiSpace.\n\n## Ключові можливості\n\n- **Зовнішній API** - версіонований `POST \u002Fapi\u002Fv1\u002Fgenerate` + `\u002Ftranslate` з ключами й лімітами на клієнта відкриває весь пайплайн для інших застосунків, синхронно або асинхронно з колбеками\n- **Auto Pilot** - щоденні заплановані запуски генерують контент з нових джерел натхнення чи власних тем без участі людини\n- **AI без прив'язки до провайдера** - Gemini та OpenAI за драйвер-абстракцією, тож зміна моделі — це конфіг, а не рефакторинг\n- **Семантичний пайплайн** - векторний пошук на Qdrant дедублікує й кластеризує новини ще до генерації\n- **Автономна агрегація** - авто-виявлення RSS-стрічок та Google Custom Search плюс скрапінг перетворюють тему на самопоповнюване джерело контенту\n- **Прозорі LLM-виклики** - кожна генерація трасується в Langfuse: токени, затримка, вартість\n- **Рольовий доступ** - ролі admin\u002Fcontent manager\u002Feditor, кожен запит обмежений власником, крім адміна\n\n## Стек технологій\n\n- **Бекенд**: Laravel, агенти `laravel\u002Fai`\n- **Фронтенд**: Inertia.js + Vue 3 (SPA Search & Creation, редактор TipTap)\n- **AI**: Мультипровайдерно (Gemini\u002FOpenAI) за драйвер-абстракцією\n- **Дослідження**: Google Custom Search + RSS-агрегація, скрапінг сторінок\n- **Векторна БД**: Qdrant для семантичного пошуку\n- **Обсервабельність**: Langfuse для LLM-трейсингу\n- **Черга**: Laravel Horizon\n- **Тести**: PHPUnit\u002FPest + Cypress E2E\n","2024-11-10","AI-платформа для контент-операцій — RAG-пайплайн (дослідження → скрапінг → генерація → векторизація), зовнішній API для інших застосунків, та Auto Pilot для генерації без участі людини","\u002Fhero\u002Fnetpostpanel.avif",[167],{"label":168,"to":169,"color":22,"icon":53},"Огляд проєкту","https:\u002F\u002Fgithub.com\u002FYurij2015\u002Fnet-post-panel-overview",{},[172,173,174,177,180],{"name":63,"icon":64},{"name":78,"icon":79},{"name":175,"icon":176},"Qdrant","i-simple-icons-qdrant",{"name":178,"icon":179},"Langfuse","i-heroicons-chart-bar",{"name":181,"icon":182},"Horizon","i-simple-icons-laravelhorizon","uk\u002Fprojects\u002Fnetpostpanel",[78,63,185,186,175,181],"RAG","External API","https:\u002F\u002Fnet-post-panel.digispace.pro","aFH5L_k5kJI95DcFyQpS2By5vB1-qCqdu32coHU9QL8",{"id":190,"title":191,"content":192,"date":34,"description":193,"extension":9,"featured":43,"image":194,"links":195,"meta":199,"stack":200,"stem":209,"tags":210,"url":197,"__hash__":212},"projects_uk\u002Fuk\u002Fprojects\u002Fvetcard.yml","VetCard","Публічна частина VetSpace — мультитенантний каталог ветеринарних клінік. Один Nuxt SSR-деплой обслуговує всі клініки: SEO-сторінки клінік, онлайн-запис на прийом з проксуванням до tenant-бекенду кожної клініки, темізація під бренд клініки та підтримка філій.\n\n## Ключові особливості\n\n- **Один деплой — багато клінік** — застосунок маршрутизує за slug клініки; запити на запис і слоти проксуються до власного tenant-бекенду кожної клініки\n- **SEO-first каталог** — 590+ клінік з SSR-сторінками, структурованими даними та локалізованими маршрутами\n- **Брендинг кожної клініки** — сторінка клініки темізується її кольором, з бейджем \"Powered by VetSpace\"\n- **Реальний UX запису** — вільні слоти показують кількість вільних лікарів із кольоровим кодуванням дефіциту\n- **Повна локалізація** — українська, англійська та польська з prefix-маршрутизацією\n\n## Технології\n\n- **Фронтенд**: Nuxt 4 \u002F Vue 3, Tailwind CSS v4\n- **Бекенд**: Laravel catalog API + tenant-ендпоінти для запису\n- **Рендеринг**: SSR для SEO-сторінок, CSR для флоу запису\n- **Тестування**: Vitest юніт-тести + Cypress E2E проти реального бекенду\n","Мультитенантний каталог ветеринарних клінік: SEO-сторінки клінік, онлайн-запис на прийом, брендинг кожної клініки — один Nuxt-застосунок обслуговує всіх","\u002Fhero\u002Fvetcard.avif",[196,198],{"label":47,"to":197,"color":49,"icon":23},"https:\u002F\u002Fvetcard.pro",{"label":168,"to":59,"color":22,"icon":53},{},[201,202,203,206,207],{"name":69,"icon":70},{"name":66,"icon":67},{"name":204,"icon":205},"TypeScript","i-simple-icons-typescript",{"name":148,"icon":149},{"name":208,"icon":64},"Laravel API","uk\u002Fprojects\u002Fvetcard",[69,66,83,157,211],"SSR","RHyDtiD49495RNKUgIdwAcH8oiwELVMSL6Ik4JsT6H4",{"id":214,"title":215,"content":216,"date":217,"description":218,"extension":9,"featured":43,"image":219,"links":220,"meta":223,"stack":224,"stem":230,"tags":231,"url":222,"__hash__":233},"projects_uk\u002Fuk\u002Fprojects\u002Fdigispace-studio.yml","DigiSpace Studio","Маркетинговий сайт DigiSpace Studio — спеціалізованої веб-студії для ветеринарних клінік та pet-брендів. Побудований на WordPress із темою Blocksy та Stackable\u002FGutenberg-блоками, дочірньою темою для кастомізації, блогом та захопленням лідів через контактні форми.\n\n## Ключові особливості\n\n- **Нішеве позиціювання** — сайт говорить безпосередньо з ветклініками та pet-брендами, а не про \"агенцію для всіх\"\n- **Блочне редагування** — блоки Stackable та Ultimate Gutenberg дозволяють будувати нові лендінги без коду\n- **Дочірня тема** — кастомізації живуть у Blocksy child theme, тож оновлення теми не зносять дизайн\n- **Блог + захоплення лідів** — контент-маркетинг для SEO з Contact Form 7 для запитів\n","2024-06-27","Маркетинговий сайт нішевої IT-студії для ветеринарних клінік та pet-брендів — WordPress із темою Blocksy та Gutenberg-блоками","\u002Fhero\u002Fdigispace-studio.avif",[221],{"label":47,"to":222,"color":49,"icon":23},"https:\u002F\u002Fdigispace.studio",{},[225,228,229],{"name":226,"icon":227},"WordPress","i-simple-icons-wordpress",{"name":5,"icon":17},{"name":145,"icon":146},"uk\u002Fprojects\u002Fdigispace-studio",[226,232,157],"Маркетинг","2GtFMgPlDA3lLlnUwZgnGML3YSELOcakTh8GCpXadvU",{"data":235,"body":236},{},{"type":237,"children":238},"root",[239,247,254,259,265,301,307],{"type":240,"tag":241,"props":242,"children":243},"element","p",{},[244],{"type":245,"value":246},"text","PHP — моя основна мова серверної розробки. Маю понад вісім років комерційного досвіду з Laravel, Symfony та WordPress, коли він відповідає завданню. Зараз працюю з PHP 8.x; попередній досвід також охоплює старіші версії мови.",{"type":240,"tag":248,"props":249,"children":251},"h2",{"id":250},"де-я-використовую-php",[252],{"type":245,"value":253},"Де я використовую PHP",{"type":240,"tag":241,"props":255,"children":256},{},[257],{"type":245,"value":258},"На Laravel працюють VetSpace, DigiPulse та NetPostPanel. Комерційна робота із Symfony охоплює платформу продажу квитків на події Formula 1, MotoGP, EICMA та EuroLeague. Мої завдання включають оформлення замовлень, облікові записи, адміністративні інструменти й зовнішні інтеграції.",{"type":240,"tag":248,"props":260,"children":262},{"id":261},"на-чому-зосереджуюся",[263],{"type":245,"value":264},"На чому зосереджуюся",{"type":240,"tag":266,"props":267,"children":268},"ul",{},[269,281,291],{"type":240,"tag":270,"props":271,"children":272},"li",{},[273,279],{"type":240,"tag":274,"props":275,"children":276},"strong",{},[277],{"type":245,"value":278},"Бізнес-логіка",{"type":245,"value":280}," — зрозумілі процеси для записів, підписок і замовлень.",{"type":240,"tag":270,"props":282,"children":283},{},[284,289],{"type":240,"tag":274,"props":285,"children":286},{},[287],{"type":245,"value":288},"API та платежі",{"type":245,"value":290}," — перевірка даних, авторизація й надійна обробка відповідей зовнішніх сервісів.",{"type":240,"tag":270,"props":292,"children":293},{},[294,299],{"type":240,"tag":274,"props":295,"children":296},{},[297],{"type":245,"value":298},"Підтримка",{"type":245,"value":300}," — автоматичні тести та статичний аналіз для розвитку наявного коду.",{"type":240,"tag":248,"props":302,"children":304},{"id":303},"вибір-середовища-виконання",[305],{"type":245,"value":306},"Вибір середовища виконання",{"type":240,"tag":241,"props":308,"children":309},{},[310],{"type":245,"value":311},"PHP-FPM підходить для звичайної обробки запитів. Процеси тривалої роботи, зокрема Octane із FrankenPHP, потребують іншого підходу до стану й пам'яті. Я обираю середовище під застосунок і перевіряю результат на характерному навантаженні. Сама мова чи фреймворк не гарантує швидкодії."]