- React + Typescript
- Zustand - a small, fast, and scalable bearbones state management solution
- Material UI - как готовые UI компоненты
- React Hook Form - performant, flexible and extensible forms with easy-to-use validation.
- NextJS - фремворк для SSR
Note
Версия Node v20*
npm i && npm run devзапустить проект по адресу localhost:3000
Caution
Обязательно запустить команду
npm run prepareПроект на основе NextJS и по этому для запускай на проде потребуется запуск приложение. По развертки на проде можно почитать тут Deploying NextJS
npm i
npm run build
npm startзапустить проект по адресу localhost:3000
Note
Надо создать .env.production по примеру .env.example что бы все параметры были
Создание ветки: [category]/[task]
category:
- feat - новая фича
- fix - фикс багов
- hotfix - быстрый фикс багов
task: номер задачи из ClickUp к примеру ABUTECH-1516
пример:
fix/ABUTECH-1516
feat/ABUTECH-1516
Коммиты краткое описание PR
пример: рефакторинг в модуле ./App.tsx
Root
├── .hasky - prehook'и для коммитов
│
├── types - ращрияем типы TypeScript
│
├── public - все публичные файлы которые попадут в продакшн сборку
│
├── src - папка разработки
│ │
│ ├── api- описываются все запросы на бек с указанием Endpoint
│ │
│ ├── app - тут вся структура проекта по структуре [AppRoute](https://nextjs.org/docs/app/building-your-application/routing)
│ │
│ ├── components - компоненты общие для проекта которые никак не входить в ui
│ │
│ ├── constants - общие константы для проекта, которые используется по всему проекту
│ │
│ ├── stores - состояние Zustand пишем в этой папке
│ │
│ ├── shared - компоненты которые исползуются по всему проеету
│ │
│ ├── providers - все провайдеры проекта описываются и формируются в этой папке
│ │
│ ├── styles - тема MUI и общие константы цветов и другие параметры стиля пишем тут
│ │
│ ├── types- общие типы по проекту
│ │
│ ├── middleware.ts - упраялвем поведение app от зависимости авторизации
│
├── .env.example - пример переменной окружении для продакшн
├── .eslintignore - игнорирование проверок eslint
├── .eslintrc - конфиг для eslint
├── .gitignore - игнорирование git
├── .stylelintrc.js - конфиг для scss стили
├── .prettierrc - конфиг для prettier
├── next.config.mjs - настройки NextJS
├── package.json - список пакетов проекта (всегда удалять ^)!!!
└── tsconfig.json - конфиг для typescript
- Названия папок и файлов всегда в нотации (kebab-case) кроме компонентов которые и папки и файл в нотации (PascalCase)
- Из компоненты всегда все imports из файла index.ts
- стили всегда в styled.ts или .scss
- интерфейсы в types.ts
- константы в constants.tsx
1) Если не готов код, то отмечаем свой PR как "Draft" кнопкой "Mark as draft"
2) Критичной считает Архитектурные, Структурные и другие соглашение по оформлению PR и за это не пропускается дальше PR
3) Остальные замечание являются чисто рекомендационный характер и не является блокиром для PR
4) Любой спорный момент обсуждается командой и если нет нарущение по 1-2 пункту то не яаляется данный спор блокиром!
- Типизировать всего и вся что только возможно никак не юзать ANY!
- any враг! - исключение всегда обсуждать с командой!
- по возможности избегать console.log в крайних случаях console.error console.warn
- мутировать значения во вне mobx store (использовать исключительно actions из mobx store ради таких вещей. )