└── README.md /README.md: -------------------------------------------------------------------------------- 1 | # ТЗ мобильного приложения для трекинга привычек 2 | 3 | # Ссылки 4 | 5 | [Дизайн Figma](https://www.figma.com/design/owAO4CAPTJdpM1BZU5JHv7/Tracker) 6 | 7 | # Назначение и цели приложения 8 | 9 | Приложение помогает пользователям формировать полезные привычки и контролировать их выполнение. 10 | 11 | Цели приложения: 12 | 13 | - Контроль привычек по дням недели; 14 | - Просмотр прогресса по привычкам; 15 | 16 | # Краткое описание приложения 17 | 18 | - Приложение состоит из карточек-трекеров, которые создает пользователь. Он может указать название, категорию и задать расписание. Также можно выбрать эмодзи и цвет, чтобы отличать карточки друг от друга. 19 | - Карточки отсортированы по категориям. Пользователь может искать их с помощью поиска и фильтровать. 20 | - С помощью календаря пользователь может посмотреть какие привычки у него запланированы на конкретный день. 21 | - В приложении есть статистика, которая отражает успешные показатели пользователя, его прогресс и средние значения. 22 | 23 | # Функциональные требования 24 | 25 | ## Онбординг 26 | 27 | При первом входе в приложение пользователь попадает на экран онбординга. 28 | 29 | **Экран онбординга содержит:** 30 | 31 | 1. Заставку; 32 | 2. Заголовок и вторичный текст; 33 | 3. Page controls; 34 | 4. Кнопку «Вот это технологии». 35 | 36 | **Алгоритмы и доступные действия:** 37 | 38 | 1. С помощью свайпа вправо и влево пользователь может переключаться между страницами. При переключении страницы page controls меняет состояние; 39 | 2. При нажатии на кнопку «Вот это технологии» пользователь переходит на главный экран. 40 | 41 | ## Создание карточки привычки 42 | 43 | На главном экране пользователь может создать трекер для привычки или нерегулярного события. Привычка – событие, которое повторяется с определенной периодичностью. Нерегулярное событие не привязано к конкретным дням. 44 | 45 | **Экран создания трекера для привычки содержит:** 46 | 47 | 1. Заголовок экрана; 48 | 2. Поле для ввода названия трекера; 49 | 3. Раздел категории; 50 | 4. Раздел настройки расписания; 51 | 5. Раздел с эмоджи; 52 | 6. Раздел с выбором цвета трекера; 53 | 7. Кнопка «Отменить»; 54 | 8. Кнопка «Создать». 55 | 56 | **Экран создания трекера для нерегулярного события содержит:** 57 | 58 | 1. Заголовок экрана; 59 | 2. Поле для ввода названия трекера; 60 | 3. Раздел категории; 61 | 4. Раздел с эмоджи; 62 | 5. Раздел с выбором цвета трекера; 63 | 6. Кнопка «Отменить»; 64 | 7. Кнопка «Создать». 65 | 66 | **Алгоритмы и доступные действия:** 67 | 68 | 1. Пользователь может создать трекер для привычки или нерегулярного события. Алгоритм создания трекеров аналогичен, но в событии отсутствует раздел расписания. 69 | 2. Пользователь может ввести название трекера; 70 | 1. После ввода одного символа появляется иконка крестика. При нажатии на иконку пользователь может удалить введенный текст; 71 | 2. Максимальное количество символов – 38; 72 | 3. Если пользователь превысил допустимое количество, появляется текст с ошибкой; 73 | 3. При нажатии на раздел «Категория» открывается экран выбора категории; 74 | 1. Если пользователь ранее не добавлял категории, то стоит заглушка; 75 | 2. Синей галочкой отмечена последняя выбранная категория; 76 | 3. При нажатии на «Добавить категорию» пользователь может добавить новую. 77 | 1. Откроется экран с полем для ввода названия. Кнопка «Готово» неактивна; 78 | 2. Если введен хотя бы 1 символ, то кнопка «Готово» становится активной; 79 | 3. При нажатии на кнопку «Готово» закрывается экран создания категории и пользователь возвращается на экран выбора категории. Созданная категория появляется в списке категорий. Автоматического выбора, установки галочки не происходит. 80 | 4. При нажатии на категорию, она отмечается синей галочкой и пользователь возвращается на экран создания привычки. Выбранная категория отображается на экране создания привычки вторичным текстом под заголовком «Категория»; 81 | 4. В режиме создания привычки есть раздел «Расписание». При нажатии на раздел открывается экран с выбором дней недели. Пользователь может переключить свитчер, чтобы выбрать день повторения привычки; 82 | 1. При нажатии на «Готово» пользователь возвращается на экран создания привычки. Выбранные дни отображаются на экране создания привычки вторичным текстом под заголовком «Расписание»; 83 | 1. Если пользователь выбрал все дни, то отображается текст «Каждый день»; 84 | 5. Пользователь может выбрать эмодзи. Под выбранным эмодзи появляется подложка; 85 | 6. Пользователь может выбрать цвет трекера. На выбранном цвете появляется обводка; 86 | 7. При нажатии кнопки «Отменить» пользователь может прекратить создание привычки; 87 | 8. Кнопка «Создать» неактивна пока не заполнены все разделы. При нажатии на кнопку открывается главный экран. Созданная привычка отображается в соответствующей категории; 88 | 89 | ## Просмотр главного экрана 90 | 91 | На главном экране пользователь может просмотреть все созданные трекеры на выбранную дату, отредактировать их и посмотреть статистику. 92 | 93 | **Главный экран содержит:** 94 | 95 | 1. Кнопку «+» для добавления привычки; 96 | 2. Заголовок «Трекеры»; 97 | 3. Текущая дата; 98 | 4. Поле для поиска трекеров; 99 | 5. Карточки трекеров по категориям. Карточки содержат: 100 | 1. Емодзи; 101 | 2. Название трекера; 102 | 3. Количество затреканных дней; 103 | 4. Кнопку для отметки выполненной привычки; 104 | 6. Кнопка «Фильтр»; 105 | 7. Таб-бар. 106 | 107 | **Алгоритмы и доступные действия:** 108 | 109 | 1. При нажатии на «+» всплывает шторка с возможностью создать привычку или нерегулярное событие; 110 | 2. При нажатии на дату открывается календарь. Пользователь может переключаться между месяцами. При нажатии на число приложение показывает соответствующие дате трекеры; 111 | 3. Пользователь может искать трекеры по названию в окне поиска; 112 | 1. Если ничего не найдено, то пользователь видит заглушку; 113 | 4. При нажатии на «Фильтры» всплывает шторка со списком фильтром; 114 | 1. Кнопка фильтрации отсутствует, если на выбранный день нет трекеров; 115 | 2. При выборе «Все трекеры» пользователь видит все трекеры на выбранный день; 116 | 3. При выборе «Трекеры на сегодня» ставится текущая дата и пользователь видит все трекеры на этот день; 117 | 4. При выборе «Завершенные» пользователь видит привычки, которые были выполнены пользователем в выбранный день; 118 | 5. При выборе «Не завершенные» пользователь видит невыполненные трекеры в выбранный день; 119 | 6. Текущий фильтр отмечен синей галочкой; 120 | 7. При нажатии на фильтр шторка скрывается, на экране отображены соответствующие трекеры; 121 | 1. Если ничего не найдено, то пользователь видит заглушку; 122 | 5. При скролле вниз и вверх пользователь может просматривать ленту; 123 | 1. Если изображение карточки не успели загрузиться, то отображается системный лоадер; 124 | 6. При нажатии на карточку фон под ней размывается и всплывает модальное окно; 125 | 1. Пользователь может закрепить карточку. Карточка попадет в категорию «Закрепленные» в вверху списка; 126 | 1. При повторном нажатии пользователь может открепить карточку; 127 | 2. Если закрепленных карточек нет, то категория «Закрепленные» отсутствует; 128 | 2. Пользователь может отредактировать карточку. Всплывает модальное окно с функциональностью аналогичной созданию карточки; 129 | 3. При нажатии на «Удалить» всплывает action sheet. 130 | 1. Пользователь может подтвердить удаление карточки. Все данные о ней должны быть удалены; 131 | 2. Пользователь может отменить действие и вернуться на главный экран; 132 | 7. С помощью таб бара пользователь может переключаться между разделами «Трекеры» и «Статистика». 133 | 134 | ## Редактирование и удаление категории 135 | 136 | Во время создания трекера пользователь может отредактировать категории в списке или удалить ненужные. 137 | 138 | **Алгоритмы и доступные действия:** 139 | 140 | 1. При долгом нажатии на категорию из списка фон под ней размывается и появляется модальное окно; 141 | 1. При нажатии на «Редактировать» всплывает модальное окно. Пользователь может отредактировать название категории. При нажатии на кнопку «Готово» пользователь возвращается в список категорий; 142 | 2. При нажатии «Удалить» всплывает action sheet. 143 | 1. Пользователь может подтвердить удаление категории. Все данные о ней должны быть удалены; 144 | 2. Пользователь может отменить действие; 145 | 3. После подтверждения или отмены пользователь возвращается в список категорий; 146 | 147 | ## Просмотр статистики 148 | 149 | Во вкладке статистики пользователь может посмотреть успешные показатели, свой прогресс и средние значения. 150 | 151 | **Экран статистики содержит:** 152 | 153 | 1. Заголовок «Статистика»; 154 | 2. Список со статистическими показателями. Каждый показатель содержит: 155 | 1. Заголовок-цифру; 156 | 2. Вторичный текст с названием показателя; 157 | 3. Таб-бар 158 | 159 | **Алгоритмы и доступные действия:** 160 | 161 | 1. Если данных нет ни под одному показателю, то пользователь видит заглушку; 162 | 2. Если есть данные хотя бы под одному показателю, то статистика отображается. Показатели без данных отображаются с нулевым значением; 163 | 3. Пользователь может просмотреть статистику по следующим показателям: 164 | 1. «Лучший период» считает максимальное количество дней без перерыва по всем трекерам; 165 | 2. «Идеальные дни» считает дни, когда были выполнены все запланированные привычки; 166 | 3. «Трекеров завершено» считает общее количество выполненных привычек за все время; 167 | 4. «Среднее значение» считает среднее количество привычек, выполненных за 1 день. 168 | 169 | ## Темная тема 170 | 171 | В приложении есть темная тема, которая меняется в зависимости от настроек системы устройства. 172 | 173 | # Нефункциональные требования 174 | 175 | 1. Приложение должно поддерживать iPhone X и выше и адаптировано под iPhone SE, минимальная поддерживаемая версия операционной системы - iOS 13.4; 176 | 2. В приложении используется стандартный шрифт iOS – SF Pro. 177 | 3. Для хранения данных о привычках используется Core Data. 178 | --------------------------------------------------------------------------------