From ffe9d762326ce07a748149ba8a72e460fd84b460 Mon Sep 17 00:00:00 2001 From: kuduzow Date: Sat, 1 Oct 2022 23:04:21 +0300 Subject: [PATCH 1/2] =?UTF-8?q?=D0=94=D0=BE=D0=BF=D0=BE=D0=BB=D0=BD=D0=B5?= =?UTF-8?q?=D0=BD=D0=B0=20=D0=B8=D0=BD=D1=84=D0=BE=D1=80=D0=BC=D0=B0=D1=86?= =?UTF-8?q?=D0=B8=D1=8F=20=D0=B4=D0=BB=D1=8F=20=D1=83=D1=87=D0=B0=D1=81?= =?UTF-8?q?=D1=82=D0=BD=D0=B8=D0=BA=D0=BE=D0=B2=20=D0=BF=D1=80=D0=BE=D0=B5?= =?UTF-8?q?=D0=BA=D1=82=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CONTRIBUTING.md | 148 ++++++++++++++++++++++++++++++++++++++++++------ 1 file changed, 130 insertions(+), 18 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 4c87349..feec501 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -1,24 +1,136 @@ -## Начало работы +# Участие в проекте -_Все изменения в проекте принимаются только после успешного ci и код ревью. Каждый запрос на изменение оформляется как новый pull request._ +Любой желающий может внести свой вклад в развитие данного проекта. -1. Сфоркай репозиторий, склоринуй на локалку и установи зависимости. -2. Сразу поставь `upstream`: `git remote add upstream https://github.com/intocode/iqa-frontend.git`. -3. Склонируй и установи [серверную часть](https://github.com/intocode/iqa-backend). Инструкцию по запуску читай в том же репозитории. -4. Определи свои задачи на текущий спринт вместе с тимлидом. -5. Создай новую ветку под текущую задачу. Начни писать код. -6. Чекни свои изменения на предмет прохождения тестов и других проверок: `npm run check`. -7. Открой новый `pull request` с изменениями и сообщи о нём в чате разработки. +Помощь может заключаться не только в непосредственной разработке, но и в поиске ошибок, исправлении опечаток, предложении новых идей, которые сделают проект лучше. + +## Как предложить свою идею или указать на найденный баг? + +Открой раздел [Issues](https://github.com/intocode/iqa-frontend/issues). Все текущие и будущие задачи обсуждаются здесь. Если в списке открытых вопросов нет твоей идеи, то смело создавай новый Issue с предложением. + +## Как начать выполнять задачу? + +Открой раздел [Issues](https://github.com/intocode/iqa-frontend/issues). Выбери задачу, над которой хотел бы поработать. Внимательно ознакомься с описанием. Если остались вопросы, то задавай их в обсуждении Issue. + +Убедись, что задача тебе полностью понятна и только после этого приступай к её реализации. Если задача связана с написанием кода, то подробности выполнения такой задачи указаны в разделе ниже. + +## Технические требования + +Ко всем выполняемым задачам есть определенные требования. Они довольно простые: + +**Один Pull Request должен закрывать только одну задачу.** Нельзя включать в Pull Request никакие изменения, которые напрямую не относятся к теме пуллреквеста, даже если это просто исправление опечатки в тексте. + +**Pull Request должен закрывать решаемую задачу полностью.** Нельзя закрывать только часть задачи, другую часть оставив на другой Pull Request. Если задача требует разбивки на более мелкие задачи, то это нужно обсудить в Issue этой задачи и в случае необходимости создать новые Issue для подзадач. + +**Весь код должен идти с комментариями.** Разрешается не комментировать участки кода, которые можно однозначно понять в рамках своего контекста. Комментарии не должны содержать грамматические ошибки. + +_Пример 1:_ + +```javascript +useEffect(() => { + dispatch(fetchUsers()); +}, [dispatch]); +``` + +В данном случае можно недвусмысленно понять что делает этот код, поэтому его можно не комментировать. --- -Основные инструменты проекта: +_Пример 2:_ + +```javascript +// создаем переменную стейта, чтобы сделать поле ввода логина управляемым компонентом +const [text, setText] = useState(null); +``` + +В этом случае код нужно было прокомментировать, потому что переменная `text` может использоваться как угодно и нужно вносить ясность в момент её создания. + +--- + +_Пример 3:_ + +```javascript +const [loginFieldValue, setLoginFieldValue] = useState(""); +``` + +Данной код выполяет ту же задачу, но за счет хорошего нейминга переменных можно избежать неоднозначности, поэтому дополнительный комментарий не требуется. + +## Как приступить к разработке + +### Подготовка git + +**1. Сделай fork текущего репозитория**. + +**2. Склонируй свой fork на рабочий компьютер**: + +```shell +git clone https://github.com/твой-логин/iqa-frontend.git +``` + +**3. Добавь головной сервер `upstream`**: + +```shell +git remote add upstream https://github.com/intocode/iqa-frontend.git +``` + +**4. Создай новую ветку под выполняемую задачу**: + +```shell +git switch -c my-feature +``` + +### Запуск тестов + +После выполнения задачи запусти линтеры и тесты командой `npm run check`. Если какой-то тест не проходит, то внеси исправления в свой код. + +### Выгрузка изменений + +**Если задача будет решена и все тесты проходят** выгрузи свою работу и открыть новый Pull Request: + +```shell +git add измененный-файл.js +git commit -m "Хорошее описание коммита" +git push origin my-feature +``` + +После этого нужно перейти в свой репозиторий на GitHub и открыть Pull Request. Подробнее об этом [в документации GitHub](https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/creating-a-pull-request-from-a-fork). + +### Проверка на конфликты + +Если выполнение задачи заняло много времени, то возможно репозиторий в это время был обновлен. Необходимо сгрузить себе изменения и замёржить их. Для этого: + +**а) Сделай коммит своей работы:** + +```shell +git add file1.js file2.js +git commit -m "Описание выполненной работы" +``` + +**б) Перейди на ветку `main`:** + +```shell +git switch main +``` + +**в) Подтяни изменения с головной ветки:** + +```shell +git pull upstream main +``` + +**г) Перейди на рабочую ветку и сделай мёрж:** + +```shell +git switch my-feature +git merge main +``` + +**д) Если есть конфликты, то исправь их.** Если не знаешь как это делать, то прочитай какой-нибудь материал на эту тему. Например [этот](https://www.atlassian.com/ru/git/tutorials/using-branches/merge-conflicts), [этот](https://stackoverflow.com/questions/161813/how-do-i-resolve-merge-conflicts-in-a-git-repository) или [вот этот](https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/addressing-merge-conflicts/resolving-a-merge-conflict-using-the-command-line). + +После этого можно делать `push` и открывать Pull Request. + +## Принятие Pull Request + +Открытый Pull Request должен пройти код ревью как минимум двух участников проекта. Однако, в некоторых случаях мы можем принять изменения не дожидаясь двух подтверждений. -- `create-react-app@4` -- `react@17` -- `@reduxjs/toolkit` -- `react-router-dom@5` -- `styled-components` -- `storybook` -- `jest@27`, `@testing-library/react` -- `ESLint@7`, `prettier` +Всё обсуждение пулл реквеста должно вестись на его странице в комментариях, чтобы оно было доступно всем участникам разработки. From 6ced94a34931c1bc27c7a29b9e95ff35e25a891a Mon Sep 17 00:00:00 2001 From: kuduzow Date: Sat, 1 Oct 2022 23:05:00 +0300 Subject: [PATCH 2/2] =?UTF-8?q?=D0=98=D0=B7=D0=BC=D0=B5=D0=BD=D0=B5=D0=BD?= =?UTF-8?q?=D0=BE=20=D0=BE=D0=BF=D0=B8=D1=81=D0=B0=D0=BD=D0=B8=D0=B5=20?= =?UTF-8?q?=D0=BF=D1=80=D0=BE=D0=B5=D0=BA=D1=82=D0=B0.=20=D0=94=D0=BE?= =?UTF-8?q?=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5=D0=BD=D0=B0=20=D1=81=D1=81=D1=8B?= =?UTF-8?q?=D0=BB=D0=BA=D0=B0=20=D0=BD=D0=B0=20CONTRIBUTING.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 43 ++++++++++++++++++++++++++++++++++--------- 1 file changed, 34 insertions(+), 9 deletions(-) diff --git a/README.md b/README.md index 56fea64..184069c 100644 --- a/README.md +++ b/README.md @@ -1,19 +1,44 @@ -# iqa-application +# iqa-frontend [![intocode license](https://img.shields.io/github/license/intocode/iqa-frontend)](https://github.com/intocode/iqa-frontend) -_Проект находится в разработке._ +Репозиторий содержит фронтенд проекта iqa-application. Backend находится в [отдельном репозитории](https://github.com/intocode/iqa-backend). -**Запуск на локалке** +## Начало работы + +### Установка ```shell -git clone https://github.com/intocode/iqa-frontend -cd iqa-frontend && npm install +git clone https://github.com/intocode/iqa-frontend.git +cd iqa-frontend +npm install +``` + +### Запуск в режиме разработки +```shell npm start ``` -Сервер: https://github.com/intocode/iqa-backend private -Dev deploy: https://iqa-stage-frontend.intocode.ru -Jira: https://intocode.atlassian.net/jira/software/projects/IQ/boards/5 -Начало работы: [CONTRIBUTING.md](./CONTRIBUTING.md) for beginners +Установка backend-части приложения не требуется. Все запросы будут направлены на доступный в сети stage-сервер. + +**ВНИМАНИЕ!** Установка для участников разработки немного отличается от вышеуказанной. Подробнее читай в файле [CONTRIBUTING.md](./CONTRIBUTING.md). + +## Участие в разработке + +Любой желающий может внести свой вклад в развитие данного проекта. + +Помощь может заключаться не только в непосредственной разработке, но и в поиске ошибок, исправлении опечаток, предложении новых идей, которые сделают проект лучше. + +Подробности участия в проекте можно прочитать в файле [CONTRIBUTING.md](./CONTRIBUTING.md). + +## Стек + +- JavaScript, ES6, ES7 +- React 17 (FC), create-react-app, prop-types +- Redux, Redux Toolkit, Redux Persist +- antd, styled-components, bootstrap-grid.css +- axios, dayjs, react-transition-group +- Jest, ESLint, Prettier, lint-staged + +🤘🏼 Необязательно знать все инструменты, чтобы начать работу с проектом.