Skip to content

astropsy999/prod-project

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Запуск ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°

npm install - устанавливаСм зависимости
npm run start:dev ΠΈΠ»ΠΈ npm run start:dev:vite - запуск сСрвСра + frontend ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Π² dev Ρ€Π΅ΠΆΠΈΠΌΠ΅

Π‘ΠΊΡ€ΠΈΠΏΡ‚Ρ‹

  • npm run start - Запуск frontend ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Π½Π° webpack dev index
  • npm run start:vite - Запуск frontend ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Π½Π° vite
  • npm run start:dev - Запуск frontend ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Π½Π° webpack dev index + backend
  • npm run start:dev:vite - Запуск frontend ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Π½Π° vite + backend
  • npm run start:dev:index - Запуск backend сСрвСра
  • npm run build:prod - Π‘Π±ΠΎΡ€ΠΊΠ° Π² prod Ρ€Π΅ΠΆΠΈΠΌΠ΅
  • npm run build:dev - Π‘Π±ΠΎΡ€ΠΊΠ° Π² dev Ρ€Π΅ΠΆΠΈΠΌΠ΅ (Π½Π΅ ΠΌΠΈΠ½ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½)
  • npm run lint:ts - ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° ts Ρ„Π°ΠΉΠ»ΠΎΠ² Π»ΠΈΠ½Ρ‚Π΅Ρ€ΠΎΠΌ
  • npm run lint:ts:fix - Π˜ΡΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ ts Ρ„Π°ΠΉΠ»ΠΎΠ² Π»ΠΈΠ½Ρ‚Π΅Ρ€ΠΎΠΌ
  • npm run lint:scss - ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° scss Ρ„Π°ΠΉΠ»ΠΎΠ² style Π»ΠΈΠ½Ρ‚Π΅Ρ€ΠΎΠΌ
  • npm run lint:scss:fix - Π˜ΡΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ scss Ρ„Π°ΠΉΠ»ΠΎΠ² style Π»ΠΈΠ½Ρ‚Π΅Ρ€ΠΎΠΌ
  • npm run test:unit - Запуск unit тСстов с jest
  • npm run test:ui - Запуск ΡΠΊΡ€ΠΈΠ½ΡˆΠΎΡ‚Π½Ρ‹Ρ… тСстов с loki
  • npm run test:ui:ok - ΠŸΠΎΠ΄Ρ‚Π²Π΅Ρ€ΠΆΠ΄Π΅Π½ΠΈΠ΅ Π½ΠΎΠ²Ρ‹Ρ… ΡΠΊΡ€ΠΈΠ½ΡˆΠΎΡ‚ΠΎΠ²
  • npm run test:ui:ci - Запуск ΡΠΊΡ€ΠΈΠ½ΡˆΠΎΡ‚Π½Ρ‹Ρ… тСстов Π² CI
  • npm run test:ui:report - ГСнСрация ΠΏΠΎΠ»Π½ΠΎΠ³ΠΎ ΠΎΡ‚Ρ‡Π΅Ρ‚Π° для ΡΠΊΡ€ΠΈΠ½ΡˆΠΎΡ‚Π½Ρ‹Ρ… тСстов
  • npm run test:ui:json - ГСнСрация json ΠΎΡ‚Ρ‡Π΅Ρ‚Π° для ΡΠΊΡ€ΠΈΠ½ΡˆΠΎΡ‚Π½Ρ‹Ρ… тСстов
  • npm run test:ui:html - ГСнСрация HTML ΠΎΡ‚Ρ‡Π΅Ρ‚Π° для ΡΠΊΡ€ΠΈΠ½ΡˆΠΎΡ‚Π½Ρ‹Ρ… тСстов
  • npm run storybook - запуск Storybook
  • npm run storybook:build - Π‘Π±ΠΎΡ€ΠΊΠ° storybook Π±ΠΈΠ»Π΄Π°
  • npm run prepare - ΠΏΡ€Π΅ΠΊΠΎΠΌΠΌΠΈΡ‚ Ρ…ΡƒΠΊΠΈ
  • npm run generate:slice - Π‘ΠΊΡ€ΠΈΠΏΡ‚ для Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠΈ FSD слайсов
  • npm run postinstall - ΠžΡ‡ΠΈΡΡ‚ΠΊΠ° кэша node_modules
  • npm run remove-feature - Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π° ΠΏΠΎ Ρ„ΠΈΡ‡Π°-Ρ„Π»Π°Π³Π°ΠΌ

АрхитСктура ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°

ΠŸΡ€ΠΎΠ΅ΠΊΡ‚ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½ с использованиСм ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ»ΠΎΠ³ΠΈΠΈ "Feature Sliced Design" (Π”ΠΈΠ·Π°ΠΉΠ½ ΠΏΠΎ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹ΠΌ частям). Π­Ρ‚Π° архитСктурная мСтодология являСтся ΠΌΠΎΠ΄ΡƒΠ»ΡŒΠ½Ρ‹ΠΌ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΎΠΌ ΠΊ ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΊΠΎΠ΄Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ стрСмится ΡƒΠΏΡ€ΠΎΡΡ‚ΠΈΡ‚ΡŒ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ состояниСм, ΡƒΠ»ΡƒΡ‡ΡˆΠΈΡ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π° ΠΈ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΡ‚ΡŒ Ρ‡Π΅Ρ‚ΠΊΠΎΠ΅ Ρ€Π°Π·Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Ρ… возмоТностСй.

ΠŸΡ€Π΅ΠΈΠΌΡƒΡ‰Π΅ΡΡ‚Π²Π° ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ»ΠΎΠ³ΠΈΠΈ "Feature Sliced Design":

  • ΠœΠΎΠ΄ΡƒΠ»ΡŒΠ½ΠΎΡΡ‚ΡŒ: Код раздСляСтся Π½Π° логичСскиС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Π΅ части (Ρ„ΠΈΡ‡ΠΈ), Ρ‡Ρ‚ΠΎ Π΄Π΅Π»Π°Π΅Ρ‚ Π΅Π³ΠΎ Π±ΠΎΠ»Π΅Π΅ ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΎΠ²Π°Π½Π½Ρ‹ΠΌ ΠΈ Π»Π΅Π³ΠΊΠΎ ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΡƒΠ΅ΠΌΡ‹ΠΌ. КаТдая Ρ„ΠΈΡ‡Π° содСрТит всС связанныС ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹, стили, дСйствия ΠΈ Ρ€Π΅Π΄ΡŒΡŽΡΠ΅Ρ€Ρ‹.

  • Π›Π΅Π³ΠΊΠΎΡΡ‚ΡŒ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ: Π€ΠΈΡ‡ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Π»Π΅Π³ΠΊΠΎ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Ρ‹, ΡƒΠ΄Π°Π»Π΅Π½Ρ‹ ΠΈΠ»ΠΈ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Π½Ρ‹ Π±Π΅Π· нСобходимости пСрСписывания большой части ΠΊΠΎΠ΄Π°. Π­Ρ‚ΠΎ ΡƒΠΏΡ€ΠΎΡ‰Π°Π΅Ρ‚ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Π½Π° протяТСнии всСго Π΅Π³ΠΎ ΠΆΠΈΠ·Π½Π΅Π½Π½ΠΎΠ³ΠΎ Ρ†ΠΈΠΊΠ»Π°.

  • Π£Π»ΡƒΡ‡ΡˆΠ΅Π½Π½ΠΎΠ΅ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ состояниСм: КаТдая Ρ„ΠΈΡ‡Π° ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ собствСнноС нСзависимоС состояниС, Ρ‡Ρ‚ΠΎ способствуСт ΡƒΠΏΡ€ΠΎΡ‰Π΅Π½ΠΈΡŽ управлСния состояниСм прилоТСния ΠΈ ΠΏΡ€Π΅Π΄ΠΎΡ‚Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ появлСниС слоТных ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚ΠΎΠ² Π² Π΄Π°Π½Π½Ρ‹Ρ….

  • Π•Π΄ΠΈΠ½ΠΎΠΎΠ±Ρ€Π°Π·ΠΈΠ΅ Код распрСдСляСтся согласно области влияния (слой), ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚Π½ΠΎΠΉ области (слайс) ΠΈ тСхничСскому Π½Π°Π·Π½Π°Ρ‡Π΅Π½ΠΈΡŽ (сСгмСнт). Благодаря этому Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π° стандартизируСтся ΠΈ становится Π±ΠΎΠ»Π΅Π΅ простой для ознакомлСния.

  • ΠšΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΠΈΡ€ΡƒΠ΅ΠΌΠΎΠ΅ ΠΏΠ΅Ρ€Π΅ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Π»ΠΎΠ³ΠΈΠΊΠΈ ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹ ΠΈΠΌΠ΅Π΅Ρ‚ своС Π½Π°Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΈ прСдсказуСмый список зависимостСй. Благодаря этому сохраняСтся баланс ΠΌΠ΅ΠΆΠ΄Ρƒ соблюдСниСм ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠ° DRY ΠΈ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒΡŽ Π°Π΄Π°ΠΏΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ ΠΏΠΎΠ΄ Ρ€Π°Π·Π½Ρ‹Π΅ Ρ†Π΅Π»ΠΈ. ΠšΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ ΠΈ Π»ΠΎΠ³ΠΈΠΊΠ°, созданныС для ΠΎΠ΄Π½ΠΎΠΉ Ρ„ΠΈΡ‡ΠΈ, ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½Ρ‹ Π² Π΄Ρ€ΡƒΠ³ΠΈΡ… Ρ„ΠΈΡ‡Π°Ρ…. Π­Ρ‚ΠΎ способствуСт ΡƒΡΡ‚Ρ€Π°Π½Π΅Π½ΠΈΡŽ дублирования ΠΊΠΎΠ΄Π° ΠΈ ΠΏΠΎΠ²Ρ‹ΡˆΠ΅Π½ΠΈΡŽ эффСктивности Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ.

  • Π£ΡΡ‚ΠΎΠΉΡ‡ΠΈΠ²ΠΎΡΡ‚ΡŒ ΠΊ измСнСниям ΠΈ Ρ€Π΅Ρ„Π°ΠΊΡ‚ΠΎΡ€ΠΈΠ½Π³Ρƒ Один ΠΌΠΎΠ΄ΡƒΠ»ΡŒ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΄Ρ€ΡƒΠ³ΠΎΠΉ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ, располоТСнный Π½Π° Ρ‚ΠΎΠΌ ΠΆΠ΅ слоС ΠΈΠ»ΠΈ Π½Π° слоях Π²Ρ‹ΡˆΠ΅. Благодаря этому ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠ·ΠΎΠ»ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠΎΠ΄ Π½ΠΎΠ²Ρ‹Π΅ трСбования Π±Π΅Π· Π½Π΅ΠΏΡ€Π΅Π΄Π²ΠΈΠ΄Π΅Π½Π½Ρ‹Ρ… послСдствий.

  • ΠžΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΡΡ‚ΡŒ Π½Π° потрСбности бизнСса ΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ Π Π°Π·Π±ΠΈΠ΅Π½ΠΈΠ΅ прилоТСния ΠΏΠΎ бизнСс-Π΄ΠΎΠΌΠ΅Π½Π°ΠΌ ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ Π³Π»ΡƒΠ±ΠΆΠ΅ ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ‚ΡŒ, ΡΡ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈ Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒ Ρ„ΠΈΡ‡ΠΈ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°.

ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅ ΠΎΠ± Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π΅ - докумСнтация FSD


Π Π°Π±ΠΎΡ‚Π° с ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄Π°ΠΌΠΈ

Π’ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° i18next для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄Π°ΠΌΠΈ. Π€Π°ΠΉΠ»Ρ‹ с ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄Π°ΠΌΠΈ хранятся Π² public/locales.

Для ΠΊΠΎΠΌΡ„ΠΎΡ€Ρ‚Π½ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΠ΅ΠΌ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΠΏΠ»Π°Π³ΠΈΠ½ для webstorm/vscode

ДокумСнтация i18next - https://react.i18next.com/


ВСсты

Π’ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ 4 Π²ΠΈΠ΄Π° тСстов:

  1. ΠžΠ±Ρ‹Ρ‡Π½Ρ‹Π΅ unit тСсты Π½Π° jest - npm run test:unit
  2. ВСсты Π½Π° ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ с React testing library -npm run test:unit
  3. Π‘ΠΊΡ€ΠΈΠ½ΡˆΠΎΡ‚Π½ΠΎΠ΅ тСстированиС с loki npm run test:ui
  4. e2e тСстированиС с Cypress npm run test:e2e

ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅ ΠΎ тСстах - докумСнтация тСстированиС


Π›ΠΈΠ½Ρ‚ΠΈΠ½Π³

Π’ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ eslint для ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ typescript ΠΊΠΎΠ΄Π° ΠΈ stylelint для ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ Ρ„Π°ΠΉΠ»ΠΎΠ² со стилями.

Π’Π°ΠΊΠΆΠ΅ для строгого контроля Π³Π»Π°Π²Π½Ρ‹Ρ… Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π½Ρ‹Ρ… ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠΎΠ² ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ собствСнный eslint plugin eslint-plugin-paths-checking-plugin-ys, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ содСрТит 3 ΠΏΡ€Π°Π²ΠΈΠ»Π°

  1. path-checker - Π·Π°ΠΏΡ€Π΅Ρ‰Π°Π΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π°Π±ΡΠΎΠ»ΡŽΡ‚Π½Ρ‹Π΅ ΠΈΠΌΠΏΠΎΡ€Ρ‚Ρ‹ Π² Ρ€Π°ΠΌΠΊΠ°Ρ… ΠΎΠ΄Π½ΠΎΠ³ΠΎ модуля
  2. layers-import-ys - провСряСт ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎΡΡ‚ΡŒ использования слоСв с Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния FSD (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ widgets нСльзя ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π² features ΠΈ entitites)
  3. public-api-imports-ys - Ρ€Π°Π·Ρ€Π΅ΡˆΠ°Π΅Ρ‚ ΠΈΠΌΠΏΠΎΡ€Ρ‚ ΠΈΠ· Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΈΠ· public api. Π˜ΠΌΠ΅Π΅Ρ‚ auto fix
Запуск Π»ΠΈΠ½Ρ‚Π΅Ρ€ΠΎΠ²
  • npm run lint:ts - ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° ts Ρ„Π°ΠΉΠ»ΠΎΠ² Π»ΠΈΠ½Ρ‚Π΅Ρ€ΠΎΠΌ
  • npm run lint:ts:fix - Π˜ΡΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ ts Ρ„Π°ΠΉΠ»ΠΎΠ² Π»ΠΈΠ½Ρ‚Π΅Ρ€ΠΎΠΌ
  • npm run lint:scss - ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° scss Ρ„Π°ΠΉΠ»ΠΎΠ² style Π»ΠΈΠ½Ρ‚Π΅Ρ€ΠΎΠΌ
  • npm run lint:scss:fix - Π˜ΡΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ scss Ρ„Π°ΠΉΠ»ΠΎΠ² style Π»ΠΈΠ½Ρ‚Π΅Ρ€ΠΎΠΌ

Storybook

Π’ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅ для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° ΠΎΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‚ΡΡ стори-кСйсы. Запросы Π½Π° сСрвСр ΠΌΠΎΠΊΠ°ΡŽΡ‚ΡΡ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ storybook-addon-mock.

Π€Π°ΠΉΠ» со сторикСйсами создаСт рядом с ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠΌ с Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ΠΌ .stories.tsx

Π—Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ сторибук ΠΌΠΎΠΆΠ½ΠΎ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ:

  • npm run storybook

ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅ ΠΎ Storybook

ΠŸΡ€ΠΈΠΌΠ΅Ρ€:

import React from 'react';
import { ComponentStory, ComponentMeta } from '@storybook/react';

import { ThemeDecorator } from '@/shared/config/storybook/ThemeDecorator/ThemeDecorator';
import { Button, ButtonSize, ButtonTheme } from './Button';
import { Theme } from '@/shared/const/theme';

export default {
  title: 'shared/Button',
  component: Button,
  argTypes: {
    backgroundColor: { control: 'color' },
  },
} as ComponentMeta<typeof Button>;

const Template: ComponentStory<typeof Button> = (args) => <Button {...args} />;

export const Primary = Template.bind({});
Primary.args = {
  children: 'Text',
};

export const Clear = Template.bind({});
Clear.args = {
  children: 'Text',
  theme: ButtonTheme.CLEAR,
};

ΠšΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°

Для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ содСрТит 2 ΠΊΠΎΠ½Ρ„ΠΈΠ³Π°:

  1. Webpack - ./config/build
  2. Vite - vite.config.ts

Оба сборщика Π°Π΄Π°ΠΏΡ‚ΠΈΡ€ΠΎΠ²Π°Π½Ρ‹ ΠΏΠΎΠ΄ основныС Ρ„ΠΈΡ‡ΠΈ прилоТСния.

Вся конфигурация хранится Π² /config

  • /config/babel - babel
  • /config/build - конфигурация webpack
  • /config/jest - конфигурация тСстовой срСды
  • /config/storybook - конфигурация сторибука

Π’ ΠΏΠ°ΠΏΠΊΠ΅ scripts находятся Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ скрипты для Ρ€Π΅Ρ„Π°ΠΊΡ‚ΠΎΡ€ΠΈΠ½Π³Π°\упрощСния написания ΠΊΠΎΠ΄Π°\Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠΈ ΠΎΡ‚Ρ‡Π΅Ρ‚ΠΎΠ² ΠΈ Ρ‚Π΄.


CI pipeline ΠΈ pre commit Ρ…ΡƒΠΊΠΈ

ΠšΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡ github actions находится Π² /.github/workflows. Π’ ci ΠΏΡ€ΠΎΠ³ΠΎΠ½ΡΡŽΡ‚ΡΡ всС Π²ΠΈΠ΄Ρ‹ тСстов, сборка ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° ΠΈ сторибука, Π»ΠΈΠ½Ρ‚ΠΈΠ½Π³.

Π’ ΠΏΡ€Π΅ΠΊΠΎΠΌΠΌΠΈΡ‚ Ρ…ΡƒΠΊΠ°Ρ… провСряСм ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ Π»ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΌΠΈ, ΠΊΠΎΠ½Ρ„ΠΈΠ³ Π² /.husky


Π Π°Π±ΠΎΡ‚Π° с Π΄Π°Π½Π½Ρ‹ΠΌΠΈ

ВзаимодСйствиС с Π΄Π°Π½Π½Ρ‹ΠΌΠΈ осущСствляСтся с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ redux toolkit. По возмоТности ΠΏΠ΅Ρ€Π΅ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ сущности Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π½ΠΎΡ€ΠΌΠ°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ [EntityAdapter]

Запросы Π½Π° сСрвСр ΠΎΡ‚ΠΏΡ€Π°Π²Π»ΡΡŽΡ‚ΡΡ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ RTK query

Для асинхронного ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ Ρ€Π΅Π΄ΡŽΡΠ΅Ρ€ΠΎΠ² (Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π΅ Ρ‚ΡΠ½ΡƒΡ‚ΡŒ ΠΈΡ… Π² ΠΎΠ±Ρ‰ΠΈΠΉ Π±Π°Π½Π΄Π») ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ DynamicModuleLoader


Π Π°Π±ΠΎΡ‚Π° с feature-flags

Π Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΎ исользованиС feature-flags Ρ‚ΠΎΠ»ΡŒΠΊΠΎ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ…Π΅Π»ΠΏΠ΅Ρ€Π° toggleFeatures Π² Π½Π΅Π³ΠΎ пСрСдаСтся ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ с опциями { name: Π½Π°Π·Π²Π°Π½ΠΈΠ΅ Ρ„ΠΈΡ‡Π°-Ρ„Π»Π°Π³Π°, on: функция которая ΠΎΡ‚Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ послС Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ Ρ„ΠΈΡ‡Π° Ρ„Π»Π°Π³Π°, off: функция которая ΠΎΡ‚Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ послС Π²Ρ‹ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ Ρ„ΠΈΡ‡Π° Ρ„Π»Π°Π³Π° }

Для автоматичСского удалСния Ρ„ΠΈΡ‡ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ скрипт remove-features.ts ΠΎΠ½ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ 2 Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π°

  1. НазваниС удаляСмого Ρ„ΠΈΡ‡Π°-Ρ„Π»Π°Π³Π°
  2. БостояниС (on/off)

ОписаниС по слоям

ΠžΠ±Ρ‰Π΅Π΅ (shared)

ΠŸΠ΅Ρ€Π΅ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹ΠΉ ΠΊΠΎΠ΄, Π½Π΅ ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΠΉ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΡ ΠΊ спСцификС прилоТСния

  • api
  • assets
    • icons: ΠΏΠ°ΠΏΠΊΠ° с Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹ΠΌΠΈ для прилоТСния ΠΈΠΊΠΎΠ½ΠΊΠ°ΠΌΠΈ
    • tests: ΠΏΠ°ΠΏΠΊΠ° с ΠΈΠΊΠΎΠ½ΠΊΠΎΠΉ для модуля тСстов
  • config
    • i18n: настроки ΠΏΠ»Π°Π³ΠΈΠ½Π° для многоязычности i18n
    • storybook - Π΄Π΅ΠΊΠΎΡ€Π°Ρ‚ΠΎΡ€Ρ‹
  • const
    • localstorage.ts: Ρ€Π°Π·Π½Ρ‹Π΅ константы localstorage
    • router.ts: настройки ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚ΠΈΠ·Π°Ρ†ΠΈΠΈ
    • theme.ts: Ρ‚Π΅ΠΌΡ‹ прилоТСния
  • layouts
  • lib
    • classNames: Ѐункция ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΡΠ΅Ρ‚ ΠΈΠΌΠ΅Π½Π° классов Π² ΠΎΠ΄Π½Ρƒ строку ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚
    • components: Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ для ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ²
    • context
    • features: Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π» ΠΊΠ°ΡΠ°ΡŽΡ‰ΠΈΠΉΡΡ Ρ„ΠΈΡ‡Π°-Ρ„Π»Π°Π³ΠΎΠ²
    • hooks: Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ Ρ…ΡƒΠΊΠΈ
    • render: Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ связанныС с Ρ€Π΅Π½Π΄Π΅Ρ€ΠΎΠΌ
    • router: Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ связанныС с Ρ€ΠΎΡƒΡ‚ΠΈΠ½Π³ΠΎΠΌ
    • store: Ρ€Π°Π±ΠΎΡ‚Π° со стором
    • tests: Π²ΡΠΏΠΎΠΌΠΎΠ³Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ для тСстов
    • url: Ρ€Π°Π±ΠΎΡ‚Π° с url-Π°ΠΌΠΈ
  • types: ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Ρ‚ΠΈΠΏΠΎΠ²
  • ui: UI ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Π²ΠΎ всСм ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ

Бущности (entities)

Π€ΠΈΡ‡ΠΈ (features)

Π’ΠΈΠ΄ΠΆΠ΅Ρ‚Ρ‹ (Widgets)

ArticleAdditionalInfo ArticlesFilters Navbar Page PageError PageLoader ScrollToolbar Sidebar

Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Ρ‹ (Pages)

ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ (App)

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published