Опубликовано 13 дней назад

Frontend-разработчик (Vue 3, Middle+/Senior) в Молинет Санкт-Петербург

Building iconв офис
Person iconmiddle
Money bag iconот 190 000 ₽/мес
Обязанности:
  • Разработка и развитие интерфейсов админки и кабинета продавца на Vue 3
  • Развитие публичной витрины: вёрстка, клиентская логика на vanilla JS, работа с серверными шаблонами
  • Оптимизация публичной части: скорость загрузки, Core Web Vitals, размер бандла и стилей
  • Выделение общих компонентов админок в переиспользуемую библиотеку, снижение дублирования между приложениями
  • Работа со сложными таблицами, формами и валидацией, загрузкой файлов (прайсы XLSX/CSV), дашбордами и графиками
  • Интеграция с REST API: работа с состоянием (Pinia), обработка ошибок и состояний загрузки, согласование контрактов с backend-командой
  • Адаптивная вёрстка: корректная работа на мобильных, планшетах и десктопе
  • Работа с авторизацией и ролевой моделью на клиенте
  • Написание и поддержка тестов (Vitest, Vue Test Utils)
  • Участие в код-ревью, планировании задач и выработке архитектурных решений по frontend
  • Совместная работа с backend-разработчиками, дизайнером и QA
Требования:
  • Опыт коммерческой frontend-разработки от 3 лет
  • Уверенное знание JavaScript (ES2020+): асинхронность, замыкания, event loop, модули, работа с DOM без фреймворка
  • Опыт коммерческой разработки на Vue 3: Composition API, реактивность, жизненный цикл, композаблы (в проекте есть и Options API — легаси-компоненты)
  • Опыт работы с экосистемой Vue: Vue Router, Pinia
  • Опыт работы с UI-библиотеками — в проекте Ant Design Vue: кастомизация, темизация через Less-переменные, сложные таблицы и формы
  • Сильная вёрстка: Tailwind CSS, препроцессоры (Less, Sass), flexbox/grid, адаптивность, кроссбраузерность
  • Опыт интеграции с REST API: axios/fetch, обработка ошибок, работа с авторизацией
  • Опыт работы с формами и валидацией (Yup или аналоги)
  • Понимание производительности frontend: code splitting, lazy loading, работа с большими списками, оптимизация критического пути рендеринга
  • Опыт работы с Vite: конфигурация, режимы, переменные окружения, алиасы
  • Знание Git, npm/yarn
  • Умение декомпозировать интерфейс на переиспользуемые компоненты и поддерживать их в порядке
  • Способность разбираться в чужом коде и дорабатывать существующие приложения
  • Умение самостоятельно разбираться в сложных задачах и аргументировать выбранный подход

Плюсом будет

  • Опыт разработки e-commerce, каталогов, агрегаторов или маркетплейсов
  • Опыт работы над дизайн-системой или UI-kit, поддержка нескольких приложений на общей библиотеке компонентов
  • Опыт работы с серверным рендерингом и серверными шаблонизаторами, понимание прогрессивного улучшения
  • Понимание SEO на стороне клиента: микроразметка (schema.org), Core Web Vitals, оптимизация изображений и шрифтов
  • Опыт работы с TypeScript — в проекте пока чистый JS, но мы рассматриваем поэтапный переход
  • Опыт написания тестов (Vitest, Vue Test Utils, Playwright/Cypress)
  • Опыт работы с графиками и визуализацией данных (ApexCharts или аналоги)
  • Опыт интеграции WYSIWYG-редакторов (CKEditor 5, TinyMCE) и карт (2GIS MapGL, Яндекс.Карты)
  • Опыт настройки CI/CD для frontend-приложений (GitHub Actions)
  • Внимание к деталям UI/UX: типографика, состояния интерфейса, доступность (a11y)

О проекте

Costo.ru — агрегатор интернет-магазинов и маркетплейсов России: каталог товаров, сравнение цен от десятков магазинов, характеристики, рейтинги и отзывы.


Проект состоит из трёх частей, и frontend в них устроен по-разному:

  • costo.ru публичная витрина. Рендерится на сервере (PHP + шаблоны), клиентская часть — вёрстка и vanilla JS: Tailwind, Swiper, собственные слайдеры и компоненты. Здесь решают скорость загрузки и SEO.
  • admin.costo.ru административная панель. Vue 3 SPA на Ant Design Vue: управление товарами, категориями, атрибутами, магазинами, контентом, модерация.
  • seller.costo.ru кабинет продавца. Vue 3 SPA: управление товарами и прайсами, аналитика, документы, биллинг.

Ищем человека, которому интересны обе стороны: и вылизанная быстрая витрина, и сложные рабочие интерфейсы.

Чем интересна задача

Витрина — это SEO и скорость. Публичная часть рендерится на сервере, а значит каждый килобайт CSS и каждая лишняя перерисовка видны в Core Web Vitals и в позициях. Это редкий сейчас формат работы: не «накидать компонентов», а думать о том, что реально доедет до пользователя.


Админки — это сложные интерфейсы. Каталог с тысячами атрибутов, таблицы на большие объёмы данных, формы с нетривиальной валидацией, загрузка и разбор прайсов, дашборды с графиками, карты, WYSIWYG- редакторы.


Есть большая понятная задача. Admin и seller — два отдельных приложения с почти одинаковыми зависимостями и конфигами, выросшие копированием. Общей библиотеки компонентов нет, код между ними дублируется. Привести это в порядок — выделить общий UI-kit, избавиться от дублирования — работа для человека, который любит наводить порядок и видеть результат.

Честно о проекте

Мы не будем делать вид, что у нас всё идеально.


Три части — три разных подхода. Витрина на серверных шаблонах и vanilla JS, две админки на Vue 3. Придётся переключаться между контекстами.


Общей библиотеки компонентов нет. Admin и seller разошлись копированием: одинаковые зависимости, одинаковые конфиги, дублирующийся код. Это не «поддерживать существующий UI-kit», а создать его — задача
на реальный вклад в проект.


Версии частично отстали. Ant Design Vue 3.x, Vite 3.x, TypeScript отсутствует. Планы по обновлению есть, и новый человек может на них повлиять.


При этом инфраструктура рабочая. ESLint и Prettier настроены, Vitest с jsdom и @pinia/testing подключены, темизация через плагин препроцессора, автоимпорт компонентов, GitHub Actions с раздельными пайплайнами под production, staging и test. Есть mock-сервер по OpenAPI-спецификации — можно разрабатывать интерфейс, не
дожидаясь готовности backend.

Для нас особенно важно

Мы ищем разработчика, который думает не только о коде, но и о пользователе: витрина — лицо проекта, где решают скорость и удобство, а админка с кабинетом продавца — рабочие инструменты, за которыми люди проводят по несколько часов в день.


Нам важен человек, который наводит порядок, а не добавляет к беспорядку: не плодит дублирующие компоненты, думает о переиспользуемости и о том, как изменение отразится на соседнем приложении.


Мы нормально относимся к использованию AI-инструментов как к вспомогательным. Но нам принципиально важно, чтобы разработчик обладал сильной собственной экспертизой: мог самостоятельно спроектировать интерфейс, сверстать его, разобраться в баге и объяснить свои решения. Подход «код сгенерирован без понимания и проверки, без учёта архитектуры проекта и договорённостей внутри команды» нам не подойдёт.

Наш стек

  • Основа: JavaScript (ES2020+), Vue 3 (Composition API + Options API в легаси), Vue Router, Pinia, vue-request
  • UI: Ant Design Vue, Tailwind CSS, Less, Sass, FontAwesome
  • Витрина: серверные PHP-шаблоны, vanilla JS, Tailwind, Swiper, Toastify
  • Сборка: Vite, yarn
  • Данные и формы: axios, Yup, Papaparse, dayjs
  • Компоненты: ApexCharts, CKEditor 5, TinyMCE, 2GIS MapGL, SortableJS
  • Качество кода: ESLint, Prettier, Vitest, Vue Test Utils
  • Инфраструктура: Selectel, GitHub Actions, раздельные контуры, mock-сервер по OpenAPI
  • Backend (для контекста): PHP 8.3, собственный фреймворк, MySQL, Redis, REST API

Формат работы

Мы работаем в офисе по понедельникам и пятницам, ориентировочно с 10:00 до 17:30. Офис находится в собственности компании — это не арендное пространство. Мы постарались сделать его максимально комфортным и уютным: скорее он напоминает небольшой бутик, чем классический офис.

Для кандидатов, которые привыкли к удалённой работе, хотим сразу обозначить важный момент. Мы понимаем желание брать несколько проектов одновременно, но также хорошо представляем объём задач в нашем продукте. Совмещать полноценную работу у нас с другими проектами, скорее всего, будет непросто.

Поэтому просим трезво оценивать свою загрузку и возможность уделять проекту достаточно внимания. Мы ищем человека, который сможет глубоко погрузиться в продукт и быть вовлечённым в его развитие.

Эту вакансию мы нашли в HH.ru
МО

Молинет

Санкт-Петербург

Получить оффер

Похожие вакансии

Это единственная вакансия по вашему фильтру

Не то, что искал?

вакансии джуниор
как откликнуться на вакансию
примеры вакансий junior
вакансии по QA
стажировки по QA
Автоотклики