[{"data":1,"prerenderedAt":440},["ShallowReactive",2],{"home-skills":3,"home-projects":305},[4,67,120,191],{"id":5,"name":6,"terms":7,"skills":8},"frontend","Frontend",true,[9,13,16,19,22,25,29,33,36,39,42,45,49,52,55,58,61,64],{"id":10,"name":11,"label":12},"java-script","JavaScript (ES6+)","JavaScript",{"id":14,"name":15,"label":15},"type-script","TypeScript",{"id":17,"name":18,"label":18},"html5","HTML5",{"id":20,"name":21,"label":21},"css3","CSS3",{"id":23,"name":24,"label":24},"scss","SCSS",{"id":26,"name":27,"label":28},"vue","Vue.js (Vue 2\u002FVue 3, Composition API)","Vue",{"id":30,"name":31,"label":32},"nuxt","Nuxt 3\u002F4","Nuxt",{"id":34,"name":35,"label":35},"react","React",{"id":37,"name":38,"label":38},"react-19","React 19",{"id":40,"name":41,"label":41},"next-js","Next.js",{"id":43,"name":44,"label":44},"vue-router","Vue Router",{"id":46,"name":47,"label":48},"tailwind","Tailwind CSS","Tailwind",{"id":50,"name":51,"label":51},"bootstrap","Bootstrap",{"id":53,"name":54,"label":54},"spa","SPA",{"id":56,"name":57,"label":57},"ssr","SSR",{"id":59,"name":60,"label":60},"mpa","MPA",{"id":62,"name":63,"label":63},"seo","SEO",{"id":65,"name":66,"label":66},"chrome-dev-tools","Chrome DevTools",{"id":68,"name":69,"terms":7,"skills":70},"backend","Backend & DevOps",[71,74,77,80,83,86,89,92,95,98,101,104,107,110,113,116],{"id":72,"name":73,"label":73},"node-js","Node.js",{"id":75,"name":76,"label":76},"nest-js","NestJS",{"id":78,"name":79,"label":79},"laravel","Laravel",{"id":81,"name":82,"label":82},"rust","Rust",{"id":84,"name":85,"label":85},"postgre-sql","PostgreSQL",{"id":87,"name":88,"label":88},"sql","SQL",{"id":90,"name":91,"label":91},"mongo-db","MongoDB",{"id":93,"name":94,"label":94},"redis","Redis",{"id":96,"name":97,"label":97},"rest-api","REST API",{"id":99,"name":100,"label":100},"json","JSON",{"id":102,"name":103,"label":103},"docker","Docker",{"id":105,"name":106,"label":106},"kubernetes","Kubernetes",{"id":108,"name":109,"label":109},"terraform","Terraform",{"id":111,"name":112,"label":112},"nginx","Nginx",{"id":114,"name":115,"label":115},"ci-cd","CI\u002FCD",{"id":117,"name":118,"label":119},"gh-actions","GitHub Actions","GH Actions",{"id":121,"name":122,"terms":123,"skills":124},"lead","Лидерство и soft skills",false,[125,128,131,134,137,140,143,146,149,152,155,158,161,164,167,170,173,176,179,182,185,188],{"id":126,"name":127,"label":127},"team-management","Управление командой",{"id":129,"name":130,"label":130},"team-leadership","Руководство коллективом",{"id":132,"name":133,"label":133},"leadership","Лидерство",{"id":135,"name":136,"label":136},"teamleading","Teamleading",{"id":138,"name":139,"label":139},"task-setting","Постановка задач разработчикам",{"id":141,"name":142,"label":142},"workload-balancing","Распределение задач и балансировка нагрузки",{"id":144,"name":145,"label":145},"task-estimation","Декомпозиция и оценка задач",{"id":147,"name":148,"label":148},"workload-analytics","Аналитика загрузки команды",{"id":150,"name":151,"label":151},"sprint-tracking","Отслеживание прогресса и рисков спринтов",{"id":153,"name":154,"label":154},"technical-decisions","Технические решения по стеку и архитектуре",{"id":156,"name":157,"label":157},"confluence","Confluence",{"id":159,"name":160,"label":160},"code-review","Code Review",{"id":162,"name":163,"label":163},"development-management","Управление разработкой",{"id":165,"name":166,"label":166},"organizational-skills","Организаторские навыки",{"id":168,"name":169,"label":169},"analytical-thinking","Аналитическое мышление",{"id":171,"name":172,"label":172},"process-management","Управление процессами",{"id":174,"name":175,"label":175},"planning","Планирование",{"id":177,"name":178,"label":178},"mentoring","Обучение и развитие",{"id":180,"name":181,"label":181},"business-communication","Деловая коммуникация",{"id":183,"name":184,"label":184},"management-skills","Управленческие навыки",{"id":186,"name":187,"label":187},"agile","Agile",{"id":189,"name":190,"label":190},"scrum","Scrum",{"id":192,"name":193,"terms":7,"skills":194},"additional","Additional",[195,198,201,204,207,210,213,216,219,222,225,228,231,234,237,240,243,246,249,252,255,258,261,264,267,270,273,276,279,282,285,288,291,294,296,299,302],{"id":196,"name":197,"label":197},"vite","Vite",{"id":199,"name":200,"label":200},"webpack","Webpack",{"id":202,"name":203,"label":203},"git","Git",{"id":205,"name":206,"label":206},"github","GitHub",{"id":208,"name":209,"label":209},"git-lab","GitLab",{"id":211,"name":212,"label":212},"figma","Figma",{"id":214,"name":215,"label":215},"sass","Sass",{"id":217,"name":218,"label":218},"redux","Redux",{"id":220,"name":221,"label":221},"vitest","Vitest",{"id":223,"name":224,"label":224},"jest","Jest",{"id":226,"name":227,"label":227},"tauri","Tauri",{"id":229,"name":230,"label":230},"prometheus","Prometheus",{"id":232,"name":233,"label":233},"storybook","Storybook",{"id":235,"name":236,"label":236},"jira","Jira",{"id":238,"name":239,"label":239},"claude-code","Claude Code",{"id":241,"name":242,"label":242},"codex","Codex",{"id":244,"name":245,"label":245},"gemini","Gemini",{"id":247,"name":248,"label":248},"mcp","MCP",{"id":250,"name":251,"label":251},"atlassian-rovo","Atlassian Rovo",{"id":253,"name":254,"label":254},"zustand","Zustand",{"id":256,"name":257,"label":257},"swr","SWR",{"id":259,"name":260,"label":260},"tanstack-query","TanStack Query",{"id":262,"name":263,"label":263},"pinia","Pinia",{"id":265,"name":266,"label":266},"vuex","Vuex",{"id":268,"name":269,"label":269},"react-hook-form","React Hook Form",{"id":271,"name":272,"label":272},"zod","Zod",{"id":274,"name":275,"label":275},"capacitor","Capacitor",{"id":277,"name":278,"label":278},"nuxt-2-3-4","Nuxt 2\u002F3\u002F4",{"id":280,"name":281,"label":281},"ssr-isr","SSR\u002FISR",{"id":283,"name":284,"label":284},"rest","REST",{"id":286,"name":287,"label":287},"graph-ql","GraphQL",{"id":289,"name":290,"label":290},"websocket","WebSocket",{"id":292,"name":293,"label":293},"clinic-js","Clinic.js",{"id":295,"name":295,"label":295},"autocannon",{"id":297,"name":298,"label":298},"lighthouse","Lighthouse",{"id":300,"name":301,"label":301},"github-copilot","GitHub Copilot",{"id":303,"name":304,"label":304},"llm","LLM",[306,327,345,361,377,395,410,426],{"id":307,"isFavorite":7,"index":308,"name":309,"tone":310,"url":311,"host":312,"preview":313,"previewMobile":314,"previewAlt":315,"subtitle":316,"headline":317,"description":318,"tags":319,"stack":323,"role":325,"result":326},"qwixit","01","Qwixit","primary","https:\u002F\u002Fqwixit.com\u002F","qwixit.com","qwixit\u002Fmedia\u002Fpreview.webp","qwixit\u002Fmedia\u002Fpreview-mobile.webp","Главная страница сайта Qwixit","ИНТЕРНЕТ-МАГАЗИН · ДОСТАВКА ИЗ США","300+ заказов в месяц через несколько месяцев после запуска","Интернет-магазин оригинальных товаров из США с ценами в рублях и доставкой по России.",[320,321,322,63],"E-commerce","Full-Stack","Платежи",[324,79,106,85],"Vue 3","Fullstack-разработчик в команде из трёх разработчиков и PM: дизайн витрины и админки, frontend-архитектура и клиентская часть на Vue 3, API для витрины на Laravel.","Через несколько месяцев после запуска магазин вышел на цель заказчика, 300+ заказов в месяц. К сдаче в каталоге было около миллиона товаров.",{"id":328,"isFavorite":7,"index":329,"name":330,"tone":331,"url":332,"host":333,"preview":334,"previewMobile":335,"previewAlt":336,"subtitle":337,"headline":338,"description":339,"tags":340,"stack":341,"role":343,"result":344},"brendmart","02","Brendmart","secondary","https:\u002F\u002Fbrendmart.com\u002F","brendmart.com","brendmart\u002Fmedia\u002Fpreview.webp","brendmart\u002Fmedia\u002Fpreview-mobile.webp","Главная страница сайта Brendmart","ИНТЕРНЕТ-МАГАЗИН · ДОСТАВКА ИЗ ЕВРОПЫ","600+ заказов в месяц к моменту сдачи проекта","Интернет-магазин одежды, обуви и аксессуаров мировых брендов из европейских магазинов с доставкой в Россию, Беларусь и Казахстан.",[320,321,63],[342,48,79,85],"Nuxt 4","Fullstack-разработчик, один из двух в команде с junior frontend-разработчиком: дизайн и UI-кит, витрина на Nuxt с серверным рендером, клиентская часть админки, API для витрины на Laravel и ревью кода junior-разработчика.","К сдаче магазин принимал больше 600 заказов в месяц, а в каталоге было больше 2 млн товаров.",{"id":346,"isFavorite":123,"index":347,"name":348,"tone":310,"url":349,"host":350,"preview":351,"previewMobile":352,"previewAlt":353,"subtitle":354,"headline":355,"description":356,"tags":357,"stack":358,"role":359,"result":360},"taobao","03","Taobao.at","https:\u002F\u002Ftaobao.at\u002F","taobao.at","taobao\u002Fmedia\u002Fpreview.webp","taobao\u002Fmedia\u002Fpreview-mobile.webp","Главная страница сайта Taobao.at","ВЫКУП ТОВАРОВ · ДОСТАВКА ИЗ КИТАЯ И ГОНКОНГА","600+ заказов в месяц к моменту сдачи","Сервис заказа товаров из Китая и Гонконга с доставкой в Россию. Цены в рублях уже включают пошлины, комиссию и доставку.",[320,321],[342,48,79,85],"Fullstack-разработчик в команде из трёх разработчиков: дизайн сайта и UI-кит, витрина на Nuxt, клиентская часть админки, API для витрины на Laravel.","К моменту сдачи сервис принимал 600+ заказов в месяц, в каталоге было больше 2 млн товаров.",{"id":362,"isFavorite":123,"index":363,"name":364,"tone":331,"url":365,"host":366,"preview":367,"previewMobile":368,"previewAlt":369,"subtitle":370,"headline":371,"description":372,"tags":373,"stack":374,"role":375,"result":376},"pochtoy-prostobox","04","Pochtoy & Prostobox","https:\u002F\u002Fpochtoy.com\u002F","pochtoy.com","pochtoy-prostobox\u002Fmedia\u002Fpreview.webp","pochtoy-prostobox\u002Fmedia\u002Fpreview-mobile.webp","Главная страница сайта Pochtoy.com","ДОСТАВКА ИЗ США · ПОДДЕРЖКА И СКОРОСТЬ","Ускорение витрин двух брендов на одной платформе","Сервис доставки покупок из американских магазинов: склад в беспошлинном Делавэре, выкуп товара, отправка в Россию, Казахстан, Беларусь и другие страны.",[321],[324,79,15,48,85],"Fullstack-разработчик в команде из трёх разработчиков и PM: фронтенд витрины, запросы к базе данных для неё и ускорение загрузки страниц.","Витрина получила пагинацию, ленивую загрузку картинок, отдельные скрипты и стили для каждой страницы и замер скорости у реальных пользователей. Модуль «Кешбэк за отзыв» мой: фронтенд и запросы.",{"id":378,"isFavorite":123,"index":379,"name":380,"tone":331,"url":381,"host":382,"preview":383,"previewMobile":384,"previewAlt":385,"subtitle":386,"headline":387,"description":388,"tags":389,"stack":391,"role":393,"result":394},"cdek-shopping","05","CDEK.Shopping","https:\u002F\u002Fcdek.shopping\u002F","cdek.shopping","cdek-shopping\u002Fmedia\u002Fpreview.webp","cdek-shopping\u002Fmedia\u002Fpreview-mobile.webp","Главная страница сайта CDEK.Shopping","ЗАРУБЕЖНЫЙ ШОПИНГ · ЛИЧНЫЙ КАБИНЕТ","На 37% меньше регрессионных багов после рефакторинга легаси","Сервис-агент группы СДЭК для заказа товаров зарубежных брендов из 14 стран с оплатой российской картой и ценами в рублях.",[320,390],"Кабинеты",[392,266,12,79,224],"Vue 2","Middle frontend-разработчик в команде из 15 человек: весь фронтенд личного кабинета на Vue 2 и Vuex внутри Laravel + Blade, рефакторинг легаси на jQuery, задачи на Laravel.","Новый сервис запустился сразу с интерактивным кабинетом без перезагрузок страниц. После рефакторинга легаси регрессионных багов стало на 37% меньше по отчётам QA.",{"id":396,"isFavorite":123,"index":397,"name":398,"tone":331,"url":399,"host":399,"preview":400,"previewMobile":401,"previewAlt":402,"subtitle":403,"headline":404,"description":405,"tags":406,"stack":407,"role":408,"result":409},"fly-post","06","Fly Post",null,"fly-post\u002Fmedia\u002Fpreview.webp","fly-post\u002Fmedia\u002Fpreview-mobile.webp","Профиль в Fly Post: таблица отправлений со статусами","ПОПУТНАЯ ДОСТАВКА · ВНУТРЕННИЙ СЕРВИС","MVP за ~5 недель командой из трёх разработчиков","Внутренний сервис, через который экипажи самолётов берут попутную почту на свой рейс и получают деньги за доставку.",[321,390],[324,15,76,85,103],"Вёл проект как подрядчик: дизайн и UI-кит, архитектура, бэкенд на NestJS, фронтенд на Vue 3 вместе с двумя разработчиками и ревью их кода.","Заказчик принял MVP, собранный примерно за 5 недель: фронтенд и бэкенд шли параллельно по контракту в Swagger.",{"id":411,"isFavorite":123,"index":412,"name":413,"tone":414,"url":399,"host":399,"preview":415,"previewMobile":416,"previewAlt":417,"subtitle":418,"headline":419,"description":420,"tags":421,"stack":423,"role":424,"result":425},"tamriel-codex","07","Tamriel Codex","accent","tamriel-codex\u002Fmedia\u002Fpreview.webp","tamriel-codex\u002Fmedia\u002Fpreview-mobile.webp","Главный экран приложения Tamriel Codex","ОФЛАЙН-СПРАВОЧНИК · РОЛЕВАЯ ИГРА","Офлайн-справочник для Android и Windows за 10 дней, к дате игры","Справочник и записная книжка игрока для полигонной ролевой игры по миру The Elder Scrolls: правила, лор и новости с быстрым поиском, свои заметки и обмен ими через QR без интернета.",[422],"Mobile first",[324,15,275,48,263],"Единственный разработчик, проект под ключ: интерфейс, локальная база, сборки под Android и Windows, выгрузка данных игры из группы VK и обмен заметками через QR.","На игре приложением пользовалась фракция Альдмерский доминион, заметками игроки обменивались через QR без интернета. Нужное в правилах и лоре находилось за секунды, а не в стопке бумаги.",{"id":427,"isFavorite":123,"index":428,"name":429,"tone":414,"url":399,"host":399,"preview":430,"previewMobile":431,"previewAlt":432,"subtitle":433,"headline":434,"description":435,"tags":436,"stack":437,"role":438,"result":439},"someday","08","Someday","someday\u002Fmedia\u002Fpreview.svg","someday\u002Fmedia\u002Fpreview-mobile.svg","Иллюстрация: плата ESP32 с подключёнными модулями RFID, GPS, дисплеем и светодиодной лентой","БИБЛИОТЕКИ ДРАЙВЕРОВ · ЭЛЕКТРОНИКА ДЛЯ РОЛЕВОЙ ИГРЫ","11 библиотек драйверов, на которых устройства отработали на игре 2026 года","Библиотеки драйверов на C++ для ESP32, из которых собираются игровые устройства для полигонной ролевой игры по S.T.A.L.K.E.R. на Урале.",[],[],"Весь софт в команде KB Someday из трёх человек. В этом кейсе — автор 11 библиотек драйверов someday-* на C++ под ESP32 и FreeRTOS.","Устройства на этих библиотеках отработали на игре 2026 года: около 30 игроков прошли квесты локации, а устройство живёт 18–20 часов от двух аккумуляторов 18650 без оптимизаций энергопотребления.",1792947419317]