Розробка онлайн-графічного редактора під ключ (аналог Canva)

Замовники йдуть, якщо редактор гальмує на складному макеті або втрачає правки під піковим навантаженням. Ми розробляємо онлайн-графічний редактор під ключ: збираємо графічне ядро, редакторські сценарії та підтримку так, щоб робота з полотном залишалася передбачуваною зі зростанням кількості користувачів. Обговоримо завдання — повернемося з оцінкою та планом.

Розробка та обслуговування будь-яких видів сайтів:

Інформаційні сайти або веб-програми
Сайти візитки, landing page, корпоративні сайти, онлайн каталоги, квіз, промо-сайти, блоги, ресурси новин, інформаційні портали, форуми, агрегатори
Сайти або веб-програми електронної комерції
Інтернет-магазини, B2B-портали, маркетплейси, онлайн-обмінники, кешбек-сайти, біржі, дропшиппінг-платформи, парсери товарів
Веб-програми для управління бізнес-процесами
CRM-системи, ERP-системи, корпоративні портали, системи управління виробництвом, парсери інформації
Сайти або веб-програми електронних послуг
Дошки оголошень, онлайн-школи, онлайн-кінотеатри, конструктори сайтів, портали надання електронних послуг, відеохостинги, тематичні портали

Це лише деякі з технічних типів сайтів, з якими ми працюємо, і кожен із них може мати свої специфічні особливості та функціональність, а також бути адаптованим під конкретні потреби та цілі клієнта.

Послуги, які ми пропонуємо
Показано 1 з 1Усі 2062 послуг
Розробка онлайн-графічного редактора під ключ (аналог Canva)
Складний
від 2 тижнів до 3 місяців
Часті запитання

Розробка онлайн-редактора: де ламається продуктивність

Редактор спокійно витримує сотню об'єктів, але варто додати растрові вставки, ефекти та маски — і відгук на перетягування виходить за пів секунди.

Справа не в каналі зв'язку і не в потужності сервера: під час кожного зсуву документ перезбирається повністю — перемальовування всіх шарів, повторний розрахунок ефектів, оновлення мініатюр панелі. Вузьке місце графічного редактора — не сама операція, а обсяг роботи, який вона за собою тягне.

Межі навантаження проявляються і в спільній роботі над макетом. П'ять-десять людей з незалежними історіями скасувань дають розбіжні стани: в одного зміщено маску шару, у другого зник ефект.

Поки правки не зведено до єдиного порядку, редактор показує кожному свою версію документа, і розбіжність виявляється вже під час вивантаження — коли макет пішов замовнику.

Третій клас відмов — втрата правок під час збереження макета. Повний перезапис документа обривається на середині, і на сервері залишається напівстан, який не відкривається ні в автора, ні в колег.

Незавершені сесії губляться ще й тому, що історія змін живе в пам'яті вкладки, а на боці зберігання лежить лише остання збережена версія.

За всіма трьома збоями стоїть одна архітектурна причина: документ обробляється повністю, а не частинами, і не має надійної точки відновлення. Розбираємо, як це закривається — на рівні моделі документа, зберігання версій і синхронізації учасників.

Що змінюється після переробки ядра редактора

Після переробки ядра редактор перестає «замислюватися» на великих макетах, а робота користувача переживає обрив зв'язку. Ефект ми вимірювали до і після за чотирма величинами: час відгуку інтерфейсу, частка успішних збережень, час відновлення після збою і клас відмов, які зникли.

Швидкість відгуку інтерфейсу на великих макетах

Раніше кожна дія перемальовувала все полотно: правка в макеті на сотні шарів давала помітну паузу, перетягування «наздоганяло» курсор, панель шарів підвисала.

Ядро перевели на інкрементальний рендеринг — оновлюється лише змінена область, важкі операції пішли у фоновий потік, список шарів віртуалізовано. Відгук скоротився із секунд до часток секунди і майже не залежить від кількості шарів: макет у рази важчий поводиться так само.

Збереженість роботи користувача під час обриву зв'язку

Раніше правки жили в пам'яті вкладки: обрив мережі або збій під час збереження означали втрату частини макета. Тепер кожна операція спочатку фіксується в локальному сховищі браузера, а потім іде на сервер із повторними спробами та захистом від дублювання.

Відновлення після збою займає секунди — користувач повертається рівно в той стан, у якому його застав обрив.

Спільна робота над макетом

Правки зливаються за об'єктами: зміна одного блоку не блокує макет повністю, текст зводиться посимвольно, конфлікт вирішується детерміновано, курсори колег видно в реальному часі.

Частка успішних збережень тримається вище 99 %, а клас відмов «правки втрачено під час обриву» зник повністю.

Способи організації графічного ядра: порівняння підходів

Ключова розвилка — де живе сцена і де рахуються пікселі: на сервері чи в браузері користувача. Від цього залежать і режими роботи редактора, і те, як поводитиметься спільна робота при зростанні кількості учасників.

Серверний і клієнтський шляхи рендерингу

Серверний рендеринг макетів передбачуваний: той самий файл дає однаковий результат незалежно від пристрою та набору шрифтів у системі. Клієнтський рендеринг у браузері дає миттєвий відгук на перетягування та зум, тому що кадр рахується локально, без звернення до сервера. Так влаштовані редактори рівня Canva, де полотно та історія правок живуть у користувача.

Варіант Коли підходить Обмеження
Серверний рендеринг макетів Пакетні задачі: прев'ю, друковані шаблони, звітні документи, макети фіксованого формату Правка запізнюється: кожен крок — запит і черга. При насиченні сцени об'єктами час відгуку зростає лінійно
Клієнтський рендеринг у браузері Інтерактивне полотно, де важливі зум і перетягування без затримки; великі багатошарові макети Обмежена пам'ять вкладки: важкі сцени дробимо на шари й підвантажуємо частинами. Поведінка залежить від браузера
Гібрид: сцена в браузері, важкі операції на сервері Основний сценарій продукту: правки в користувача, експорт і друк на боці сервісу Потрібна синхронізація сцени та стабільний формат обміну, інакше версії розходяться при конфлікті правок

Як вибрати режим під профіль навантаження

Рахуємо профіль: скільки об'єктів у типовому макеті, скільки учасників правлять його одночасно, яка частка сесій закінчується експортом.

Якщо полотно невелике і важливіша точність друку — ведемо сцену на сервері; якщо макет зростає до тисяч шарів і його правлять у реальному часі — рахуємо в браузері, а експорт виносимо на сервер.

Формат зберігання при цьому один: векторне дерево шарів плюс зображення окремими об'єктами, без вбудовування у файл сцени. Так макет залишається компактним, а спільні правки зводяться швидко.

Вибір архітектури редактора ми фіксуємо до старту розробки — на прототипі з реальними макетами замовника, де видно граничне навантаження.

Етапи впровадження: від аудиту поточного коду до передачі

Етапи розробки онлайн-редактора йдуть від обстеження до передачі: на кожному кроці фіксуємо результат, який можна перевірити, а не абстрактну «готовність». Порядок робіт підбираємо під стан поточного коду — переписувати все одразу майже ніколи не потрібно.

Що відбувається на етапі обстеження

Аудит наявного редактора починаємо з моделі документа: шари, історія змін, права на файли, формати експорту та імпорту. Окремо дивимося, де зростає час відгуку — перемальовування полотна, завантаження зображень і шрифтів, синхронізація учасників. Результат етапу — карта вузьких місць і черговість робіт з оцінкою трудомісткості.

  1. Обстеження. Код, дані, заміри часу відгуку на реальних сценаріях.
  2. Схема даних і прав. Формат документа, версіонування, ролі, спільні папки.
  3. Ядро редактора. Полотно, шари, інструменти, експорт із збереженням сумісності форматів.
  4. Спільна робота. Історія правок, автозбереження, відкат до попередньої версії.
  5. Навантажувальна перевірка редактора. Пікова одночасна робота та пакетний експорт великих макетів.
  6. Приймання та передача. Перевірка за списком сценаріїв, код, схеми, документація.

Як проходить приймання результату

Приймання редактора проходить на стенді, що повторює робочу конфігурацію: створення макета, співавторство, експорт, відновлення після обриву зв'язку. Дивимося не лише «працює», а й як поводиться система під навантаженням і після відкату.

Разом із кодом передаємо схему даних, опис прав і порядок розгортання — щоб команда могла розвивати редактор далі без нас.

Схеми, політики доступу та регламенти випуску версій

Редактор передаємо не «чорною скринькою»: разом із документацією на редактор, за якою новий інженер піднімає середовище та розбирається в моделі даних. Нижче — перелік артефактів, які залишаються в команди замовника після запуску.

Схеми зберігання та спільної роботи над макетом

  • Схема зберігання макетів: структура проєкту та шарів, версії об'єктів, зв'язки з асетами, правила каскадного видалення.
  • Матриця прав: ролі від власника до переглядача і те, що кожна може робити з макетом, шаблоном і брендбуком.
  • Політики доступу редактора: видача та відкликання доступів, гостьові посилання, термін їхнього життя, журнал дій користувачів.
  • Описи інтерфейсів: контракти між клієнтською частиною, сервісом рендерингу та сховищем при зміні формату.

Регламенти випуску версій і відкату

  • Регламент випуску версій: порядок збирання, перевірки перед викаткою, склад відповідальних за реліз.
  • Інструкція з відкату: до якої версії відкатуватися, як повернути попередню збірку й не втратити вже створені макети.
  • Регламент міграцій: як змінювати формат макета, щоб відкриті роботи не ламалися у користувачів.

Кожен артефакт перевіряємо на повноту: колега замовника за інструкцією відтворює випуск і відкат без нашої підтримки.

Кейс: як редактор перестав втрачати правки при піковому навантаженні

Редактор шаблонів зі спільною роботою: десятки шарів, текстові блоки, зображення, експорт. Перший замір показав, що вузьке місце — не інтерфейс, а синхронізація стану між учасниками та вирішення конфлікту правок у макеті. Нижче — що переробили й як це підтвердили навантажувальним тестуванням.

Що було до переробки

На макетах від двохсот шарів відгук на дію сягав 2,5 секунди: кожне переміщення блоку перезбирало стан усього документа. На піку — близько трьохсот одночасних сесій — частка втрачених правок сягала 7%, а збої сесій траплялися в 4–6% підключень на годину.

Конфлікт вирішувався за принципом «перемагає останнє збереження»: двоє рухали один блок — версія одного мовчки зникала.

Що змінилося після

Стан перевели на операції за шарами: правка застосовується атомарно до конкретного об'єкта, а не до документа повністю. При одночасній зміні одного блоку обидві версії зберігаються й показуються автору як варіанти — клас «тихої» втрати правок зник.

Орієнтиром за плавністю був рівень, заданий Canva, але втримати його потрібно було на важких макетах.

Метрики після: відгук на макеті від двохсот шарів — 250–300 мс замість 2,5 с, втрачених правок — нуль, збої сесій на піку — десяті частки відсотка. Групування операцій у пачки знизило кількість звернень до сервера в пікові хвилини приблизно в шість разів.

Що робити, якщо редактор уже запущено і він потребує розвитку?

Живий редактор — не завершений проєкт, а потік змін: сцени, шари, історія дій, експорт.

Доопрацювання готового редактора починається не з коду, а зі зняття замірів: де відвалюється рендеринг при великій кількості об'єктів, на яких операціях зростає час відповіді, які помилки користувачі обходять вручну. Без цих цифр перебудова перетворюється на спір про смаки.

Технічний борг редактора лежить у передбачуваних місцях: модель документа розмазана по шарах інтерфейсу, стан полотна дублюється, експорт і збереження реалізовані окремо й розходяться в поведінці. Поки це не розділено, кожна нова можливість тягне правки в п'яти місцях і ламає сусідні сценарії.

Далі — пріоритизація вузьких місць за частотою звернень і ціною відмови, а не за гучністю прохань. Зазвичай першими виносять рендеринг і історію змін, потім розв'язують зберігання й експорт: прискорення отримують усі сценарії одразу, а не один.

Заміна ядра без простою йде через паралельний контур. Нова версія піднімається поруч, на неї направляють частину трафіку, результати звіряють із поточними — і лише потім перемикають решту.

Перемикання робиться флагом на боці сервісу, відкат — поверненням флагу; дані мігрують поступово, а не одним вікном.

Розвиток наявного продукту далі йде короткими релізами із загальним набором перевірок: сервіс залишається робочим на кожному кроці, а зміни доходять до користувачів частинами.

Технічні сумніви: продуктивність, безпека, строки

Інженерні сумніви зазвичай стосуються не самого редактора, а того, що відбувається при зростанні навантаження та під час передачі проєкту іншій команді. Нижче — відповіді на запитання, які найчастіше виникають на етапі оцінки.

Кілька авторів правлять один макет — що буде з конфліктами?

Правки йдуть окремими операціями над об'єктами, а не перезаписом усього документа, тому двоє авторів на сусідніх шарах не блокують одне одного.

Зміни доїжджають до решти учасників майже миттєво, конфлікт за одним об'єктом вирішується за фіксованим правилом, а кожна версія макета залишається в історії — відкат до будь-якої точки доступний.

У нас є свої шаблони — їх доведеться збирати заново?

Ні. Конвертер розбирає вихідні файли: текстові та векторні шари переносяться як редаговані об'єкти, растрові — як зображення зі збереженням пропорцій. Результат звіряється пакетним порівнянням з оригіналом, тому бібліотека переїжджає без ручного перезбирання.

Чи витримає редактор пікове навантаження?

Рендер і експорт винесено в окремі сервіси та масштабуються незалежно від інтерфейсу, а важкі операції йдуть у чергу й не гальмують роботу решти користувачів. Відзивчивість залишається рівною при зростанні кількості одночасних сесій у рази.

Як у редакторі розмежовуються права?

Ролі налаштовуються на рівні акаунта, папки та окремого макета: перегляд, коментування, правка, публікація. Перевірка прав виконується на сервері при кожному запиті, а не приховуванням кнопок в інтерфейсі, тому обійти обмеження через запит не можна.

Як випускаються оновлення, якщо редактором уже користуються?

Міграції схеми даних робимо зворотно сумісними, викатка йде поступово й супроводжується автоматичним відкатом при зростанні помилок. Активна сесія автора при цьому не рветься: незбережений макет дозаписується у фоні.

Обговоримо задачу: надішлемо оцінку та план робіт

Перша розмова триває 30–40 хвилин і проходить без презентацій: розбираємо користувацькі сценарії майбутнього редактора, хто в ньому працює, які формати на вході та виході, як зберігаються файли і як влаштовано доступ. Цього достатньо, щоб зрозуміти клас задачі, її обсяг і де розташовані основні ризики.

Від замовника потрібен мінімум: приклади того, що редактор зобов'язаний уміти, список форматів імпорту та експорту, вимоги до спільної роботи й ролей, точки інтеграції — вхід, зберігання, оплата, аналітика.

Якщо частину вимог ще не визначено, фіксуємо припущення й перевіряємо їх на першому етапі, а не закладаємо в оцінку навмання.

З оцінкою та планом етапів повертаємося за 2–3 робочі дні. До плану входить:

  • сценарії роботи: полотно, шари, інструменти, скасування дій, історія версій;
  • розділення обчислень: що виконується в браузері, що на сервері, як влаштовано експорт;
  • схема даних і зберігання: звідки надходять файли, де лежать, як віддаються користувачу;
  • перелік інтеграцій: вхід, оплата, зберігання, аналітика, зовнішні сервіси;
  • ролі та доступи: хто що бачить і править, обмеження за одночасним навантаженням;
  • етапи розробки з порядком, складом кожного та точками приймання результату;
  • оцінка трудовитрат за етапами та список ризиків із планом їх зняття.

Опишіть задачу у вільній формі: що за редактор, для кого він і що вже є на руках. Повернемося з оцінкою, планом робіт і зрозумілим першим кроком.

Наші компетенції:

Останні роботи

  • Розробка сайту компанії B2B ADVANCE
    Розробка сайту компанії B2B ADVANCE
    1542
  • Розробка веб-додатків для компанії FEEDME
    Розробка веб-додатків для компанії FEEDME
    1394
  • Розробка веб-сайту для компанії БЕЛФІНГРУП
    Розробка веб-сайту для компанії БЕЛФІНГРУП
    1081
  • Розробка інтернет магазину для компанії FURNORO
    Розробка інтернет магазину для компанії FURNORO
    1369
  • Розробка веб-додатків для компанії Enviok
    Розробка веб-додатків для компанії Enviok
    1142
  • Розробка веб-сайту для компанії ФІКСПЕР
    Розробка веб-сайту для компанії ФІКСПЕР
    1060