[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"technology-uk-hetzner":3,"technology-projects-uk-hetzner":30,"mdc-n33lgg-key":146},{"id":4,"title":5,"category":6,"content":7,"description":8,"extension":9,"faq":10,"icon":11,"links":12,"meta":21,"projects":22,"since":26,"stem":27,"updated":28,"__hash__":29},"technologies_uk\u002Fuk\u002Ftechnologies\u002Fhetzner.yml","Hetzner","infrastructure","Hetzner надає виділений сервер, який я орендую для DigiPulse, VetSpace, NetPostPanel і допоміжних сервісів. Я керую програмним середовищем, а Proxmox розділяє застосунки між віртуальними машинами.\n\n## За що я відповідаю\n\nДо моїх завдань належать операційна система, віртуальні машини, розгортання контейнерів, мережеві налаштування й відновлення застосунків. Оренда дає контроль над розподілом ресурсів, але обладнання залишається власністю провайдера. Апаратні несправності та заміну компонентів вирішують разом із підтримкою хостингу.\n\n## Чому цей варіант підходить моїм проєктам\n\nКілька постійно запущених сервісів можуть використовувати ресурси одного сервера. Це дає прогнозовану базову вартість і свободу вибору інструментів розгортання. Повні витрати також включають сховища, резервні копії, час на адміністрування й додаткову інфраструктуру.\n\n## Доступність потребує окремого плану\n\nКілька віртуальних машин на одному сервері залежать від того самого фізичного обладнання. Ізоляція Proxmox не забезпечує відмовостійкості цього вузла. Якщо вимоги до доступності зростають, потрібно окремо продумати резервування та час відновлення, а не лише створити ще одну віртуальну машину.\n","Виділений сервер Hetzner для SaaS: орендоване обладнання, віртуальні машини Proxmox і самостійне адміністрування застосунків.","yml",null,"i-simple-icons-hetzner",[13,18],{"label":14,"to":15,"color":16,"icon":17},"hetzner.com","https:\u002F\u002Fwww.hetzner.com","neutral","i-heroicons-arrow-top-right-on-square",{"label":19,"to":20,"color":16,"icon":17},"Технічна документація","https:\u002F\u002Fdocs.hetzner.com\u002Frobot\u002Fdedicated-server\u002Fdedicated-server-hardware\u002Fdedicated-server-hardware-overview\u002F",{},[23,24,25],"digipulse","vetspace","netpostpanel","2023","uk\u002Ftechnologies\u002Fhetzner","2026-09-20","IpD4AVdOISGWKkepL-Mh3iRZW8ch0jibRBksTbTk1JE",[31,77,116],{"id":32,"title":33,"content":34,"date":35,"description":36,"extension":9,"featured":37,"image":38,"links":39,"meta":48,"stack":49,"stem":71,"tags":72,"url":42,"__hash__":76},"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",true,"\u002Fhero\u002Fdigipulse.avif",[40,44],{"label":41,"to":42,"color":43,"icon":17},"Live Demo","https:\u002F\u002Fdigipulse.cloud","primary",{"label":45,"to":46,"color":16,"icon":47},"GitHub","https:\u002F\u002Fgithub.com\u002FYurij2015\u002Fdigipulse-backend","i-simple-icons-github",{},[50,53,56,59,62,65,68],{"name":51,"icon":52},"Laravel","i-simple-icons-laravel",{"name":54,"icon":55},"Filament","i-simple-icons-filament",{"name":57,"icon":58},"Go","i-simple-icons-go",{"name":60,"icon":61},"PostgreSQL","i-simple-icons-postgresql",{"name":63,"icon":64},"Redis","i-simple-icons-redis",{"name":66,"icon":67},"Vue","i-simple-icons-vuedotjs",{"name":69,"icon":70},"MCP","i-heroicons-cpu-chip","uk\u002Fprojects\u002Fdigipulse",[73,51,57,74,69,63,75],"SaaS","Monitoring","Event-driven","jNmJS9kMabUQ04ggukPIRPMSLui7xNAbE9Nsuuw99ag",{"id":78,"title":79,"content":80,"date":81,"description":82,"extension":9,"featured":37,"image":83,"links":84,"meta":96,"stack":97,"stem":112,"tags":113,"url":86,"__hash__":115},"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 для підписки з призначеннями та записами пацієнтів","\u002Fhero\u002Fvetspace.avif",[85,87,90,93],{"label":41,"to":86,"color":43,"icon":17},"https:\u002F\u002Fvetspace.pro",{"label":88,"to":89,"color":16,"icon":47},"Огляд API","https:\u002F\u002Fgithub.com\u002FYurij2015\u002Fvetspace-api",{"label":91,"to":92,"color":16,"icon":47},"Огляд фронтенду","https:\u002F\u002Fgithub.com\u002FYurij2015\u002Fvetspace-frontend",{"label":94,"to":95,"color":16,"icon":47},"Огляд VetCard","https:\u002F\u002Fgithub.com\u002FYurij2015\u002Fvetspace-vetcard",{},[98,99,100,103,106,109],{"name":51,"icon":52},{"name":66,"icon":67},{"name":101,"icon":102},"Nuxt","i-simple-icons-nuxtdotjs",{"name":104,"icon":105},"Stripe","i-simple-icons-stripe",{"name":107,"icon":108},"GraphQL","i-simple-icons-graphql",{"name":110,"icon":111},"AI","i-heroicons-sparkles","uk\u002Fprojects\u002Fvetspace",[73,51,66,114,104,110],"Multi-tenant","DG_13GfOpIs-FP9mwOJDR33DOhZ0GdfeSK1u1JLzZt8",{"id":117,"title":118,"content":119,"date":120,"description":121,"extension":9,"featured":37,"image":122,"links":123,"meta":127,"stack":128,"stem":140,"tags":141,"url":144,"__hash__":145},"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",[124],{"label":125,"to":126,"color":16,"icon":47},"Огляд проєкту","https:\u002F\u002Fgithub.com\u002FYurij2015\u002Fnet-post-panel-overview",{},[129,130,131,134,137],{"name":51,"icon":52},{"name":110,"icon":111},{"name":132,"icon":133},"Qdrant","i-simple-icons-qdrant",{"name":135,"icon":136},"Langfuse","i-heroicons-chart-bar",{"name":138,"icon":139},"Horizon","i-simple-icons-laravelhorizon","uk\u002Fprojects\u002Fnetpostpanel",[110,51,142,143,132,138],"RAG","External API","https:\u002F\u002Fnet-post-panel.digispace.pro","aFH5L_k5kJI95DcFyQpS2By5vB1-qCqdu32coHU9QL8",{"data":147,"body":148},{},{"type":149,"children":150},"root",[151,159,166,171,177,182,188],{"type":152,"tag":153,"props":154,"children":155},"element","p",{},[156],{"type":157,"value":158},"text","Hetzner надає виділений сервер, який я орендую для DigiPulse, VetSpace, NetPostPanel і допоміжних сервісів. Я керую програмним середовищем, а Proxmox розділяє застосунки між віртуальними машинами.",{"type":152,"tag":160,"props":161,"children":163},"h2",{"id":162},"за-що-я-відповідаю",[164],{"type":157,"value":165},"За що я відповідаю",{"type":152,"tag":153,"props":167,"children":168},{},[169],{"type":157,"value":170},"До моїх завдань належать операційна система, віртуальні машини, розгортання контейнерів, мережеві налаштування й відновлення застосунків. Оренда дає контроль над розподілом ресурсів, але обладнання залишається власністю провайдера. Апаратні несправності та заміну компонентів вирішують разом із підтримкою хостингу.",{"type":152,"tag":160,"props":172,"children":174},{"id":173},"чому-цей-варіант-підходить-моїм-проєктам",[175],{"type":157,"value":176},"Чому цей варіант підходить моїм проєктам",{"type":152,"tag":153,"props":178,"children":179},{},[180],{"type":157,"value":181},"Кілька постійно запущених сервісів можуть використовувати ресурси одного сервера. Це дає прогнозовану базову вартість і свободу вибору інструментів розгортання. Повні витрати також включають сховища, резервні копії, час на адміністрування й додаткову інфраструктуру.",{"type":152,"tag":160,"props":183,"children":185},{"id":184},"доступність-потребує-окремого-плану",[186],{"type":157,"value":187},"Доступність потребує окремого плану",{"type":152,"tag":153,"props":189,"children":190},{},[191],{"type":157,"value":192},"Кілька віртуальних машин на одному сервері залежать від того самого фізичного обладнання. Ізоляція Proxmox не забезпечує відмовостійкості цього вузла. Якщо вимоги до доступності зростають, потрібно окремо продумати резервування та час відновлення, а не лише створити ще одну віртуальну машину."]