Skip to content
Анастасия Теслина edited this page Aug 28, 2023 · 30 revisions

Документация frontend части проекта Sticker Stack

Полезные ссылки

Фронтенд-домен с функционалом - http://stickerstack.ru/

Прототипы и макеты от дизайнера - https://www.figma.com/file/Z1qiU1QZYnQjvKMplUsRkj/PoC?node-id=0%3A1

API-документация - https://api.stickerstack.ru

Файловая структура

В корне проекта:

  • node-modules – это папка, которая содержит пакеты (зависимости), которые требуются нашему приложению. Их загружает и обновляет npm.
  • public – это папка, в которой находится страница index.html, определяющая HTML шаблон всего нашего приложения; кроме этого она ещё содержит некоторые другие файлы приложения.
  • src (сокращенно от source) – каталог, содержащий исходный код приложения.
  • gitignore – нужен для скрытия файлов и папок от системы контроля версий GIT. Этот файл содержит все необходимые записи, каким-то определённым образом его настраивать не нужно.
  • package.json – это набор метаданных о приложении: название проекта, версия, пакеты от которых зависит проект и т.д. package.json является ключевым файлом для любых приложений, основанных на Node.js.
  • package-lock.json – файл, который создаёт npm автоматически при установке зависимостей. Он содержит в себе полную информацию обо всех установленных зависимостях, включая их точные версии.
  • README.md - это описание проекта
  • .eslintrc.json - конфигурация EsLint. ESLint — это инструмент статического анализа кода для выявления проблемных шаблонов, обнаруженных в коде.
  • .eslintignore - исключения для EsLint.
  • LICENSE.md - лицензия проекта.
  • tsconfig.json - конфигурация для TypeScript. TS - язык программирования, позиционируемый как средство разработки веб-приложений, расширяющее возможности JavaScript.

Весь интерфейс разбит на отдельные React-компоненты, которые хранятся в папке Components. У каждого компонента имеется своя папка, в ней дочерние файлы - сам компонент, стили к нему.

Структура React Components и Redux

Альт

Требования к именованию файлов:

  • Названия директорий в components используют наименование компонента, который в ней расположен
  • Название файла компонента (.tsx) повторяет имя директории в которой находится
  • Название файла стилей (.scss) повторяет имя директории в которой находится и добавляет к себе .module (Component.module.scss)

Как залить свои изменения

https://www.conventionalcommits.org/ru/v1.0.0/

Как отправить на ревью

Любые изменения должны приходить из новой ветки, которая создана от наиболее поздней версии ветки main. Далее создается пулреквест на слияние этой новой ветки с main. Код должен одобрить хотя бы один человек, прежде чем будет доступен merge. В параметрe Reviewers можно запросить ревью и одобрение у конкретных пользователей.

Form desctop — копия (4)

Шаблон именования веток: feature/<здесь краткое описание содержимого> или bug/<здесь краткое описание исправления>. Например, feature/authorization, feature/new-design, bug/form-styles.

Шаблон именования коммитов: <разновидность изменений>: <краткое описание требуемых изменений>. Например, 'fix: rewrite error messages', 'feat: add validation to main form'.

После создания пулреквеста vercel автоматически реализует деплой данной ветки. Посмотреть его можно по ссылке Visit Preview. Form desctop — копия (4)

После каждого коммита в ветку деплой автоматически обновляется.

Как сделать ревью

На странице пулреквеста нужно найти кнопку "Добавить ревью":

Form desctop — копия (4)

Далее следует проверить все измененные автором файлы. К любой строчке кода можно оставить комментарий. Далее можно прокомментировать, утвердить изменения (approve), либо запросить новые (request chages).

Form desctop — копия (4)

Кодстайл

Импорты

  • Первый блок сторонние библиотеки\фреймворки + Redux (слайсы)

  • Второй блок наши компоненты

  • Третий блок стили(но стили всегда ниже всех), константы и любой другой импорт


Пример


Блоки импортов разделены одной пустой строкой.

Экспорты

Компонент экспотируем не defualt export, а просто export.
Пример

Папка с компонентом содержит index.ts в котором экспортируется компонент, чтобы не дублировать в импорте название.
Пример

Стили

Используется модульная система. Файл стилей для каждого компонента хранится в папке с компонентом. Нейминг: NameComponent.module.scss.

Импортируется в самом конце импортов.
Пример

Пример использования стилей


Типы и интерфейсы

Интерфейс пропсов храним в самом компоненте перед его объявлением. Название всегда IProps.
Пример

Интерфейсы других сущностей храним в том же компоненте, где использовали. Если интерфейс будет использован несколько раз, нужно создать отдельный файл в src/interface с названием INameInterface.ts.
Пример