gitignore
содержит все необходимые файлы / папки (как минимумnode_modules
и папку с билдом)README.md
содержит только необходимую информацию. Описан тех стек, есть инструкция для development и production сборки. Есть ссылка на рабочай проект- Проект запускается и собирается без ошибок
- При работе проекта в консоли нету ошибок
- При работе проекта происходят ожидаемые запросы на сервер (в DevTools во вкладке Network все происходит как вы того ожидаете - идут нужные запросы в нужном количестве)
- В
package.json
только зависимости, которые используются в проекте - В
package.json
естьnpm
скриптыstart
,build
,lint
,test
- Убедитесь, что работает Gihub Pages, если такая требуется. SPA задеплоен на Netlify
- Хорошо протестируйте свое приложение вручную, часто сами найдете пару багов
- Подключен и настроен
ESLint
. Используйтеairbnb
пресет - Код отформатирован с помощью
Prettier
- Удален закомментированный и не используемый код
- Переменные/функции/компонентs имеют понятные и логичные имена
- Весь возможный код покрыт юнит тестами (идеальный вариант, не всегда это требуется)
- Для написания стилей используется
SASS
. Используем как минимум переменные и вложенность при написании стилей - Классы названы по BEM
- Файлы не больше 100 строк (желательно до 50)
- В одной папке не больше 10 файлов (лучше держать не больше 5)
- Константы вынесены в переменные. Возможно даже в отдельном файле
- Ф-ции для запросов на сервер - в отдельном файле
- Удалите
console.log
, где они использовались для отладки - Стили нормализированы
- Избегайте вложенности кода везде где возможно. Избегать использование for/while везде где возможно
- Нет лишних запросов не сервер. С сервера достаем только те данные которые необходимы
- Нет дублирования кода
- Для всех компонент прописаны
PropTypes
- Данные из
store
достаются с помощью селекторов - В одном файле - одна компонента
- Если в компоненте нету состояния или методов жизненного цикла - она должна быть функциональной
- В JSX минимум логики
- Используйте деструктуризацию для
props
- Структура проекта
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