Skip to content

Latest commit

 

History

History
82 lines (78 loc) · 4.51 KB

project-checklist.md

File metadata and controls

82 lines (78 loc) · 4.51 KB

Настройка проекта

  1. gitignore содержит все необходимые файлы / папки (как минимум node_modules и папку с билдом)
  2. README.md содержит только необходимую информацию. Описан тех стек, есть инструкция для development и production сборки. Есть ссылка на рабочай проект
  3. Проект запускается и собирается без ошибок
  4. При работе проекта в консоли нету ошибок
  5. При работе проекта происходят ожидаемые запросы на сервер (в DevTools во вкладке Network все происходит как вы того ожидаете - идут нужные запросы в нужном количестве)
  6. В package.json только зависимости, которые используются в проекте
  7. В package.json есть npm скрипты start, build, lint, test
  8. Убедитесь, что работает Gihub Pages, если такая требуется. SPA задеплоен на Netlify
  9. Хорошо протестируйте свое приложение вручную, часто сами найдете пару багов

Codestyle

  1. Подключен и настроен ESLint. Используйте airbnb пресет
  2. Код отформатирован с помощью Prettier
  3. Удален закомментированный и не используемый код
  4. Переменные/функции/компонентs имеют понятные и логичные имена

Code quality

  1. Весь возможный код покрыт юнит тестами (идеальный вариант, не всегда это требуется)
  2. Для написания стилей используется SASS. Используем как минимум переменные и вложенность при написании стилей
  3. Классы названы по BEM
  4. Файлы не больше 100 строк (желательно до 50)
  5. В одной папке не больше 10 файлов (лучше держать не больше 5)
  6. Константы вынесены в переменные. Возможно даже в отдельном файле
  7. Ф-ции для запросов на сервер - в отдельном файле
  8. Удалите console.log, где они использовались для отладки
  9. Стили нормализированы
  10. Избегайте вложенности кода везде где возможно. Избегать использование for/while везде где возможно
  11. Нет лишних запросов не сервер. С сервера достаем только те данные которые необходимы
  12. Нет дублирования кода

React, Redux

  1. Для всех компонент прописаны PropTypes
  2. Данные из store достаются с помощью селекторов
  3. В одном файле - одна компонента
  4. Если в компоненте нету состояния или методов жизненного цикла - она должна быть функциональной
  5. В JSX минимум логики
  6. Используйте деструктуризацию для props
  7. Структура проекта
src/
  |-- features/
  |     |-- auth
  |     |     |-- components
  |     |     |     |-- Auth.jsx
  |     |     |     |-- LoginForm.jsx
  |     |     |     |-- styles.scss
  |     |     |
  |     |     |-- auth.actions.js
  |     |     |-- auth.reduces.js
  |     |     |-- auth.selectors.js
  |     |     |-- auth.actionTypes.js
  |     |
  |     |
  |     |-- tasks
  |           |-- componetns
  |           |     |-- TasksList.jsx
  |           |     |-- Task.jsx
  |           |     |-- styles.scss
  |           |
  |           |-- tasks.actions.js
  |           |-- tasks.reduces.js
  |           |-- tasks.selectors.js
  |           |-- tasks.actionTypes.js
  |
  |-- styles/
  |     |-- index.scss
  |     |-- variables.scss
  |     |-- common.scss
  |     |-- breakpoints.scss
  |
  |-- App.jsx
  |-- index.jsx
  |-- store.js
  |-- index.html

.eslintrc.js
.babelrc
.gitignore
package.json
webpack.config.js