SShliakhin / YP-Tracker

Приложение помогает пользователям формировать полезные привычки и контролировать их выполнение.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Tracker

Приложение помогает пользователям формировать полезные привычки и контролировать их выполнение. Цели приложения:

  • Контроль привычек по дням недели;
  • Просмотр прогресса по привычкам;

Table of Contents

  1. Description
  2. Getting started
  3. Usage
  4. Arhitecture
  5. Structure
  6. Dependencies
  7. Workflow
  8. Task board
  9. Design

Description

  • Приложение состоит из карточек-трекеров, которые создает пользователь. Он может указать название, категорию и задать расписание. Также можно выбрать эмодзи и цвет, чтобы отличать карточки друг от друга.
  • Карточки отсортированы по категориям. Пользователь может искать их с помощью поиска и фильтровать.
  • С помощью календаря пользователь может посмотреть какие привычки у него запланированы на конкретный день.
  • В приложении есть статистика, которая отражает успешные показатели пользователя, его прогресс и средние значения.

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

Getting started

  1. Убедитесь что на компьютере установлен Xcode версии 13 или выше.
  2. Загрузите файлы Tracker проекта из репозитория.
  3. Откройте файл проекта в Xcode.
  4. Запустите активную схему.

Usage

[In progress]

Architecture

  • Clean Swift & MVVM (SelectCategoryMVVM & Statistics modules)
  • Navigation: Coordinator
  • DI: на базе фабрик
  • Persistence storage: Core Data & UserDefaults
  • Layout: Anchors, CompositionalLayout
  • Animation: ScrollView animation (Onboarding module)
  • Snapshot Tests
  • Fonts: YSDisplay

Structure

  • "App": App и Scene delegates, глобальные объекты приложения: DI, навигация и сервисы
  • "Models": Модели объектов
  • "Modules": Содержит модули приложения (UI + код)
  • "Library": Протоколы, расширения и утилиты
  • "Resources": Ресурсы приложения: картинки, шрифты, локализация и другие типы ресурсов. А также файлы и группы файлов:
    • Localization - строковые файлы и локализация info.plist
    • Theme+.swift - расширения, которые содержат статические методы по поддержке работы с ресурсами приложения, форматтеры, константы, ключи локализации и некоторые дополнительные сервисные методы.
    • LaunchScreen.storyboard
    • Info.plist

Dependencies

  • SnapshotTesting - написание Snapshot тестов, добавляется к таргету для тестов
  • YandexMobileMetrica - набор библиотек для сбора статистики использования приложения

Workflow

  • Задачи по спринту выполняются в отдельной ветке sprint-X, где X - номер спринта
  • По окончанию работ создается PR на вливание в ветку main и отдается на проверку
  • После успешной проверки и получении апрува изменения вливаются в main через merge request (с опцией squash) и ветка для разработки удаляется

Branches

  • main - стабильные версии приложения
  • sprint-X - ветки для разработки

Requirements for commit

  • Названия коммитов должны быть согласно гайдлайну
  • Тип коммита должен быть только в нижнием регистре (feat, fix, refactor, docs и т.д.)
  • Должен использоваться present tense ("add feature" not "added feature")
  • Должен использоваться imperative mood ("move cursor to..." not "moves cursor to...")

Examples

  • feat: - это реализованная новая функциональность из технического задания (добавил поддержку зумирования, добавил footer, добавил карточку продукта). Примеры:
feat: add basic page layout
feat: implement search box
feat: implement request to youtube API
feat: implement swipe for horizontal list
feat: add additional navigation button
  • fix: - исправил ошибку в ранее реализованной функциональности. Примеры:
fix: implement correct loading data from youtube
fix: change layout for video items to fix bugs
fix: relayout header for firefox
fix: adjust social links for mobile
  • refactor: - новой функциональности не добавлял / поведения не менял. Файлы в другие места положил, удалил, добавил. Изменил форматирование кода (white-space, formatting, missing semi-colons, etc). Улучшил алгоритм, без изменения функциональности. Примеры:
refactor: change structure of the project
refactor: rename vars for better readability
refactor: apply prettier
  • docs: - используется при работе с документацией/readme проекта. Примеры:
docs: update readme with additional information
docs: update description of run() method

Источник

  • style: clean up - корректирую/улучшаю стиль и читаемость кода, удаляю мертвый код

Tools

В проекте используются:

  • SwiftLint - для обеспечения соблюдения стиля и соглашений Swift
brew update
brew install swiftlint
  • Live Preview с помощью SwifUI
#if canImport(SwiftUI) && DEBUG
import SwiftUI
struct ViewProvider: PreviewProvider {
	static var previews: some View {
		let viewController = ViewController()
		let labelView = viewController.makeWelcomeLabel() as UIView
		let labelView2 = viewController.makeWelcomeLabel() as UIView
		Group {
			viewController.preview()
			VStack(spacing: 0) {
				labelView.preview().frame(height: 100).padding(.bottom, 20)
				labelView2.preview().frame(height: 100).padding(.bottom, 20)
			}
		}
	}
}
#endif

Task board

  • Доска задач не используется
  • Задачи описываются в issue и связываются с ветками для разработки

Design

About

Приложение помогает пользователям формировать полезные привычки и контролировать их выполнение.


Languages

Language:Swift 100.0%