npm start- running the project locallynpm run build- optimized version buildnpm run lint- lint style and js by all filesnpm install -g serve- to install global package for serve buildserve -s build- to run optimization version build
- Node.js (v20.11.0)
- React.js (v18.3.1)
- typescript (v5.4.3)
- @bem-react/classname (v1.6.0)
- swiss-knife-scss (1.0.13)
- Shared (Простые компоненты) — многоразовый функционал, оторванный от специфики проекта/бизнеса.
- Entities (Составные компоненты) — бизнес-сущности (например, Пользователь, Продукт, Заказ).
- Features (Составные компоненты с бизнес-логикой) — взаимодействие с пользователем, действия, которые приносят бизнес-ценность пользователю.
- Widgets (Секции) — композиционный слой для объединения объектов и функций в значимые блоки.
- Pages (Страницы) — композиционный слой для создания полных страниц из сущностей, функций и виджетов. Линейное представление всех страниц проекта
- Для имен переменных и функций используем
camelCase, напримерfooVar,getItem() - Для имен классов, типов и интерфейсов используем
PascalCase, напримерclass CarController - Для интерфейсов добавляем преписку
I, напримерIUser - Для типов добавляем преписку
Type, напримерTypeArray - Для
enumиспользуемPascalCase - Ставим пробел после присвоения типа, например
const foo: string = 'hello' - Описываем массивы как
array: Foo[]вместоarray: Array<Foo>. - Именуем файлы
tsвcamelCase, напримерaccordion.tsx,myControl.tsx,utils.ts,map.tsи т.д.
Мы используем самописную библиотеку swiss-knife-scss, выложенную и официально зарегистрированную в npm. Она позволяет упростить работу с:
- root переменными css
- удобным и оптимизированным подключением шрифтов
- работать в
@layers-системе, т.е не нарушая специфичность, веса и каскадность - быстрое настраивание сетки и контейнеров проекта
- миксины, направленные на удобство работы с медиазапросами, скроллбарами и утилитарными классами
- упрощает работу с респонсив дизайнами посредством готовых миксинов
sass-lint работает по схеме
- Box
- Блок включает в себя любое свойство, влияющее на отображение и положение блока
- К примеру: display, float, position, left, top, height, width
- Border
- Все что связанно с бордером
- border, border-image, border-radius и т.д.
- Background
- Все что связанно с фоном
- Пример background, background-color, background-image, background-size
- Text
- Пример font-family, font-size, text-transform, letter-spacing
- Other
- Все остальное
Перед добавлением svg в проект требуется ее оптимизировать через ресурс https://svgoptimizer.com/ru/
- Editor config
- Eslint config
- Prettier config
- Stylelint config
- .gitignore
- Postcss config
- Sass
- TypeScript config
- bem-react/classname
- FSD
- swiss-knife-scss
- раскидать layers
- Readme.md
- Commitizen
- Commitlint config
- cz-customizable
- Lint Staged
- React Router Dom
- Redux Store
- CI/CD
- Docker file