Front-end Development

Конфигурация
Полная конфигурация проекта с нуля (Webpack). Настроим React, Typescript, Babel, scss, css modules, vite, prettier, также настроим тестовую среду, jest, rtl, storybook, loki, Cypress. Большое кол-во плагинов, лоадеров + грамотная декомпозиция конфига.
UI
Библиотека компонентов. Более 20 UI компонентов, включая модальные окна с порталами, выпадающие списки/меню, сайдбар, кнопки с разными темами, скелетоны, попапы, ленивые изображения, drawer, аватары, вертикальные и горизонтальные стеки и т.д. Будем писать как свои решения, так и опробуем headless-библиотеки. Все компоненты будем делать доступными и семантичными.
Архитектура
Архитектура. Модули. Декомпозиция. Бизнес-сущности. Слабое зацепление и сильная связность. Переиспользование. Конкретные примеры.
Оптимизация
Оптимизация. Перерисовки и как с ними бороться. Анализ размера бандла. Использование бандл-анализаторов. Асинхронные компоненты. Асинхронные Redux-редьюсеры. Reducer manager и создание небольшой библиотеки по внедрению асинхронных редьюсеров. Изоляция модулей. Throttle и debounce. Инъекция эндпоинтов для лучшего code splitting. Научимся удобно асинхронно подгружать библиотеки, которые не нужны сразу (для анимаций и drag-and-drop).
Реальные задачи
Решение большого количества задач из реальной разработки (фильтры, поиск, сортировки, бесконечные ленты, многоблочные страницы, комментарии и т.д.). Похоже на то, что было в фундаментальном курсе, но в разы больше и сделано технически интереснее.
Темы и стили
CSS-модули и темизация. Создадим правильную структуру стилей и внедрим 3 цветовые темы приложения (тёмная, светлая, оранжевая). Организуем стили так, что внедрить новую тему будет стоить 5 минут. Поработаем с SCSS.
Storybook и скриншотные тесты
С нуля настроим Storybook и будем описывать story-case для каждого компонента и всех его состояний. Научимся делать скриншотные тесты, что позволит выполнять регрессионное тестирование интерфейса.
Unit и RTL тесты
Настроим тестовую среду для unit-тестов (jest) и компонентных тестов с помощью React Testing Library. Будем тестировать каждый модуль: селекторы, async thunks, редьюсеры, компоненты.
E2E тестирование
Покроем разработанные модули E2E-тестами. Разберём кастомные команды, фикстуры, моки, стабы, интерцепторы, скипы. Научимся правильно выполнять запросы и писать end-to-end тесты.
Линтинг и Prettier
Настроим code-style, ESLint, Stylelint. Реализуем собственный ESLint-плагин с 3 правилами для контроля архитектуры, изоляции модулей и доступов к слоям. Добавим автофикс и настроим Prettier.
Ошибки
Научимся правильно обрабатывать ошибки и реализуем ErrorBoundary. Посмотрим, как он работает на практике.
Роутинг
Настроим React Router v6 с авторизацией, ролями и ленивой загрузкой страниц для минимального размера бандла.
i18n
Внедрим интернационализацию с поддержкой русского и английского языков. Реализуем динамическую подгрузку переводов, плюральные формы и разбивку на чанки.
TypeScript
Настроим tsconfig, Webpack, разберём union-типы, generic-компоненты, типизацию Redux Toolkit и пропсов. TypeScript будет основой всего проекта.
Babel
Настроим Babel, подключим плагин для извлечения ключей переводов и создадим свой собственный плагин, разбирая структуру AST.
CI/CD и pre-commit хуки
Настроим CI pipeline с тестами, сборкой и линтерами. Добавим Husky и pre-commit хуки. Генерация отчётов и публикация в GitHub Pages.
Нормализация данных
Разберём концепцию нормализации данных и реализуем её с помощью EntityAdapter.
Виртуализация
Для повышения производительности списков реализуем виртуализацию рендеринга.
Инфраструктура
Настроим инфраструктуру проекта, чтобы сборка, тесты и Storybook работали как единая система (ts, css modules, глобальные переменные).
Рефакторинг
В конце разработки проанализируем код, улучшим архитектуру и декомпозицию модулей.
Запросы и работа с данными
Работа с Redux Toolkit, axios-инстансом и RTK Query. Асинхронная инъекция эндпоинтов для code splitting.
Отчёты
Генерация отчётов по юнит, скриншотным и компонентным тестам для удобного анализа.
Кодогенерация
Реализуем CLI-скрипт для генерации фич и сущностей с готовой структурой и шаблонами файлов.
Процесс разработки
Разберём реальные задачи и примеры поиска решений, документацию и типичные проблемы.
Миграция на React 18
Обновим проект с React 17 до 18, рассмотрим изменения и оптимизации.
Дебаг
Изучим инструменты отладки: Network, Application, React DevTools, Redux DevTools и анализаторы бандла.
Кольцевые зависимости и Babel-плагин
Разберём кольцевые зависимости, научимся их находить и устранять. Реализуем Babel-плагин для удаления лишнего кода из сборки.
Альтернативная сборка
Помимо Webpack, настроим Vite и сравним их по производительности и удобству.
Автоматизированный рефакторинг
Напишем скрипты для парсинга AST и автоматического изменения кода по всему проекту.
Деплой и Nginx
Настроим сервер, Nginx, SSL, HTTPS, gzip, проксирование и автоматический деплой.
Browserlist
Настроим browserlist и разберём, как она влияет на поддержку браузеров и размер бандла.
Мобилки и десктоп
Реализуем адаптивные компоненты под разные user-agent. Оптимизируем бандл и создадим фабрики компонентов.
Git Flow vs Trunk Based
Рассмотрим подходы Git Flow и Trunk Based, внедрим feature flags и динамические настройки пользователя.
Редизайн и автоматизация
Полный редизайн проекта. Две версии дизайна (старый и новый), между которыми можно переключаться. Скрипт автоматически удалит старый код после миграции.