[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"content:post:taking-over-a-project:uk":3,"content:site:uk":78,"content:products:uk":95},{"slug":4,"category":5,"tags":6,"coverImageUrl":10,"coverImageAlt":11,"readingMinutes":12,"featured":13,"publishedAt":14,"updatedAt":15,"locale":16,"title":17,"excerpt":18,"lead":19,"bodyHtml":20,"metaTitle":21,"metaDescription":22,"takeaways":23,"faq":28,"author":35,"related":41},"taking-over-a-project","process",[7,8,9],"legacy","audit","handover",null,"",8,false,"2026-06-02T09:00:00.000Z","2026-08-28T15:57:52.583Z","uk","Як приймати проєкт після іншої команди","Перші два тижні на чужому коді вирішують, буде це підтримка чи безкінечне гасіння пожеж. Порядок дій: доступи, відтворюваний запуск, аудит ризиків, стабілізація — і тільки потім нові функції.","Підхопити чужий проєкт — це не «розібратись у коді». Це відновити знання, яких ніхто не записав, і зробити систему передбачуваною раніше, ніж вас попросять додати функцію. Ось послідовність, яка працює.","\u003Ch2 id=\"access\">Крок 0: доступи, і саме всі\u003C\u002Fh2>\u003Cp>До того як відкрити редактор, зберіть повний список: репозиторій, реєстр образів, сервер, база, DNS, домен, поштовий провайдер, платіжний шлюз, аналітика, сховище файлів, CI. Кожен пункт має бути на \u003Cem>ваш\u003C\u002Fem> обліковий запис або на акаунт замовника, а не на особисту пошту людини, яка пішла.\u003C\u002Fp>\u003Cp>Це найнудніший крок і найчастіша причина зупинки через місяць: домен продовжується з картки колишнього підрядника, і в день закінчення сайт зникає.\u003C\u002Fp>\u003Ch2 id=\"run\">Крок 1: запустити локально, з нуля, за інструкцією\u003C\u002Fh2>\u003Cp>Мета — не «запрацювало на моїй машині», а відтворюваний запуск: свіжа копія репозиторію, описані змінні середовища, одна команда. Усе, що ви робили руками, щоб воно піднялось, — це те, чого немає в документації. Запишіть це одразу, поки пам’ятаєте.\u003C\u002Fp>\u003Cp>Якщо локально підняти неможливо, це перший ризик у звіті. Проєкт, який існує лише на проді, не можна ані змінити безпечно, ані відновити після збою.\u003C\u002Fp>\u003Ch2 id=\"audit\">Крок 2: аудит, який читає замовник\u003C\u002Fh2>\u003Cp>Технічний аудит для замовника — це не список зауважень до коду. Це список ризиків із наслідками й приблизною вартістю. Розділіть на три групи:\u003C\u002Fp>\u003Cul>\u003Cli>\u003Cstrong>Може зупинити бізнес.\u003C\u002Fstrong> Немає бекапів. Секрети в репозиторії. Термін дії сертифіката без автопродовження. Залежність, яка більше не оновлюється.\u003C\u002Fli>\u003Cli>\u003Cstrong>Сповільнює будь-яку зміну.\u003C\u002Fstrong> Немає тестів. Немає локального запуску. Логіка продубльована в трьох місцях. Міграцій немає, схему правили руками.\u003C\u002Fli>\u003Cli>\u003Cstrong>Косметика.\u003C\u002Fstrong> Стиль коду, назви, структура папок.\u003C\u002Fli>\u003C\u002Ful>\u003Cp>Третю групу не чіпайте перші місяці. Рефакторинг заради краси на незнайомому коді — це найшвидший спосіб зламати те, чого ви ще не розумієте.\u003C\u002Fp>\u003Cblockquote>\u003Cp>Перше завдання нової команди — не покращити код, а зробити систему передбачуваною. Красивою вона стане потім.\u003C\u002Fp>\u003C\u002Fblockquote>\u003Ch2 id=\"stabilise\">Крок 3: стабілізація\u003C\u002Fh2>\u003Cp>Порядок тут майже завжди однаковий:\u003C\u002Fp>\u003Col>\u003Cli>\u003Cstrong>Бекапи\u003C\u002Fstrong> з розкладом і \u003Cem>перевіркою відновлення\u003C\u002Fem>. Відновіть базу в тестове середовище й переконайтесь, що дані на місці.\u003C\u002Fli>\u003Cli>\u003Cstrong>Моніторинг і сповіщення.\u003C\u002Fstrong> Поки ви не бачите падінь, ви дізнаєтесь про них від замовника — це найдорожчий канал.\u003C\u002Fli>\u003Cli>\u003Cstrong>Секрети з коду в середовище.\u003C\u002Fstrong> Заодно ротуйте: усе, що лежало в репозиторії, вважайте скомпрометованим.\u003C\u002Fli>\u003Cli>\u003Cstrong>CI із лінтом, типами й збіркою.\u003C\u002Fstrong> Навіть без тестів це ловить половину випадкових поломок.\u003C\u002Fli>\u003Cli>\u003Cstrong>Тести на найважливіший сценарій.\u003C\u002Fstrong> Один e2e на оплату або на заявку вартий сотні юніт-тестів на утиліти.\u003C\u002Fli>\u003C\u002Fol>\u003Ch2 id=\"features\">Крок 4: перша функція\u003C\u002Fh2>\u003Cp>Беріть маленьку, але наскрізну: від форми до бази й назад. Вона покаже реальний стан усіх шарів краще, ніж тиждень читання коду. І дасть замовнику видимий результат, поки ви робите невидиму роботу зі стабілізації.\u003C\u002Fp>\u003Ch2 id=\"talk\">Як говорити із замовником\u003C\u002Fh2>\u003Cp>Дві помилки, обидві дорогі. Перша — сказати «тут усе погано, треба переписати». Це майже завжди неправда й завжди звучить як спроба продати більший чек. Друга — мовчки гасити пожежі, показуючи нуль прогресу за перший місяць.\u003C\u002Fp>\u003Cp>Робочий варіант: звіт із трьома групами ризиків, оцінка кожного пункту й запропонований порядок. Замовник ухвалює рішення, а не отримує вирок. І кожні два тижні — коротке «зробили це, залишилось те».\u003C\u002Fp>","Як прийняти проєкт після іншої команди — порядок дій","Аудит і підхват чужого коду: збір доступів, відтворюваний локальний запуск, звіт про ризики для замовника, стабілізація й перша наскрізна функція.",[24,25,26,27],"Доступи збирають до того, як відкривають редактор","Відтворюваний локальний запуск важливіший за читання коду","Аудит — це ризики з наслідками й ціною, а не зауваження до стилю","Косметичний рефакторинг на незнайомому коді відкладають на місяці",[29,32],{"q":30,"a":31},"Скільки часу займає аудит?","Для середнього проєкту — від трьох днів до двох тижнів, залежно від того, чи вдається підняти його локально. Головний множник — не обсяг коду, а кількість недокументованих ручних кроків.",{"q":33,"a":34},"Коли переписування виправдане?","Коли вартість однієї зміни перевищує вартість написання заново, і це видно на кількох задачах поспіль. До того це припущення, а не висновок.",{"slug":36,"name":37,"role":38,"avatarUrl":39,"photoUrl":40},"yevhenii-kirianov","Євгеній","Фронтенд і фулстек, інтерфейси, продуктова розробка","\u002Fmedia\u002Fteam\u002Fyevhenii-avatar.webp","\u002Fmedia\u002Fteam\u002Fyevhenii.webp",[42,53,64],{"slug":43,"category":5,"tags":44,"coverImageUrl":10,"coverImageAlt":11,"readingMinutes":48,"featured":13,"publishedAt":49,"updatedAt":50,"locale":16,"title":51,"excerpt":52},"no-project-without-prototype",[45,46,47],"prototype","discovery","design",5,"2026-05-18T09:00:00.000Z","2026-08-28T15:57:52.681Z","Чому ми не беремось за проєкт без прототипу","Прототип — це не етап дизайну, а спосіб зробити помилки дешевими. Що він ловить, скільки триває і чому «давайте одразу в дизайн» майже завжди виходить дорожче.",{"slug":54,"category":55,"tags":56,"coverImageUrl":10,"coverImageAlt":11,"readingMinutes":59,"featured":13,"publishedAt":60,"updatedAt":61,"locale":16,"title":62,"excerpt":63},"website-cost-2026","money",[57,58,5],"budget","estimation",7,"2026-07-11T09:00:00.000Z","2026-08-28T15:57:52.399Z","Скільки коштує сайт у 2026 році і чому вилка така широка","Одна й та сама фраза «нам потрібен сайт» означає роботу на тиждень і роботу на три місяці. Розбираємо, з чого складається ціна, які пункти зникають з дешевих пропозицій і що спитати перед підписанням.",{"slug":65,"category":66,"tags":67,"coverImageUrl":10,"coverImageAlt":11,"readingMinutes":72,"featured":73,"publishedAt":74,"updatedAt":75,"locale":16,"title":76,"excerpt":77},"zero-downtime-deploy","devops",[68,69,70,71],"deploy","docker","postgres","ci-cd",9,true,"2026-07-28T09:00:00.000Z","2026-08-28T15:57:52.378Z","Деплой без простою на одному сервері: що насправді потрібно","Zero-downtime не починається з Kubernetes. Він починається з міграцій, які сумісні зі старим кодом, і з health-check, який каже правду. Розбираємо порядок кроків на звичайному VPS з docker compose.",{"email":79,"salesEmail":79,"supportEmail":80,"phone":10,"telegram":81,"telegramUrl":82,"whatsappUrl":10,"githubUrl":83,"linkedinUrl":84,"locale":16,"footerAbout":85,"contactPromise":86,"whereBody":87,"officeCity":88,"workHours":89,"budgetRanges":90},"sales@jvdsoft.com","support@jvdsoft.com","@jvdsoft_support","https:\u002F\u002Ft.me\u002Fjvdsoft_support","https:\u002F\u002Fgithub.com\u002FEvgeniyKiryanow","https:\u002F\u002Fwww.linkedin.com\u002Fin\u002Fyevhenii-kirianov-54b8081ba\u002F","Веб-розробка повного циклу. Київ — працюємо з клієнтами з України, ЄС і США. Власні продукти Qrenza і ShiftPlan тримаємо в продакшені самі.","Пишіть, як вам зручно — відповідаємо протягом робочого дня. По продажах sales, по підтримці продуктів support.","Київ, Україна. Працюємо віддалено з клієнтами з України, ЄС і США. Документи — договір і NDA, оплата на ФОП або юридичну особу.","Київ, Україна","Пн–Пт, 10:00–19:00 (Київ)",[91,92,93,94],"до [сума]","[сума] — [сума]","більше [сума]","ще не знаю",[96,225],{"slug":97,"status":98,"order":99,"siteUrl":100,"logoUrl":101,"heroImageUrl":102,"accentColor":103,"stack":104,"launchedYear":111,"locale":16,"name":112,"tagline":113,"summary":114,"positioning":115,"metaTitle":116,"metaDescription":117,"audience":118,"features":127,"steps":158,"plans":168,"faq":185,"gallery":207},"qrenza","live",0,"https:\u002F\u002Fqrenza.jvdsoft.com","\u002Fmedia\u002Fproducts\u002Fqrenza\u002Flogo.svg","\u002Fmedia\u002Fproducts\u002Fqrenza\u002Fhero.webp","#6366f1",[105,106,107,108,109,110],"Laravel","React","TypeScript","PostgreSQL","Tailwind CSS","Vite",2026,"Qrenza","Цифрова платформа каталогу з QR-меню та замовленнями в реальному часі","Каталог, замовлення й аналітика для будь-якого бізнесу з товарами чи послугами. Клієнт сканує QR-код і бачить меню — без застосунку, без паперу, без очікування.","Qrenza забирає паперове меню й таблиці: категорії, товари, ціни та фото ви ведете в одному місці, а клієнт відкриває каталог із QR-коду на столику, прилавку чи у вітрині. Замовлення з телефона клієнта падає прямо на дашборд, статус проходить три кроки, карта столів показує, де зараз працюють. Підходить ресторанам, кафе, барам, пекарням, магазинам, салонам і студіям — усім, у кого є перелік того, що вони продають.","Qrenza — QR-меню й цифровий каталог для бізнесу","Qrenza — платформа цифрового каталогу: QR-меню, замовлення в реальному часі, карта столів, аналітика, ролі команди та 6 мов. Продукт JVD Soft у продакшені.",[119,120,121,122,123,124,125,126],"Ресторани","Кафе та кав’ярні","Бари та нічні клуби","Пекарні та кондитерські","Магазини та крамниці","Краса та велнес","Салони та студії","Ринки та кіоски",[128,131,134,137,140,143,146,149,152,155],{"title":129,"body":130},"Розумний каталог","Категорії й позиції з фото, цінами, описами та контролем доступності — для меню, каталогу товарів або переліку послуг.",{"title":132,"body":133},"Замовлення в реальному часі","Клієнт замовляє з QR-меню, замовлення з’являється на дашборді миттєво. Три кроки статусу: нове → готується → готово.",{"title":135,"body":136},"Управління столами","Карта столів показує, де є активні замовлення. Замовлення можна переносити між столами і стежити за кожним місцем окремо.",{"title":138,"body":139},"Живий дашборд","Статистика по активних каталогах і щоденних операціях у реальному часі — з будь-якого пристрою.",{"title":141,"body":142},"Аналітика та звіти","Динаміка виручки, топ-товари, рівень скасувань і повна історія замовлень в одному дашборді.",{"title":144,"body":145},"Ролі команди","Власники, адміністратори та персонал з різним рівнем доступу. Уся команда керується з одного місця.",{"title":147,"body":148},"Багатомовність","Шість мов інтерфейсу. Каталог відкривається мовою клієнта — для двомовних і туристичних закладів.",{"title":150,"body":151},"Свій бренд і домен","Логотип, фавікон, кольори, стиль навігації, власний домен, мета-теги та Google Analytics — без плагінів.",{"title":153,"body":154},"Програма лояльності","Вбудовані бали нараховуються автоматично за кожне замовлення — щоб клієнт повертався.",{"title":156,"body":157},"Вбудовування будь-де","Повний каталог вставляється на будь-який сайт як iframe одним рядком коду.",[159,162,165],{"title":160,"body":161},"Створіть акаунт","Реєстрація за секунди, без картки. 14-денний пробний період починається одразу, з повним доступом до всіх функцій.",{"title":163,"body":164},"Побудуйте каталог","Додайте категорії та позиції — товари, страви, послуги. Фото, ціни, описи; порядок змінюється перетягуванням.",{"title":166,"body":167},"Поділіться QR-кодом","Роздрукуйте унікальний QR-код і поставте де завгодно — на столик, прилавок або вітрину. Клієнт сканує й бачить каталог одразу.",[169,176,180],{"name":170,"price":171,"note":172,"features":173,"popular":13},"[Старт]","[сума]","\u002F міс",[174,175,175],"[Обмеження плану]","[Що входить]",{"name":177,"price":171,"note":172,"features":178,"popular":73},"[Робочий]",[179,175,175],"[Усе зі «Старту», плюс]",{"name":181,"price":171,"note":172,"features":182,"popular":13},"[Команда]",[183,175,184],"[Усе з «Робочого», плюс]","Пріоритетна підтримка",[186,189,192,195,198,201,204],{"q":187,"a":188},"Чи є безкоштовний пробний період?","Так — 14 днів із повним доступом до всіх функцій, без кредитної картки. Пробний період починається одразу після реєстрації.",{"q":190,"a":191},"Чи можна оновлювати каталог у реальному часі?","Так. Зміна ціни, опису чи доступності позиції видна клієнтам одразу — QR-код перепечатувати не потрібно, він завжди веде на актуальний каталог.",{"q":193,"a":194},"Чи потрібно клієнтам завантажувати додаток?","Ні. Каталог відкривається у браузері телефона після сканування QR-коду. Інтерфейс зроблений mobile-first, тому працює на будь-якому пристрої.",{"q":196,"a":197},"Чи можна використовувати власний домен?","Так. Можна підключити свій домен і поставити логотип, фавікон та кольори бренду — каталог виглядатиме як частина вашого сайту.",{"q":199,"a":200},"Для яких бізнесів підходить Qrenza?","Для будь-якого, у кого є перелік товарів або послуг: ресторани, кафе, бари, пекарні, магазини, салони краси, студії, ринки й кіоски.",{"q":202,"a":203},"Чи можна відстежувати замовлення клієнтів?","Так. Кожне замовлення проходить три кроки статусу на дашборді, а карта столів показує, де воно зараз. Уся історія залишається в системі.",{"q":205,"a":206},"Де зберігаються дані?","У нашій інфраструктурі: вхід через email\u002Fпароль або Google OAuth, токен-сесії з підтвердженням email, доступи розділені за ролями.",[208,213,217,221],{"src":209,"alt":210,"width":211,"height":212},"\u002Fmedia\u002Fproducts\u002Fqrenza\u002Forders.webp","Дашборд Qrenza із замовленнями в реальному часі та картою столів",1280,588,{"src":214,"alt":215,"width":211,"height":216},"\u002Fmedia\u002Fproducts\u002Fqrenza\u002Fmenu.webp","QR-меню Qrenza на телефоні клієнта",572,{"src":218,"alt":219,"width":211,"height":220},"\u002Fmedia\u002Fproducts\u002Fqrenza\u002Fsettings.webp","Налаштування закладу в Qrenza: бренд, тема, навігація, SEO",879,{"src":222,"alt":223,"width":211,"height":224},"\u002Fmedia\u002Fproducts\u002Fqrenza\u002Ffeatures.webp","Перелік можливостей платформи Qrenza",1020,{"slug":226,"status":98,"order":227,"siteUrl":228,"logoUrl":229,"heroImageUrl":230,"accentColor":231,"stack":232,"launchedYear":111,"locale":16,"name":233,"tagline":234,"summary":235,"positioning":236,"metaTitle":237,"metaDescription":238,"audience":239,"features":240,"steps":271,"plans":281,"faq":288,"gallery":304},"shiftplan",1,"https:\u002F\u002Fshifts.jvdsoft.com","\u002Fmedia\u002Fproducts\u002Fshifts\u002Flogo.svg","\u002Fmedia\u002Fproducts\u002Fshifts\u002Fhero.webp","#f97316",[105,106,107,108,109,110],"ShiftPlan","Графік змін для команд — без таблиць і без «хто сьогодні працює?»","Створюйте, призначайте й публікуйте графік змін за хвилини. Команда отримує сповіщення автоматично, накладки система знаходить сама.","ShiftPlan замінює таблицю в Excel і чат із питаннями «хто сьогодні на зміні». Графік будується на календарі з видами місяць\u002Fтиждень\u002Fдень, зміни можна повторювати за розписом і розфарбовувати кольорами, на одну зміну призначається кілька людей. Щойно графік опубліковано, кожен бачить свої зміни й отримує push-сповіщення про будь-яку зміну; накладки й подвійні бронювання система блокує одразу. Для менеджера — статистика змін і навантаження команди.","ShiftPlan — графік змін і планування роботи команди","ShiftPlan — планування змін для команд: календар, повторювані зміни, кольори, кілька виконавців, сповіщення, аналітика навантаження. Продукт JVD Soft.",[],[241,244,247,250,253,256,259,262,265,268],{"title":242,"body":243},"Візуальний графік","Зміни будуються на чистій календарній дошці з видами місяць, тиждень і день.",{"title":245,"body":246},"Повторювані зміни","Зміна, що повторюється щодня, щотижня, щомісяця або за власним розписом — одним кліком.",{"title":248,"body":249},"Кольори без обмежень","Кольорове кодування змін: необмежені власні кольори або готова палітра.",{"title":251,"body":252},"Керування командою","Кілька виконавців на одну зміну, роботa з ролями й облік того, хто коли працює.",{"title":254,"body":255},"Аналітика й навантаження","Статистика змін, графіки співробітників і розуміння навантаження команди.",{"title":257,"body":258},"Розумні сповіщення","Миттєві push-сповіщення про будь-яку зміну графіка — ніхто не пропустить свою зміну.",{"title":260,"body":261},"Контроль накладок","Система сама знаходить накладки й подвійні бронювання і не дає їх зберегти.",{"title":263,"body":264},"Mobile-first","Адаптивний інтерфейс однаково працює на телефоні, планшеті й десктопі.",{"title":266,"body":267},"Шифрування","Дані шифруються під час передавання і у сховищі — графіки залишаються вашими.",{"title":269,"body":270},"Відповідність і бекапи","GDPR, CCPA і SOC 2, щоденні автоматичні резервні копії з можливістю відновлення.",[272,275,278],{"title":273,"body":274},"Створіть зміни","Побудуйте графік на календарі: додайте зміни, задайте час, призначте людей.",{"title":276,"body":277},"Призначте співробітників","На одну зміну призначається один або кілька людей, кольорове кодування показує все з першого погляду.",{"title":279,"body":280},"Сповістіть команду","Команда одразу отримує сповіщення про свій графік — усі в курсі, завжди.",[282,284,286],{"name":170,"price":171,"note":172,"features":283,"popular":13},[174,175,175],{"name":177,"price":171,"note":172,"features":285,"popular":73},[179,175,175],{"name":181,"price":171,"note":172,"features":287,"popular":13},[183,175,184],[289,292,295,298,301],{"q":290,"a":291},"Скільки коштує почати?","Почати можна безкоштовно й перейти на платний план пізніше — реєстрація не вимагає оплати.",{"q":293,"a":294},"Що буде, якщо дві зміни накладуться?","Система сама знаходить накладки й подвійні бронювання і повідомляє про них одразу, ще до публікації графіка.",{"q":296,"a":297},"Як команда дізнається про зміни в графіку?","Кожен співробітник отримує миттєве push-сповіщення. Оновлення приходять у реальному часі, тому переписка «а хто сьогодні?» зникає.",{"q":299,"a":300},"Чи можна працювати з телефона?","Так. Інтерфейс адаптивний і зроблений mobile-first — на телефоні, планшеті й десктопі однаково.",{"q":302,"a":303},"Наскільки захищені дані графіка?","Дані шифруються під час передавання і у сховищі, сервіс відповідає GDPR, CCPA і SOC 2, резервні копії створюються щодня.",[305,309,313,317],{"src":306,"alt":307,"width":211,"height":308},"\u002Fmedia\u002Fproducts\u002Fshifts\u002Ffeatures.webp","Можливості ShiftPlan: календар, повторювані зміни, кольори, команда",696,{"src":310,"alt":311,"width":211,"height":312},"\u002Fmedia\u002Fproducts\u002Fshifts\u002Fhow.webp","Три кроки роботи в ShiftPlan",476,{"src":314,"alt":315,"width":211,"height":316},"\u002Fmedia\u002Fproducts\u002Fshifts\u002Fwhy.webp","Чому команди обирають ShiftPlan",580,{"src":318,"alt":319,"width":211,"height":320},"\u002Fmedia\u002Fproducts\u002Fshifts\u002Fsecurity.webp","Безпека ShiftPlan: шифрування, відповідність, резервні копії",508]