[{"data":1,"prerenderedAt":227},["ShallowReactive",2],{"work-ru":3},[4,38,61,89,112,135,158,171,192,200,209],{"locale":5,"slug":6,"title":7,"description":8,"category":9,"year":10,"context":11,"stack":12,"results":25},"ru","product-image-editor","Редактор товарной инфографики в админке inSales на Vue","Полноэкранный Vue-редактор, в котором продавцы собирают инфографику для товаров из шаблонов и с помощью AI. Им пользуются больше 3 000 активных клиентов inSales, AI-операций — 800+ в день.","Браузерные редакторы","Март 2025 – сентябрь 2026","inSales",[13,14,15,16,17,18,19,20,21,22,23,24],"Vue 3","TypeScript","FabricJS","Complex UI","Composition API","E-Commerce Development","Frontend Architecture","SCSS","Web Application Development","API Integration","AI-Powered Image Editing","Front-End Development",[26,29,32,35],{"value":27,"label":28},"3 000+","активных клиентов inSales пользуются редактором (по продуктовой аналитике)",{"value":30,"label":31},"800+","AI-операций в день в редакторе, включая удаление фона и генерацию текста",{"value":33,"label":34},"2–3 мин","на одни и те же правки для 10 фото товара через массовый перенос вместо 5–10 мин вручную",{"value":36,"label":37},"2","сценария в продакшене у одного компонента: карточка товара и визуальный редактор сайта",{"locale":5,"slug":39,"title":40,"description":41,"category":9,"year":42,"context":11,"stack":43,"results":51},"visual-storefront","Редизайн визуального редактора сайта inSales","Сделал frontend нового визуального редактора, которым пользуются больше 90% магазинов inSales, и добавил технический режим для страниц, сломанных кодом виджета.","Май – август 2024",[44,14,16,24,19,45,20,46,47,22,48,21,18,49,50],"Vue.js","JavaScript","Vuetify","Mixpanel","State Management","Customer Onboarding","E-commerce Optimization",[52,55,58],{"value":53,"label":54},"90%+","магазинов inSales работают в новом редакторе",{"value":56,"label":57},"60% → 80%","новых пользователей сами изменили и сохранили настройку шаблона или виджета в первой сессии",{"value":59,"label":60},"≈17%","шире предпросмотр сайта на экране 1920 px при закрытых панелях",{"locale":5,"slug":62,"title":63,"description":64,"category":65,"year":66,"context":65,"stack":67,"results":82},"image-editor","Open-source ядро браузерного редактора изображений на TypeScript и FabricJS","Библиотека редактора изображений с публичным API, полной сериализацией состояния, шаблонами, привязками и экспортом в четыре формата. После переделки хранения картинок изображения стали загружаться больше чем в 2 раза быстрее.","Open source","Март 2025 – сейчас",[14,15,68,45,69,70,71,72,73,74,75,48,24,76,77,78,19,79,80,81],"HTML Canvas","Vite","Technical Documentation","Playwright","Problem Solving","E2E","Web Workers","Web Performance","AI-Assisted Software Development","Jest","npm","End-to-end Testing","CI\u002FCD","Git",[83,86],{"value":84,"label":85},">2×","быстрее загружаются изображения после перехода с base64 на Blob и Object URL",{"value":87,"label":88},"4","формата экспорта одной композиции: PNG, JPEG, SVG и PDF",{"locale":5,"slug":90,"title":91,"description":92,"category":93,"year":94,"context":95,"stack":96,"results":102},"frontend-jobs-radar","Frontend Jobs Radar: канал вакансий, где каждую проверяет дешёвая AI-модель","Сервис на TypeScript и Cloudflare Workers собирает frontend-вакансии, проверяет каждую с помощью JEV и публикует короткие посты на английском в открытый Telegram-канал. Новые вакансии выходили в 32 днях из 34 с запуска.","Личные проекты","Сентябрь 2026 – сейчас","Личный проект",[14,97,98,99,100,101],"Cloudflare Workers","Cloudflare D1","JEV","AI Integration","Telegram Bot API",[103,106,109],{"value":104,"label":105},"32 из 34","дней с новыми вакансиями в открытом канале, 20 сентября – 23 октября 2026",{"value":107,"label":108},"≈$0,00008","стоит одна проверка JEV на ~2 000 входных токенов",{"value":110,"label":111},"20","Telegram-каналов в сборщике, помимо карьерных страниц, ATS-платформ и джоб-бордов",{"locale":5,"slug":113,"title":114,"description":115,"category":116,"year":117,"context":11,"stack":118,"results":128},"abandoned-carts","«Брошенные корзины» — платный продукт inSales для продавцов","Аналитика, история корзин, фильтры и ручные, массовые и автоматические напоминания в админке inSales. Был единственным frontend-разработчиком; у продукта 200+ активных платных подписчиков.","Инструменты для продавцов","Октябрь 2024 – апрель 2025",[44,45,119,120,24,48,121,122,70,123,124,18,125,126,127],"Data Visualization","REST APIs","Responsive Web Design","Requirements Analysis","Vue Router","Monaco Editor","Software Architecture","ApexCharts","Software as a Service (SaaS)",[129,132],{"value":130,"label":131},"200+","активных платных подписчиков на сентябрь 2026 года",{"value":133,"label":134},"15%","клиентов одного магазина вернулись и завершили покупку, по кейсу inSales (май 2025)",{"locale":5,"slug":136,"title":137,"description":138,"category":139,"year":140,"context":11,"stack":141,"results":148},"storefront-product-loading","Быстрая загрузка и кеширование товаров на витринах","Переделал загрузку и кеширование товаров в JavaScript-библиотеке витрин inSales. Запросов за данными товаров стало примерно на 70% меньше, тяжёлые страницы открываются за 2–3 секунды вместо 5+.","Платформа витрин","Декабрь 2024 – май 2025",[45,142,75,143,144,145,22,70,146,147],"IndexedDB","AJAX","Web Caching","Debugging","Cross-browser Compatibility","Liquid",[149,152,155],{"value":150,"label":151},"≈70%","меньше запросов за данными товаров — по сравнению числа запросов до и после изменений",{"value":153,"label":154},"2–3 с","загрузка тяжёлых товарных страниц, которые раньше грузились больше 5 с, в характерных замерах",{"value":156,"label":157},"10+","стандартных шаблонов проверено, а также реальные страницы клиентов",{"locale":5,"slug":159,"title":160,"description":161,"category":139,"year":162,"context":11,"stack":163,"results":167},"commonjs-storefront-library","Сопровождение JavaScript-библиотеки, на которой работают витрины inSales","Взял заброшенную библиотеку CommonJS, которая отвечает за карточки товаров, корзину и формы на витринах inSales. Уменьшил сжатый бандл с 300+ до 168 КБ и несколько лет развивал её дальше.","Октябрь 2021 – сентябрь 2026",[45,75,164,165,143,142,144,70,145,166],"Webpack","Code Refactoring","E-Commerce",[168],{"value":169,"label":170},"300+ КБ → 168 КБ","сжатый production-бандл после переделки сборки и зависимостей",{"locale":5,"slug":172,"title":173,"description":174,"category":9,"year":175,"context":11,"stack":176,"results":185},"monaco-editor","Редактор кода на Monaco для Liquid-шаблонов inSales","Общая сборка Monaco для смешанного HTML, Liquid, CSS и JavaScript работает в пяти продуктовых интерфейсах inSales. Сделал первую интеграцию и больше трёх лет был основным мейнтейнером.","Июль 2022 – ноябрь 2025",[124,14,147,45,177,44,164,22,80,178,179,20,180,181,182,183,184],"Front-End Architecture","Gitlab","Ruby on Rails","HTML","Developer Tools","Software Maintenance","Syntax Highlighting","Autocomplete",[186,189],{"value":187,"label":188},"5","продуктовых интерфейсов inSales работают на одной сборке редактора",{"value":190,"label":191},"3+ года","был основным мейнтейнером, с июля 2022 по октябрь 2025",{"locale":5,"slug":193,"title":194,"description":195,"category":139,"year":196,"context":11,"stack":197,"results":199},"multi-warehouse-carts","Корзины по складам для оптовых покупателей","Корзина для оптовых витрин inSales, где покупатель выбирает количество отдельно для каждого склада. Общая библиотека витрин отправляет изменения по нескольким складам одним запросом. В production — к ноябрю 2023 года.","Август – ноябрь 2023",[45,198,143,48,166,145,24,22,122],"API Development",[],{"locale":5,"slug":201,"title":202,"description":203,"category":139,"year":204,"context":11,"stack":205,"results":208},"product-options","Товарные опции и дополнительные услуги в корзине витрины","Сделал товарные опции в библиотеке витрин inSales: компонент выбора, пересчёт цены и операции корзины. Один и тот же вариант с разными дополнениями лежит в корзине отдельными позициями.","Январь – апрель 2025",[45,198,143,24,166,70,206,207,145],"HTML5","CSS",[],{"locale":5,"slug":210,"title":211,"description":212,"category":139,"year":213,"context":11,"stack":214,"results":219},"form-protection","Защита от ботов для оформления заказа и форм покупателей","Невидимая капча внутри отправки форм inSales — в оформлении заказа, личном кабинете и формах магазина. Затем выбор между Google reCAPTCHA и Yandex SmartCaptcha одной настройкой магазина.","Октябрь 2023 – июль 2026",[45,215,216,147,217,218],"Vue","Slim","Google reCAPTCHA","Yandex SmartCaptcha",[220,222,225],{"value":36,"label":221},"провайдера капчи, Google и Яндекс, на выбор для поддерживаемых форм магазина",{"value":223,"label":224},"3","поколения оформления заказа с капчей: 1.0, 2.0 и 3.0",{"value":87,"label":226},"семейства форм витрины в общей JavaScript-библиотеке",1793195987251]