[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"technology-uk-redis":3,"technology-projects-uk-redis":29,"mdc--cehxjn-key":106},{"id":4,"title":5,"category":6,"content":7,"description":8,"extension":9,"faq":10,"icon":11,"links":12,"meta":21,"projects":22,"since":25,"stem":26,"updated":27,"__hash__":28},"technologies_uk\u002Fuk\u002Ftechnologies\u002Fredis.yml","Redis","database","Redis — сховище даних у пам'яті, яке я використовую для кешування та фонової обробки. У Laravel-проєктах воно допомагає виконувати роботу, на завершення якої користувач не повинен чекати в межах HTTP-запиту.\n\n## Приклади з моїх проєктів\n\nNetPostPanel використовує Laravel Horizon для черг генерування контенту. У DigiPulse Redis бере участь у подієвій архітектурі моніторингу. Такі завдання потребують іншого підходу до збереження, ніж звичайний кеш сторінки: втрачена робота може вплинути на продукт, навіть якщо кеш легко відновити.\n\n## Кешування та координація\n\nRedis може зберігати результати обчислень, лічильники запитів і тимчасові блокування. Ключі й час життя кешу мають відповідати даним. Блокування допомагають узгодити роботу обробників, проте повторні спроби все одно потрібно проєктувати так, щоб вони не дублювали бізнес-дії.\n\n## Збереження даних черги\n\nRedis підтримує знімки RDB і журнал AOF із різними умовами відновлення. Перезапуск не обов'язково стирає дані, а вважати всі ключі одноразовими небезпечно для черг. Збереження, витіснення ключів і повторні спроби завдань потрібно налаштовувати разом. Натомість Redis Pub\u002FSub не зберігає повідомлення для від'єднаних підписників.\n","Redis у Laravel-застосунках: фонові черги, кешування й координація завдань на прикладі DigiPulse та NetPostPanel.","yml",null,"i-simple-icons-redis",[13,18],{"label":14,"to":15,"color":16,"icon":17},"redis.io","https:\u002F\u002Fredis.io","neutral","i-heroicons-arrow-top-right-on-square",{"label":19,"to":20,"color":16,"icon":17},"Технічна документація","https:\u002F\u002Fredis.io\u002Fdocs\u002Flatest\u002Foperate\u002Foss_and_stack\u002Fmanagement\u002Fpersistence\u002F",{},[23,24],"digipulse","netpostpanel","2019","uk\u002Ftechnologies\u002Fredis","2026-09-20","Z6fNg-9HP4fAezpUPxsobhoS9id9fjd5DAJ8EJ95X3o",[30,74],{"id":31,"title":32,"content":33,"date":34,"description":35,"extension":9,"featured":36,"image":37,"links":38,"meta":47,"stack":48,"stem":68,"tags":69,"url":41,"__hash__":73},"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",[39,43],{"label":40,"to":41,"color":42,"icon":17},"Live Demo","https:\u002F\u002Fdigipulse.cloud","primary",{"label":44,"to":45,"color":16,"icon":46},"GitHub","https:\u002F\u002Fgithub.com\u002FYurij2015\u002Fdigipulse-backend","i-simple-icons-github",{},[49,52,55,58,61,62,65],{"name":50,"icon":51},"Laravel","i-simple-icons-laravel",{"name":53,"icon":54},"Filament","i-simple-icons-filament",{"name":56,"icon":57},"Go","i-simple-icons-go",{"name":59,"icon":60},"PostgreSQL","i-simple-icons-postgresql",{"name":5,"icon":11},{"name":63,"icon":64},"Vue","i-simple-icons-vuedotjs",{"name":66,"icon":67},"MCP","i-heroicons-cpu-chip","uk\u002Fprojects\u002Fdigipulse",[70,50,56,71,66,5,72],"SaaS","Monitoring","Event-driven","jNmJS9kMabUQ04ggukPIRPMSLui7xNAbE9Nsuuw99ag",{"id":75,"title":76,"content":77,"date":78,"description":79,"extension":9,"featured":36,"image":80,"links":81,"meta":85,"stack":86,"stem":100,"tags":101,"url":104,"__hash__":105},"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",[82],{"label":83,"to":84,"color":16,"icon":46},"Огляд проєкту","https:\u002F\u002Fgithub.com\u002FYurij2015\u002Fnet-post-panel-overview",{},[87,88,91,94,97],{"name":50,"icon":51},{"name":89,"icon":90},"AI","i-heroicons-sparkles",{"name":92,"icon":93},"Qdrant","i-simple-icons-qdrant",{"name":95,"icon":96},"Langfuse","i-heroicons-chart-bar",{"name":98,"icon":99},"Horizon","i-simple-icons-laravelhorizon","uk\u002Fprojects\u002Fnetpostpanel",[89,50,102,103,92,98],"RAG","External API","https:\u002F\u002Fnet-post-panel.digispace.pro","aFH5L_k5kJI95DcFyQpS2By5vB1-qCqdu32coHU9QL8",{"data":107,"body":108},{},{"type":109,"children":110},"root",[111,119,126,131,137,142,148],{"type":112,"tag":113,"props":114,"children":115},"element","p",{},[116],{"type":117,"value":118},"text","Redis — сховище даних у пам'яті, яке я використовую для кешування та фонової обробки. У Laravel-проєктах воно допомагає виконувати роботу, на завершення якої користувач не повинен чекати в межах HTTP-запиту.",{"type":112,"tag":120,"props":121,"children":123},"h2",{"id":122},"приклади-з-моїх-проєктів",[124],{"type":117,"value":125},"Приклади з моїх проєктів",{"type":112,"tag":113,"props":127,"children":128},{},[129],{"type":117,"value":130},"NetPostPanel використовує Laravel Horizon для черг генерування контенту. У DigiPulse Redis бере участь у подієвій архітектурі моніторингу. Такі завдання потребують іншого підходу до збереження, ніж звичайний кеш сторінки: втрачена робота може вплинути на продукт, навіть якщо кеш легко відновити.",{"type":112,"tag":120,"props":132,"children":134},{"id":133},"кешування-та-координація",[135],{"type":117,"value":136},"Кешування та координація",{"type":112,"tag":113,"props":138,"children":139},{},[140],{"type":117,"value":141},"Redis може зберігати результати обчислень, лічильники запитів і тимчасові блокування. Ключі й час життя кешу мають відповідати даним. Блокування допомагають узгодити роботу обробників, проте повторні спроби все одно потрібно проєктувати так, щоб вони не дублювали бізнес-дії.",{"type":112,"tag":120,"props":143,"children":145},{"id":144},"збереження-даних-черги",[146],{"type":117,"value":147},"Збереження даних черги",{"type":112,"tag":113,"props":149,"children":150},{},[151],{"type":117,"value":152},"Redis підтримує знімки RDB і журнал AOF із різними умовами відновлення. Перезапуск не обов'язково стирає дані, а вважати всі ключі одноразовими небезпечно для черг. Збереження, витіснення ключів і повторні спроби завдань потрібно налаштовувати разом. Натомість Redis Pub\u002FSub не зберігає повідомлення для від'єднаних підписників."]