Skip to content

easydev991/SwiftUI-WorkoutApp

Repository files navigation

SW Площадки

Xcode Version Swift Version iOS Version

Реализованный функционал

  • Большинство возможностей требуют подключения к интернету, но некоторые фичи доступны оффлайн
  • Звездочкой отмечены фичи только для авторизованных пользователей
  • Приложение поддерживает портретную и ландшафтную ориентации

Авторизация

  • Авторизация в сервисе workout.su под существующей учетной записью
  • Восстановление пароля от учетной записи

Профиль *

  • Просмотр информации о своем профиле
  • Поиск других пользователей по нику
  • Просмотр списка друзей
  • Просмотр списка площадок, где тренируется пользователь
  • Просмотр списка добавленных пользователем площадок
  • Просмотр дневников пользователя
  • Просмотр черного списка
  • Редактирование своего профиля
  • Отправка/принятие/отклонение запросов на добавление в друзья
  • Добавление/удаление из черного списка других пользователей
  • Отправить сообщение другому пользователю с экрана его профиля

Площадки

  • Просмотр площадок на карте или списком (оффлайн)
  • Фильтр отображаемых площадок по размеру, типу и городу (оффлайн)
  • Создание новой площадки (максимальное количество фото для одной площадки - 15) *
  • Изменение/удаление своей существующей площадки *
  • Просмотр детальной информации о площадке (название, размер, тип, снепшот карты, список тренирующихся *, фотографии, автор, комментарии)
  • Создание мероприятия для выбранной площадки *
  • Построение маршрута до выбранной площадки через стандартное приложение «Карты»
  • Поделиться ссылкой на площадку
  • Создавать/изменять/удалять свои комментарии к площадкам *
  • Отправить письмо для обновления данных о площадке по email
  • Отправить письмо с жалобой на фото/комментарий к площадке
  • Указать, что тренируешься/не тренируешься на площадке *

Мероприятия

  • Просмотр списка планируемых и прошедших мероприятий
  • Создание нового мероприятия (максимальное количество фото для одного мероприятия - 15) *
  • Изменение/удаление своего мероприятия *
  • Просмотр детальной информации о мероприятии (название, дата и место проведения, снепшот карты, список участников *, фотографии, описание, организатор, комментарии)
  • Поделиться ссылкой на мероприятие на экране
  • Создавать/изменять/удалять свои комментарии к мероприятиям *
  • Отправить письмо с жалобой на фото/комментарий к мероприятию
  • Указать, что идешь/не идешь на мероприятие *

Сообщения *

  • Отправлять сообщения другим пользователям сервиса со страницы их профиля
  • Просмотр своих диалогов в формате чатов
  • Отправлять новые сообщения в своих диалогах
  • Видеть количество непрочитанных сообщений на экране со списком диалогов

Дневники *

К дневникам (при наличии) можно перейти с экрана профиля пользователя.

  • Просмотр/комментирование чужих дневников (при наличии доступа к ним)
  • Создание/изменение/удаление дневников и записей в своих дневниках
  • Изменение настроек доступа для своих дневников

Настроки и остальное

  • Изменить тему приложения (светлая/темная/как в системе)
  • Изменить язык в приложении (Русский/Английский)
  • Отправить обратную связь о приложении по email
  • Оценить приложение в AppStore
  • Перейти на официальный сайт сервиса
  • Перейти в блог разработчика приложения в телеграм
  • Поделиться ссылкой на приложение
  • Просмотр текущей версии приложения
  • Перейти на сайт магазина workout
  • Перейти на страницу проекта в GitHub (сюда)
  • Просмотр логов сетевых запросов (только в режиме разработки)

Помощь проекту

Прежде чем что-то делать, ознакомься с правилами, пожалуйста.

Установка и настройка проекта

  1. Проверяем, что установлен Xcode 16+
  2. Клонируем репозиторий
  3. В терминале переходим в папку с проектом:
cd SwiftUI-WorkoutApp
  1. Устанавливаем все инструменты (справка доступна по команде make help):
make setup
  1. Запускаем в папке с проектом файл SwiftUI-WorkoutApp.xcodeproj
  2. Проект готов к работе!

Форматирование кода

  • Используем SwiftFormat для форматирования кода
  • Правила форматирования перечислены в файле .swiftformat
  • Все правила можно найти тут
  • Для запуска форматирования нужно в папке с проектом выполнить команду:
make format

Как это работает

  1. Перед каждым пушом должен выполняться хук, проверяющий необходимость форматирования кода
  2. При нарушении правил форматирования кода гит выдаст ошибку и напишет команду, которую нужно выполнить для запуска SwiftFormat
  3. Запускаем команду в терминале и выполняется форматирование кода

Как обновить SwiftFormat

Выполняем команду в терминале в папке с проектом:

make update_swiftformat

или сразу:

make update

Шпаргалка

Настройка базовых параметров приложения

Xcode -> SwiftUI-WorkoutApp -> Target: SwiftUI-WorkoutApp -> General

  • Display Name - название приложения на экране смартфона
  • Version - версия приложения для магазина
  • Build - версия сборки для TestFlight

Публикация приложения

Сборки в TestFlight публикуются автоматически при отправке изменений в main-ветку (используем Xcode Cloud).

Ручная отправка в TestFlight

  1. Скачать актуальную версию репозитория
    • Если ранее не скачивал, можно скачать по зеленой кнопке сверху с текстом Code -> Open with Xcode
    • Если ранее скачивал, то открываешь Xcode, в верхней панели нажать Source Control -> Pull
  2. Открыть Xcode и дождаться загрузки зависимостей; при возникновении ошибок можно:
    • почистить Derived Data и память билда (command + shift + k)
    • обновить зависимости (File -> Packages -> Reset/Resolve/Update)
  3. В верхней панели Xcode сменить девайс на Any iOS Device
  4. В верхней панели нажать Product -> Archive
  5. Дождаться архивации, в открывшемся окне со сборками выбрать нужную и нажать Distribute App
  6. Пройти по всем шагам и снять галку с автоматического изменения версии сборки на одном из финальных шагов

AppStore

  1. Открыть страницу с приложением в appstoreconnect.apple.com
  2. В левом меню рядом с версией в статусе Готово к продаже нажать + и добавить новую версию
  3. Заполнить поле Что нового в этой версии для русского и английского языков
  4. Ниже в разделе Сборка выбрать нужную сборку из TestFlight
  5. Ниже на странице проверить галки
    • Выпустить эту версию автоматически
    • Выпустить обновление сразу для всех пользователей
    • Сохранить текущую оценку
  6. Нажать сверху справа кнопку Сохранить
  7. Отправить приложение на проверку

Скриншоты

  1. Генерируем скриншоты при помощи Fastlane (документация)
  2. Настройки для генерации скриншотов находятся в Snapfile (документация)
  3. Для генерации скриншотов нужно предварительно настроить проект
  4. Генерация скриншотов выполняется командой:
make screenshots
  1. Для генерации скриншотов необходимо наличие в Xcode симуляторов с нужной версией iOS в соответствие с настройками в Snapfile
  2. Если тесты падают с ошибкой при запуске через fastlane, нужно убедиться, что при ручном запуске тестов из Xcode они успешно проходят во всех локализациях, используемых для создания скриншотов
  3. Готовые скриншоты сохраняются в папке screenshots

iPhone

Карта с площадками Список площадок Площадка Прошедшие мероприятия Мероприятие Профиль

iPad

Карта с площадками Список площадок Площадка Прошедшие мероприятия Мероприятие Профиль

Модели девайсов, используемые для скриншотов

По состоянию на 2025 год Apple берет за основу скриншоты для диагонали 6.9 (или 6.7) дюймов для айфона (13 дюймов для айпада) и масштабирует их под все остальные размеры экранов, то есть можно использовать для скриншотов по одному девайсу на платформу:

  • iPhone 16 Pro Max
  • iPad Pro 13-inch

Список всех существующих девайсов есть тут.

Sponsor this project

Contributors 2

  •  
  •