Skip to content

Commit 970aa5d

Browse files
authored
Update README.md
1 parent bb436b0 commit 970aa5d

File tree

1 file changed

+102
-95
lines changed

1 file changed

+102
-95
lines changed

README.md

Lines changed: 102 additions & 95 deletions
Original file line numberDiff line numberDiff line change
@@ -1,101 +1,6 @@
11
# SW Площадки
22
[Ссылка на приложение в AppStore](https://workout.su/ios)
33

4-
## Установка и настройка проекта
5-
1. Клонировать репозиторий
6-
2. В терминале перейти в папку с проектом
7-
```shell
8-
cd SwiftUI-WorkoutApp
9-
```
10-
3. Настроить адрес папки с хуками `SwiftUI-WorkoutApp/githooks`
11-
```shell
12-
git -C /*путь_к_репозиторию*/ config core.hooksPath ./githooks
13-
```
14-
4. Дать разрешение на запуск хука `pre-push`
15-
```shell
16-
chmod +x SwiftUI-WorkoutApp/githooks/pre-push
17-
```
18-
5. Открыть проект в `Xcode` и дождаться загрузки зависимостей
19-
6. Проект готов к работе!
20-
21-
## Помощь проекту
22-
1. Для доработок создаем **issue** с описанием задачи
23-
2. Доработки делаем в отдельных ветках
24-
3. Для каждого **PR** необходимо оставить описание на русском языке по аналогии со старыми **PR**
25-
4. Вопросы по iOS-приложению решаем с Oleg991 в [почте](mailto:o.n.eremenko@gmail.com?subject=[GitHub]-SwiftUI-WorkoutApp), [телеграм](http://t.me/oleg991) или в **issue** с подробным описанием проблемы
26-
5. Вопросы по бэкенду/сайту - c Антоном в [почте](mailto:anton@workout.su?subject=[GitHub]-SwiftUI-WorkoutApp) или в **issue** с подробным описанием проблемы
27-
28-
## Шпаргалка
29-
### Настройка базовых параметров приложения
30-
`Xcode -> SwiftUI-WorkoutApp -> Target: SwiftUI-WorkoutApp -> General`
31-
- `Display Name` - название приложения на экране смартфона
32-
- `Version` - версия приложения для магазина
33-
- `Build` - версия сборки для `TestFlight`
34-
35-
### Публикация приложения
36-
#### TestFlight
37-
1. Скачать актуальную версию репозитория
38-
- Если ранее не скачивал, можно скачать по зеленой кнопке сверху с текстом `Code -> Open with Xcode`
39-
- Если ранее скачивал, то открываешь `Xcode`, в верхней панели нажать `Source Control -> Pull`
40-
2. Открыть `Xcode` и дождаться загрузки зависимостей; при возникновении ошибок можно:
41-
- почистить `Derived Data` и память билда (`command + shift + k`)
42-
- обновить зависимости (`File -> Packages -> Reset/Resolve/Update`)
43-
3. В верхней панели Xcode сменить девайс на `Any iOS Device`
44-
4. В верхней панели нажать `Product -> Archive`
45-
5. Дождаться архивации, в открывшемся окне со сборками выбрать нужную и нажать **Distribute App**
46-
6. Пройти по всем шагам и снять галку с автоматического изменения версии сборки на одном из финальных шагов
47-
48-
#### AppStore
49-
1. Открыть страницу с приложением в **AppstoreConnect**
50-
2. В левом меню рядом с версией в статусе **Готово к продаже** нажать `+` и добавить новую версию
51-
3. Заполнить поле **Что нового в этой версии**
52-
4. Ниже в разделе **Сборка** выбрать нужную сборку из `TestFlight`
53-
5. Ниже на странице проверить галки
54-
- *Выпустить эту версию автоматически*
55-
- *Выпустить обновление сразу для всех пользователей*
56-
- *Сохранить текущую оценку*
57-
6. Нажать сверху справа кнопку **Сохранить**
58-
7. Отправить приложение на проверку
59-
60-
### Скриншоты
61-
1. Генерируем скриншоты при помощи `Fastlane` ([документация](https://docs.fastlane.tools/getting-started/ios/setup/))
62-
2. Настройки для генерации скриншотов находятся в [Snapfile](./fastlane/Snapfile) ([документация](https://docs.fastlane.tools/actions/snapshot/))
63-
3. Генерация скриншотов выполняется командой в папке с проектом (команда может меняться в зависимости от способа установки `Ruby`/`fastlane`)
64-
```shell
65-
rbenv exec fastlane snapshot
66-
```
67-
4. Для генерации скриншотов **необходимо наличие в Xcode симуляторов с нужной версией iOS** в соответствие с настройками в [Snapfile](./fastlane/Snapfile)
68-
5. Если тесты падают с ошибкой при запуске через `fastlane`, нужно убедиться, что при ручном запуске тестов из `Xcode` они успешно проходят во всех локализациях, используемых для создания скриншотов
69-
6. Готовые скриншоты сохраняются в папке [screenshots](./fastlane/screenshots)
70-
71-
| Список площадок | Площадка | Прошедшие мероприятия | Мероприятие | Профиль |
72-
| --- | --- | --- | --- | --- |
73-
| <img src="./fastlane/screenshots/ru/iPhone 16 Pro Max-1-sportsGroundsList.png"> | <img src="./fastlane/screenshots/ru/iPhone 16 Pro Max-2-sportsGroundDetails.png"> | <img src="./fastlane/screenshots/ru/iPhone 16 Pro Max-3-pastEvents.png"> | <img src="./fastlane/screenshots/ru/iPhone 16 Pro Max-4-eventDetails.png"> | <img src="./fastlane/screenshots/ru/iPhone 16 Pro Max-5-profile.png"> |
74-
75-
#### Модели девайсов, используемые для скриншотов
76-
По состоянию на 2025 год Apple берет за основу скриншоты для диагонали 6.9 (или 6.7) дюймов и масштабирует их под все остальные размеры экранов, то есть при желании можно использовать для скриншотов только один девайс.
77-
Поскольку в этом проекте подключен и работает `fastlane snapshot`, используем три девайса:
78-
- iPhone 16 Pro Max
79-
- iPhone 16 pro
80-
- iPhone SE (3rd generation)
81-
82-
Список всех существующих девайсов есть [тут](https://www.ios-resolution.com).
83-
84-
### Форматирование кода
85-
- Используем [swiftformat (0.55.5)](https://github.com/nicklockwood/SwiftFormat) для форматирования кода
86-
- Правила форматирования перечислены в файле [.swiftformat](.swiftformat)
87-
- Все правила можно найти [тут](https://github.com/nicklockwood/SwiftFormat/blob/master/Rules.md)
88-
89-
#### Как это работает
90-
1. Перед каждым пушом должен выполняться хук, проверяющий необходимость форматирования кода
91-
2. При нарушении правил форматирования кода, гит выдаст ошибку и напишет команду, которую нужно выполнить для запуска `swiftformat`
92-
93-
#### Как обновить `swiftformat`
94-
1. Переходим на [страницу с релизами](https://github.com/nicklockwood/SwiftFormat/releases)
95-
2. Скачиваем `swiftformat.zip`
96-
3. Заменяем в папке с проектом старый файл `swiftformat` на новый
97-
4. Если при первом запуске форматирования после обновления файла система выдает алерт и не запускает скрипт, даем разрешение на запуск этого файла в `системных настройках -> конфиденциальность и безопасность`
98-
994
## Реализованный функционал
1005
- Большинство возможностей требуют подключения к интернету, но некоторые фичи доступны оффлайн
1016
- Звездочкой отмечены фичи только для авторизованных пользователей
@@ -165,3 +70,105 @@ rbenv exec fastlane snapshot
16570
- Просмотр текущей версии приложения
16671
- Перейти на сайт магазина workout
16772
- Просмотр логов сетевых запросов (только в режиме разработки)
73+
74+
## Помощь проекту
75+
Прежде чем что-то делать, ознакомься с [правилами](.github/CONTRIBUTING.md), пожалуйста.
76+
77+
### Установка и настройка проекта
78+
1. Убедись, что у тебя установлен Xcode 16+
79+
2. Клонируй репозиторий
80+
3. В терминале перейди в папку с проектом
81+
```shell
82+
cd SwiftUI-WorkoutApp
83+
```
84+
4. Настрой гит хуки
85+
```shell
86+
# Активируем локальные хуки для этого репозитория
87+
git config core.hooksPath ./githooks
88+
89+
# Даем права на выполнение pre-push хука
90+
chmod +x githooks/pre-push
91+
```
92+
5. Открыть проект в через файл `SwiftUI-WorkoutApp.xcodeproj` и дождаться загрузки зависимостей
93+
6. Проект готов к работе!
94+
95+
#### Что делает pre-push хук
96+
Хук выполняет двухэтапную проверку перед отправкой изменений:
97+
1. Блокирует прямой `push` в ветку `main`
98+
2. Запускает `SwiftFormat` в режиме линтера: если нарушены правила форматирования кода, вылезет ошибка, подробнее можно почитать [тут](#форматирование-кода)
99+
100+
### Форматирование кода
101+
- Используем [SwiftFormat (0.55.5)](https://github.com/nicklockwood/SwiftFormat) для форматирования кода
102+
- Правила форматирования перечислены в файле [.swiftformat](.swiftformat)
103+
- Все правила можно найти [тут](https://github.com/nicklockwood/SwiftFormat/blob/master/Rules.md)
104+
- Для запуска форматирования нужно в папке с проектом выполнить команду (точка после пробела тоже нужна):
105+
```shell
106+
./swiftformat .
107+
```
108+
109+
#### Как это работает
110+
1. Перед каждым пушом должен выполняться хук, проверяющий необходимость форматирования кода
111+
2. При нарушении правил форматирования кода, гит выдаст ошибку и напишет команду, которую нужно выполнить для запуска `SwiftFormat`
112+
113+
#### Как обновить SwiftFormat
114+
1. Переходим на [страницу с релизами](https://github.com/nicklockwood/SwiftFormat/releases)
115+
2. Скачиваем `swiftformat.zip`
116+
3. Заменяем в папке с проектом старый файл `swiftformat` на новый
117+
4. Отправляем **PR** с изменениями
118+
5. Если при первом запуске форматирования после обновления файла система выдает алерт и не запускает скрипт, даем разрешение на запуск этого файла в `системных настройках -> конфиденциальность и безопасность`
119+
120+
## Шпаргалка
121+
### Настройка базовых параметров приложения
122+
`Xcode -> SwiftUI-WorkoutApp -> Target: SwiftUI-WorkoutApp -> General`
123+
- `Display Name` - название приложения на экране смартфона
124+
- `Version` - версия приложения для магазина
125+
- `Build` - версия сборки для `TestFlight`
126+
127+
### Публикация приложения
128+
#### TestFlight
129+
1. Скачать актуальную версию репозитория
130+
- Если ранее не скачивал, можно скачать по зеленой кнопке сверху с текстом `Code -> Open with Xcode`
131+
- Если ранее скачивал, то открываешь `Xcode`, в верхней панели нажать `Source Control -> Pull`
132+
2. Открыть `Xcode` и дождаться загрузки зависимостей; при возникновении ошибок можно:
133+
- почистить `Derived Data` и память билда (`command + shift + k`)
134+
- обновить зависимости (`File -> Packages -> Reset/Resolve/Update`)
135+
3. В верхней панели Xcode сменить девайс на `Any iOS Device`
136+
4. В верхней панели нажать `Product -> Archive`
137+
5. Дождаться архивации, в открывшемся окне со сборками выбрать нужную и нажать **Distribute App**
138+
6. Пройти по всем шагам и снять галку с автоматического изменения версии сборки на одном из финальных шагов
139+
140+
#### AppStore
141+
1. Открыть страницу с приложением в **AppstoreConnect**
142+
2. В левом меню рядом с версией в статусе **Готово к продаже** нажать `+` и добавить новую версию
143+
3. Заполнить поле **Что нового в этой версии**
144+
4. Ниже в разделе **Сборка** выбрать нужную сборку из `TestFlight`
145+
5. Ниже на странице проверить галки
146+
- *Выпустить эту версию автоматически*
147+
- *Выпустить обновление сразу для всех пользователей*
148+
- *Сохранить текущую оценку*
149+
6. Нажать сверху справа кнопку **Сохранить**
150+
7. Отправить приложение на проверку
151+
152+
### Скриншоты
153+
1. Генерируем скриншоты при помощи `Fastlane` ([документация](https://docs.fastlane.tools/getting-started/ios/setup/))
154+
2. Настройки для генерации скриншотов находятся в [Snapfile](./fastlane/Snapfile) ([документация](https://docs.fastlane.tools/actions/snapshot/))
155+
3. Генерация скриншотов выполняется командой в папке с проектом (команда может меняться в зависимости от способа установки `Ruby`/`fastlane`)
156+
```shell
157+
rbenv exec fastlane snapshot
158+
```
159+
4. Для генерации скриншотов **необходимо наличие в Xcode симуляторов с нужной версией iOS** в соответствие с настройками в [Snapfile](./fastlane/Snapfile)
160+
5. Если тесты падают с ошибкой при запуске через `fastlane`, нужно убедиться, что при ручном запуске тестов из `Xcode` они успешно проходят во всех локализациях, используемых для создания скриншотов
161+
6. Готовые скриншоты сохраняются в папке [screenshots](./fastlane/screenshots)
162+
163+
| Список площадок | Площадка | Прошедшие мероприятия | Мероприятие | Профиль |
164+
| --- | --- | --- | --- | --- |
165+
| <img src="./fastlane/screenshots/ru/iPhone 16 Pro Max-1-sportsGroundsList.png"> | <img src="./fastlane/screenshots/ru/iPhone 16 Pro Max-2-sportsGroundDetails.png"> | <img src="./fastlane/screenshots/ru/iPhone 16 Pro Max-3-pastEvents.png"> | <img src="./fastlane/screenshots/ru/iPhone 16 Pro Max-4-eventDetails.png"> | <img src="./fastlane/screenshots/ru/iPhone 16 Pro Max-5-profile.png"> |
166+
167+
#### Модели девайсов, используемые для скриншотов
168+
По состоянию на 2025 год Apple берет за основу скриншоты для диагонали 6.9 (или 6.7) дюймов и масштабирует их под все остальные размеры экранов, то есть при желании можно использовать для скриншотов только один девайс.
169+
Поскольку в этом проекте подключен и работает `fastlane snapshot`, используем три девайса:
170+
- iPhone 16 Pro Max
171+
- iPhone 16 pro
172+
- iPhone SE (3rd generation)
173+
174+
Список всех существующих девайсов есть [тут](https://www.ios-resolution.com).

0 commit comments

Comments
 (0)