-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathREADME.md
201 lines (149 loc) · 17.4 KB
/
README.md
1
2
3
4
5
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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
# Tracker
# Назначение и цели приложения
Приложение помогает пользователям формировать полезные привычки и контролировать их выполнение.
Цели приложения:
- Контроль привычек по дням недели;
- Просмотр прогресса по привычкам;
# Стек
- Архитектура MVP и MVVM
- Вёрстка кодом с Auto Layout. Дизайн в Figma
- UICollectionView, UITabBarController, UINavigationController
- Интеграция YandexMobileMetrica для сбора аналитики
- Хранение данных в CoreData
- Зависимости добавлены через CocoaPods
- Unit-тесты
# Краткое описание приложения
- Приложение состоит из карточек-трекеров, которые создает пользователь. Он может указать название, категорию и задать расписание. Также можно выбрать эмодзи и цвет, чтобы отличать карточки друг от друга.
- Карточки отсортированы по категориям. Пользователь может искать их с помощью поиска и фильтровать.
- С помощью календаря пользователь может посмотреть какие привычки у него запланированы на конкретный день.
- В приложении есть статистика, которая отражает успешные показатели пользователя, его прогресс и средние значения.
# Функциональные требования
## Онбординг
При первом входе в приложение пользователь попадает на экран онбординга.
<img width="200" src="https://raw.githubusercontent.com/Kosmonur/Tracker/main/Tracker/Assets.xcassets/Screenshots/onboarding.png">
**Экран онбординга содержит:**
1. Заставку;
2. Заголовок и вторичный текст;
3. Page controls;
4. Кнопку «Вот это технологии».
**Алгоритмы и доступные действия:**
1. С помощью свайпа вправо и влево пользователь может переключаться между страницами. При переключении страницы page controls меняет состояние;
2. При нажатии на кнопку «Вот это технологии» пользователь переходит на главный экран.
## Создание карточки привычки
На главном экране пользователь может создать трекер для привычки или нерегулярного события. Привычка – событие, которое повторяется с определенной периодичностью. Нерегулярное событие не привязано к конкретным дням.
**Экран создания трекера для привычки содержит:**
1. Заголовок экрана;
2. Поле для ввода названия трекера;
3. Раздел категории;
4. Раздел настройки расписания;
5. Раздел с эмоджи;
6. Раздел с выбором цвета трекера;
7. Кнопка «Отменить»;
8. Кнопка «Создать».
<img width="200" src="https://github.com/Kosmonur/Tracker/blob/main/Tracker/Assets.xcassets/Screenshots/habbit.png">
**Экран создания трекера для нерегулярного события содержит:**
1. Заголовок экрана;
2. Поле для ввода названия трекера;
3. Раздел категории;
4. Раздел с эмоджи;
5. Раздел с выбором цвета трекера;
6. Кнопка «Отменить»;
7. Кнопка «Создать».
<img width="200" src="https://github.com/Kosmonur/Tracker/blob/main/Tracker/Assets.xcassets/Screenshots/irregular.png">
**Алгоритмы и доступные действия:**
1. Пользователь может создать трекер для привычки или нерегулярного события. Алгоритм создания трекеров аналогичен, но в событии отсутствует раздел расписания.
2. Пользователь может ввести название трекера;
1. После ввода одного символа появляется иконка крестика. При нажатии на иконку пользователь может удалить введенный текст;
2. Максимальное количество символов – 38;
3. Если пользователь превысил допустимое количество, появляется текст с ошибкой;
3. При нажатии на раздел «Категория» открывается экран выбора категории;
1. Если пользователь ранее не добавлял категории, то стоит заглушка;
2. Синей галочкой отмечена последняя выбранная категория;
3. При нажатии на «Добавить категорию» пользователь может добавить новую.
1. Откроется экран с полем для ввода названия. Кнопка «Готово» неактивна;
2. Если введен хотя бы 1 символ, то кнопка «Готово» становится активной;
3. При нажатии на кнопку «Готово» закрывается экран создания категории и пользователь возвращается на экран выбора категории. Созданная категория появляется в списке категорий. Автоматического выбора, установки галочки не происходит.
4. При нажатии на категорию, она отмечается синей галочкой и пользователь возвращается на экран создания привычки. Выбранная категория отображается на экране создания привычки вторичным текстом под заголовком «Категория»;
4. В режиме создания привычки есть раздел «Расписание». При нажатии на раздел открывается экран с выбором дней недели. Пользователь может переключить свитчер, чтобы выбрать день повторения привычки;
1. При нажатии на «Готово» пользователь возвращается на экран создания привычки. Выбранные дни отображаются на экране создания привычки вторичным текстом под заголовком «Расписание»;
1. Если пользователь выбрал все дни, то отображается текст «Каждый день»;
5. Пользователь может выбрать эмодзи. Под выбранным эмодзи появляется подложка;
6. Пользователь может выбрать цвет трекера. На выбранном цвете появляется обводка;
7. При нажатии кнопки «Отменить» пользователь может прекратить создание привычки;
8. Кнопка «Создать» неактивна пока не заполнены все разделы. При нажатии на кнопку открывается главный экран. Созданная привычка отображается в соответствующей категории;
## Просмотр главного экрана
На главном экране пользователь может просмотреть все созданные трекеры на выбранную дату, отредактировать их и посмотреть статистику.
<img width="200" src="https://github.com/Kosmonur/Tracker/blob/main/Tracker/Assets.xcassets/Screenshots/mainscreen.png">
**Главный экран содержит:**
1. Кнопку «+» для добавления привычки;
2. Заголовок «Трекеры»;
3. Текущая дата;
4. Поле для поиска трекеров;
5. Карточки трекеров по категориям. Карточки содержат:
1. Емодзи;
2. Название трекера;
3. Количество затреканных дней;
4. Кнопку для отметки выполненной привычки;
6. Кнопка «Фильтр»;
7. Таб-бар.
**Алгоритмы и доступные действия:**
1. При нажатии на «+» всплывает шторка с возможностью создать привычку или нерегулярное событие;
2. При нажатии на дату открывается календарь. Пользователь может переключаться между месяцами. При нажатии на число приложение показывает соответствующие дате трекеры;
3. Пользователь может искать трекеры по названию в окне поиска;
1. Если ничего не найдено, то пользователь видит заглушку;
4. При нажатии на «Фильтры» всплывает шторка со списком фильтром;
<img width="200" src="https://github.com/Kosmonur/Tracker/blob/main/Tracker/Assets.xcassets/Screenshots/filter.png">
1. Кнопка фильтрации отсутствует, если на выбранный день нет трекеров;
2. При выборе «Все трекеры» пользователь видит все трекеры на выбранный день;
3. При выборе «Трекеры на сегодня» ставится текущая дата и пользователь видит все трекеры на этот день;
4. При выборе «Завершенные» пользователь видит привычки, которые были выполнены пользователем в выбранный день;
5. При выборе «Не завершенные» пользователь видит невыполненные трекеры в выбранный день;
6. Текущий фильтр отмечен синей галочкой;
7. При нажатии на фильтр шторка скрывается, на экране отображены соответствующие трекеры;
1. Если ничего не найдено, то пользователь видит заглушку;
6. При скролле вниз и вверх пользователь может просматривать ленту;
1. Если изображение карточки не успели загрузиться, то отображается системный лоадер;
7. При нажатии на карточку фон под ней размывается и всплывает модальное окно;
1. Пользователь может закрепить карточку. Карточка попадет в категорию «Закрепленные» в вверху списка;
1. При повторном нажатии пользователь может открепить карточку;
2. Если закрепленных карточек нет, то категория «Закрепленные» отсутствует;
2. Пользователь может отредактировать карточку. Всплывает модальное окно с функциональностью аналогичной созданию карточки;
3. При нажатии на «Удалить» всплывает action sheet.
1. Пользователь может подтвердить удаление карточки. Все данные о ней должны быть удалены;
2. Пользователь может отменить действие и вернуться на главный экран;
8. С помощью таб бара пользователь может переключаться между разделами «Трекеры» и «Статистика».
## Редактирование и удаление категории
Во время создания трекера пользователь может отредактировать категории в списке или удалить ненужные.
**Алгоритмы и доступные действия:**
1. При долгом нажатии на категорию из списка фон под ней размывается и появляется модальное окно;
1. При нажатии на «Редактировать» всплывает модальное окно. Пользователь может отредактировать название категории. При нажатии на кнопку «Готово» пользователь возвращается в список категорий;
2. При нажатии «Удалить» всплывает action sheet.
1. Пользователь может подтвердить удаление категории. Все данные о ней должны быть удалены;
2. Пользователь может отменить действие;
3. После подтверждения или отмены пользователь возвращается в список категорий;
## Просмотр статистики
Во вкладке статистики пользователь может посмотреть успешные показатели, свой прогресс и средние значения.
<img width="200" src="https://github.com/Kosmonur/Tracker/blob/main/Tracker/Assets.xcassets/Screenshots/statistic.png">
**Экран статистики содержит:**
1. Заголовок «Статистика»;
2. Список со статистическими показателями. Каждый показатель содержит:
1. Заголовок-цифру;
2. Вторичный текст с названием показателя;
3. Таб-бар
**Алгоритмы и доступные действия:**
1. Если данных нет ни под одному показателю, то пользователь видит заглушку;
2. Если есть данные хотя бы под одному показателю, то статистика отображается. Показатели без данных отображаются с нулевым значением;
3. Пользователь может просмотреть статистику по следующим показателям:
1. «Лучший период» считает максимальное количество дней без перерыва по всем трекерам;
2. «Идеальные дни» считает дни, когда были выполнены все запланированные привычки;
3. «Трекеров завершено» считает общее количество выполненных привычек за все время;
4. «Среднее значение» считает среднее количество привычек, выполненных за 1 день.
## Темная тема
В приложении есть темная тема, которая меняется в зависимости от настроек системы устройства.
<img width="200" src="https://github.com/Kosmonur/Tracker/blob/main/Tracker/Assets.xcassets/Screenshots/dark.png">
# Нефункциональные требования
1. Приложение должно поддерживать iPhone X и выше и адаптировано под iPhone SE, минимальная поддерживаемая версия операционной системы - iOS 13.4;
2. В приложении используется стандартный шрифт iOS – SF Pro.
3. Для хранения данных о привычках используется Core Data.
# Видео с демонстрацией работы приложения
- [Видео](https://disk.yandex.ru/i/KA25roi6o_j4gQ)