Similar presentations:
Frontend-ASIS-TOBE
1.
FRONTEND STANDARDIZATIONСвой стек: AS-IS → TO-BE
Краткая карта, где мы сейчас и к какому общему контракту сводим frontend, publicfrontend и ui-kit.
Источник: план стандартизации фронтенда
2.
КОНТЕКСТТри репозитория, один стек
frontend
public-frontend
ui-kit
Nuxt 3 · личный кабинет
Nuxt 3 · публичный сайт
Vite library · Storybook · Vitest
Pinia · Sentry Vue · Vitest уже есть
ESLint 9 · Prettier 3 · Stylelint ·
Husky
lint смотрит в несуществующий
vue-project
Sentry Vue + Node, analyze
type-check, не typecheck
ESLint 8 / Prettier 2
3.
AS-ISСейчас стандарты живут в проектах, не между ними
frontend
public-frontend
ui-kit
Lint / format
ESLint 8, Prettier 2, нет lint-скрипта
ESLint 9, Prettier 3, Stylelint, Husky
сломанный lint, свой Prettier
Observability
Sentry точечно, auth breadcrumbs
Sentry + analytics performance
не применимо
Perf / tests
Vitest есть, budget нет, e2e нет
analyze есть, unit почти нет
stories + specs, нет package budget
State
крупные tour / auth stores
крупные SERP / Checkout stores
без Pinia — так и должно быть
A11y
точечно, есть tabindex="1"
точечные хорошие паттерны
native inputs, нет a11y gates
Docs
нет живой карты доменов
нет общего контракта команд
нет architecture overview
4.
TO-BEОдин контракт, разные пресеты
AS-IS
TO-BE
Одинаковые проблемы решаются по-разному
CI и локальные команды несовместимы
Общий минимум: lint, format, typecheck, test,
budget
Качество держится на памяти команды
Nuxt-пресет для apps, Vite-пресет для ui-kit
Стандарты в DoD: Sentry, state, a11y, tests
5.
01 · LINTERSСначала один язык форматирования
AS-IS
TO-BE
Prettier 2 vs 3, разные semi / printWidth
Prettier 3 + общие опции во всех репо
ESLint 8 legacy vs ESLint 9 flat
ESLint 9: Nuxt preset / Vue+Vite preset
Stylelint только в public-frontend
Одинаковые скрипты: lint, lint:fix, format,
typecheck
lint в ui-kit чинит несуществующую папку
Потом shared @ytme/*-config
6.
02 · OBSERVABILITYSentry — единственный техканал
AS-IS
TO-BE
Разный профиль Sentry в двух apps
API / perf частично уходят в analytics
Общий sentryLogger: error, message, breadcrumb,
span
console и ручной capture рядом
Одинаковые tags, fingerprints, PII sanitization
Web Vitals и API duration — в Sentry, не в GTM
7.
03 · PERFORMANCE & TESTSСначала baseline, потом ворота
AS-IS
TO-BE
frontend: нет analyze и e2e
Apps: route budget + smoke e2e на critical flows
public-frontend: analyze есть, unit почти нет
ui-kit: story/spec discipline + package/CSS budget
ui-kit: stories/specs есть, размера пакета нет
CI блокирует только новые регрессии
8.
04 · STATEPinia не для всего
AS-IS
TO-BE
Крупные stores смешивают API, формы, UI, route,
analytics
Таксономия: server / domain / form / route / ui /
persisted
SERP и tour filters: store и URL рассинхрон
Pinia — для shared/domain; ui-kit и локальные
модалки — нет
URL — source of truth для shareable фильтров
9.
05 · ACCESSIBILITYA11y входит в Definition of Done
AS-IS
TO-BE
Нет axe / Storybook a11y / eslint-a11y
WCAG 2.1 AA как ориентир, native HTML first
Хорошие паттерны точечные, не системные
ui-kit primitives с контрактом: label, focus, Escape
Риск: custom tables, tabindex="1", модалки
Сначала report-only, потом block новых critical
10.
06 · DOCSКороткий живой документ в каждом репо
AS-IS
TO-BE
Домены и ownership в головах
FRONTEND_ARCHITECTURE.md + карта доменов
Новая фича = поиск по папкам
README у крупных областей: tour, SERP, Checkout
Как добавить страницу / фичу без хаоса
11.
КАК КАТИМОдин и тот же ритм на каждый топик
1
2
3
Короткий стандарт и PR
checklist
Выровнять интерфейс:
скрипты, wrapper, taxonomy
Baseline → warning в MR →
block только новых
регрессий
Не чиним исторический долг одним PR. Сначала общий язык, потом ворота.
12.
ГОТОВНОСТЬСтек стандартизирован, когда
Во всех трёх репо одинаковые команды и понятный пресет
Новые ошибки, стейт, компоненты и зависимости проходят checklist
Sentry-события не дублируются и без PII
Apps имеют unit + smoke e2e; ui-kit — story/spec + package budget
CI не падает из-за старого долга, но ловит новые регрессии